From ed51e15cfab3432b655eea6d0f1e29866d2d7de9 Mon Sep 17 00:00:00 2001 From: Anders Broman Date: Wed, 10 Apr 2019 15:15:19 +0200 Subject: LCS-AP: Update to V15.2.0 (2019-03) Change-Id: I39e9b0871a7d5ce51872bcd44aa3c357ced5d543 Reviewed-on: https://code.wireshark.org/review/32811 Petri-Dish: Anders Broman Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman --- .../asn1/lcsap/LCS-AP-CommonDataTypes.asn | 13 +- epan/dissectors/asn1/lcsap/LCS-AP-Constants.asn | 81 ++-- epan/dissectors/asn1/lcsap/LCS-AP-Containers.asn | 40 +- epan/dissectors/asn1/lcsap/LCS-AP-IEs.asn | 288 ++++++++----- epan/dissectors/asn1/lcsap/LCS-AP-PDU-Contents.asn | 158 ++++--- .../asn1/lcsap/LCS-AP-PDU-Descriptions.asn | 98 +++-- epan/dissectors/asn1/lcsap/lcsap.cnf | 23 +- epan/dissectors/packet-lcsap.c | 458 +++++++++++++++++++-- 8 files changed, 863 insertions(+), 296 deletions(-) diff --git a/epan/dissectors/asn1/lcsap/LCS-AP-CommonDataTypes.asn b/epan/dissectors/asn1/lcsap/LCS-AP-CommonDataTypes.asn index 8fc9cd5dac..1fbcb32d0f 100644 --- a/epan/dissectors/asn1/lcsap/LCS-AP-CommonDataTypes.asn +++ b/epan/dissectors/asn1/lcsap/LCS-AP-CommonDataTypes.asn @@ -1,4 +1,4 @@ --- ETSI TS 129 171 V13.2.0 (2016-03) +-- ETSI TS 129 171 V15.2.0 (2019-03) -- 7.5.6 Common Definitions -- ************************************************************** @@ -6,7 +6,7 @@ -- 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)} @@ -15,17 +15,18 @@ DEFINITIONS AUTOMATIC TAGS ::= BEGIN -Criticality ::= ENUMERATED { reject, ignore, notify } +Criticality ::= ENUMERATED { reject, ignore, notify } -Presence ::= ENUMERATED { optional, conditional, mandatory } +Presence ::= ENUMERATED { optional, conditional, mandatory } -ProcedureCode ::= INTEGER (0..255) +ProcedureCode ::= INTEGER (0..255) ProtocolExtensionID ::= INTEGER (0..65535) -ProtocolIE-ID ::= 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 index 84416feb21..59de6bbbad 100644 --- a/epan/dissectors/asn1/lcsap/LCS-AP-Constants.asn +++ b/epan/dissectors/asn1/lcsap/LCS-AP-Constants.asn @@ -1,4 +1,4 @@ --- ETSI TS 129 171 V13.2.0 (2016-03) +-- ETSI TS 129 171 V15.2.0 (2019-03) -- ************************************************************** -- -- Constant definitions @@ -20,11 +20,12 @@ BEGIN -- ************************************************************** -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-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 INTEGER ::= 5 -- ************************************************************** @@ -35,33 +36,36 @@ id-Reset INTEGER ::= 4 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-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 @@ -78,13 +82,14 @@ id-Additional-PositioningDataSet INTEGER ::= 26 -- ************************************************************** -max-No-Of-Points INTEGER ::= 15 -max-Set INTEGER ::= 9 -max-GNSS-Set INTEGER ::= 9 -max-Add-Pos-Set INTEGER ::= 8 +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 +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 index af9aed6f2f..e9b7e61df0 100644 --- a/epan/dissectors/asn1/lcsap/LCS-AP-Containers.asn +++ b/epan/dissectors/asn1/lcsap/LCS-AP-Containers.asn @@ -1,4 +1,4 @@ --- ETSI TS 129 171 V13.2.0 (2016-03) +-- ETSI TS 129 171 V15.2.0 (2019-03) -- -- 7.5.8 Container Definitions -- ************************************************************** @@ -39,16 +39,16 @@ FROM LCS-AP-Constants; -- ************************************************************** LCS-AP-PROTOCOL-IES ::= CLASS { - &id ProtocolIE-ID UNIQUE, - &criticality Criticality DEFAULT ignore, + &id ProtocolIE-ID UNIQUE, + &criticality Criticality DEFAULT ignore, &Value, - &presence Presence + &presence Presence } WITH SYNTAX { - ID &id - CRITICALITY &criticality - TYPE &Value - PRESENCE &presence + ID &id + CRITICALITY &criticality + TYPE &Value + PRESENCE &presence } -- ************************************************************** @@ -58,16 +58,16 @@ WITH SYNTAX { -- ************************************************************** LCS-AP-PROTOCOL-EXTENSION ::= CLASS { - &id ProtocolExtensionID UNIQUE, - &criticality Criticality DEFAULT ignore, + &id ProtocolExtensionID UNIQUE, + &criticality Criticality DEFAULT ignore, &Extension, - &presence Presence + &presence Presence } WITH SYNTAX { - ID &id - CRITICALITY &criticality - EXTENSION &Extension - PRESENCE &presence + ID &id + CRITICALITY &criticality + EXTENSION &Extension + PRESENCE &presence } -- ************************************************************** @@ -81,9 +81,9 @@ ProtocolIE-Container {LCS-AP-PROTOCOL-IES : IEsSetParam} ::= 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}) + id LCS-AP-PROTOCOL-IES.&id ({IEsSetParam}), + criticality LCS-AP-PROTOCOL-IES.&criticality ({IEsSetParam}{@id}), + value LCS-AP-PROTOCOL-IES.&Value ({IEsSetParam}{@id}) } -- ************************************************************** @@ -107,8 +107,8 @@ ProtocolExtensionContainer {LCS-AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= ProtocolExtensionField {{ExtensionSetParam}} ProtocolExtensionField {LCS-AP-PROTOCOL-EXTENSION : ExtensionSetParam} ::= SEQUENCE { - id LCS-AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}), - criticality LCS-AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}), + id LCS-AP-PROTOCOL-EXTENSION.&id ({ExtensionSetParam}), + criticality LCS-AP-PROTOCOL-EXTENSION.&criticality ({ExtensionSetParam}{@id}), extensionValue LCS-AP-PROTOCOL-EXTENSION.&Extension ({ExtensionSetParam}{@id}) } diff --git a/epan/dissectors/asn1/lcsap/LCS-AP-IEs.asn b/epan/dissectors/asn1/lcsap/LCS-AP-IEs.asn index 91752a4eac..8a621513b9 100644 --- a/epan/dissectors/asn1/lcsap/LCS-AP-IEs.asn +++ b/epan/dissectors/asn1/lcsap/LCS-AP-IEs.asn @@ -1,4 +1,4 @@ --- ETSI TS 129 171 V13.2.0 (2016-03) +-- ETSI TS 129 171 V15.2.0 (2019-03) -- -- 7.5.5 Information element definitions -- ************************************************************** @@ -7,7 +7,6 @@ -- -- ************************************************************** - 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)} @@ -21,7 +20,8 @@ IMPORTS max-No-Of-Points, max-Set, max-GNSS-Set, - max-Add-Pos-Set + max-Add-Pos-Set, + max-Cipher-Set FROM LCS-AP-Constants Criticality, @@ -38,7 +38,7 @@ FROM LCS-AP-Containers; -- A -APDU ::= OCTET STRING +APDU ::= OCTET STRING Accuracy-Fulfillment-Indicator ::= ENUMERATED { requested-accuracy-fulfilled, @@ -57,7 +57,7 @@ Altitude ::= INTEGER (0..65535) Altitude-And-Direction ::= SEQUENCE { direction-Of-Altitude Direction-Of-Altitude, - altitude Altitude, + altitude Altitude, ... } @@ -73,20 +73,49 @@ Bearing ::= INTEGER (0..359) -- C -CellIdentity ::= BIT STRING (SIZE (28)) +C0 ::= BIT STRING (SIZE (1..128)) + +CellIdentity ::= BIT STRING (SIZE (28)) + +Cell-Portion-ID ::= INTEGER (0..255,..., 256..4095) -Cell-Portion-ID ::= INTEGER (0..255,...) +Ciphering-Data ::= SEQUENCE(SIZE(1..max-Cipher-Set)) OF Ciphering-Data-Set -Civic-Address ::= OCTET STRING +Ciphering-Data-Ack ::= SEQUENCE(SIZE(1..max-Cipher-Set)) OF Ciphering-Set-ID -Confidence ::= INTEGER (0..100) +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, + ... + } -Correlation-ID ::= OCTET STRING (SIZE (4)) +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)) -- D -DegreesLatitude ::= INTEGER (0..8388607) -- 23 bit field +DegreesLatitude ::= INTEGER (0..8388607) -- 23 bit field DegreesLongitude ::= INTEGER (-8388608..8388607) -- 24 bit field @@ -97,22 +126,27 @@ Direction-Of-Altitude ::= ENUMERATED { -- E -E-CGI ::= SEQUENCE { - pLMNidentity PLMN-ID, - cell-ID CellIdentity, - iE-Extensions ProtocolExtensionContainer { { E-CGI-ExtIEs} } OPTIONAL, +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, + 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 ::= { @@ -122,8 +156,8 @@ 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, + altitude-And-Direction Altitude-And-Direction, + iE-Extensions ProtocolExtensionContainer { { Ellipsoid-Point-With-Altitude-ExtIEs} } OPTIONAL, ...} Ellipsoid-Point-With-Altitude-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { @@ -133,11 +167,11 @@ 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, + 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 ::= { @@ -145,14 +179,14 @@ Ellipsoid-Point-With-Altitude-And-Uncertainty-Ellipsoid-ExtIEs LCS-AP-PROTOCOL-E } -Ellipsoid-Arc ::= SEQUENCE { +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, + inner-Radius Inner-Radius, + uncertainty-Radius Uncertainty-Code, + offset-Angle Angle, + included-Angle Angle, + confidence Confidence, + iE-Extensions ProtocolExtensionContainer { { Ellipsoid-Arc-ExtIEs} } OPTIONAL, ... } @@ -161,10 +195,12 @@ Ellipsoid-Arc-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { } -ENB-ID ::= CHOICE { - macro-eNB-ID Macro-eNB-ID, - home-eNB-ID Home-eNB-ID, - ... +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 } @@ -175,22 +211,22 @@ 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, +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, + ellipsoid-Arc Ellipsoid-Arc, ... } Geographical-Coordinates ::= SEQUENCE { - latitudeSign LatitudeSign, - degreesLatitude DegreesLatitude, - degreesLongitude DegreesLongitude, - iE-Extensions ProtocolExtensionContainer { {Geographical-Coordinates-ExtIEs} } OPTIONAL, + latitudeSign LatitudeSign, + degreesLatitude DegreesLatitude, + degreesLongitude DegreesLongitude, + iE-Extensions ProtocolExtensionContainer { {Geographical-Coordinates-ExtIEs} } OPTIONAL, ... } @@ -200,8 +236,8 @@ Geographical-Coordinates-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { Global-eNB-ID ::= SEQUENCE { - pLMN-ID PLMN-ID, - eNB-ID ENB-ID + pLMN-ID PLMN-ID, + eNB-ID ENB-ID } @@ -219,14 +255,14 @@ Horizontal-Accuracy ::= INTEGER (0..127) Horizontal-Speed-And-Bearing ::= SEQUENCE { - bearing INTEGER (0..359), - horizontal-Speed INTEGER (0..2047) + 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-Speed-And-Bearing Horizontal-Speed-And-Bearing, + iE-Extensions ProtocolExtensionContainer { { Horizontal-Velocity-ExtIEs} } OPTIONAL, ... } @@ -234,10 +270,10 @@ Horizontal-Velocity-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { ... } -Horizontal-With-Vertical-Velocity ::= SEQUENCE { +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, + vertical-Velocity Vertical-Velocity, + iE-Extensions ProtocolExtensionContainer { { Horizontal-With-Vertical-Velocity-ExtIEs} } OPTIONAL, ... } @@ -245,10 +281,10 @@ 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 ::= SEQUENCE { + horizontal-Speed-And-Bearing Horizontal-Speed-And-Bearing, + uncertainty-Speed INTEGER (0..255), + iE-Extensions ProtocolExtensionContainer { { Horizontal-Velocity-With-Uncertainty-ExtIEs} } OPTIONAL, ... } @@ -258,10 +294,10 @@ 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, + 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, + vertical-Uncertainty-Speed INTEGER (0..255), + iE-Extensions ProtocolExtensionContainer { { Horizontal-With-Vertical-Velocity-And-Uncertainty-ExtIEs} } OPTIONAL, ... } @@ -272,9 +308,9 @@ Horizontal-With-Vertical-Velocity-And-Uncertainty-ExtIEs LCS-AP-PROTOCOL-EXTENSI -- I -IMSI ::= OCTET STRING (SIZE (3..8)) +IMSI ::= OCTET STRING (SIZE (3..8)) -IMEI ::= OCTET STRING (SIZE (8)) +IMEI ::= OCTET STRING (SIZE (8)) Include-Velocity ::= ENUMERATED { @@ -284,34 +320,35 @@ Include-Velocity ::= ENUMERATED { } -Inner-Radius ::= INTEGER (0..65535) -- 16 bit field +Inner-Radius ::= INTEGER (0..65535) -- 16 bit field -- J -- K -- L -LatitudeSign ::= ENUMERATED { +LatitudeSign ::= ENUMERATED { north, south } -Location-Type ::= ENUMERATED { +Location-Type ::= ENUMERATED { geographic-Information, assistance-Information, - ... + ..., + last-known-location } -LCS-Cause ::= CHOICE { +LCS-Cause ::= CHOICE { radio-Network-Layer Radio-Network-Layer-Cause, -transport-Layer Transport-Layer-Cause, -protocol Protocol-Cause, -misc Misc-Cause +transport-Layer Transport-Layer-Cause, +protocol Protocol-Cause, +misc Misc-Cause } -LCS-Client-Type ::= ENUMERATED { +LCS-Client-Type ::= ENUMERATED { emergency-Services, value-Added-Services, pLMN-Operator-Services, @@ -324,19 +361,20 @@ LCS-Client-Type ::= ENUMERATED { } -LCS-Priority ::= OCTET STRING (SIZE (1)) +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-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 @@ -344,10 +382,11 @@ Macro-eNB-ID ::= BIT STRING (SIZE (20)) Message-Identifier ::= BIT STRING (SIZE (16)) -Misc-Cause ::= ENUMERATED { +Misc-Cause ::= ENUMERATED { processing-Overload, hardware-Failure, o-And-M-Intervention, + ciphering-key-data-lost, unspecified, ... } @@ -357,9 +396,9 @@ MultipleAPDUs ::= SEQUENCE (SIZE (1.. 3)) OF APDU -- N -Network-Element ::= CHOICE { -global-eNB-ID Global-eNB-ID, -e-SMLC-ID E-SMLC-ID +Network-Element ::= CHOICE { +global-eNB-ID Global-eNB-ID, +e-SMLC-ID E-SMLC-ID } -- O @@ -376,9 +415,9 @@ lPPa, PLMN-ID ::= TBCD-STRING -Point ::= SEQUENCE { +Point ::= SEQUENCE { geographical-Coordinates Geographical-Coordinates, - iE-Extensions ProtocolExtensionContainer { {Point-ExtIEs} } OPTIONAL, + iE-Extensions ProtocolExtensionContainer { {Point-ExtIEs} } OPTIONAL, ... } @@ -387,10 +426,10 @@ Point-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { } -Point-With-Uncertainty ::= SEQUENCE { +Point-With-Uncertainty ::= SEQUENCE { geographical-Coordinates Geographical-Coordinates, - uncertainty-Code Uncertainty-Code, - iE-Extensions ProtocolExtensionContainer { {Point-With-Uncertainty-ExtIEs} } OPTIONAL, + uncertainty-Code Uncertainty-Code, + iE-Extensions ProtocolExtensionContainer { {Point-With-Uncertainty-ExtIEs} } OPTIONAL, ...} Point-With-Uncertainty-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { @@ -401,9 +440,9 @@ 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, - ... + geographical-Coordinates Geographical-Coordinates, + iE-Extensions ProtocolExtensionContainer { {Polygon-Point-ExtIEs} } OPTIONAL, + ... } Polygon-Point-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { @@ -411,15 +450,15 @@ Polygon-Point-ExtIEs LCS-AP-PROTOCOL-EXTENSION ::= { } -Positioning-Data ::= SEQUENCE { - positioning-Data-Set Positioning-Data-Set OPTIONAL, +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, - ... + 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 }, + { ID id-Additional-PositioningDataSet CRITICALITY ignore EXTENSION Additional-PositioningDataSet PRESENCE optional }, ... } @@ -427,7 +466,7 @@ Positioning-Data-Set ::= SEQUENCE (SIZE (1..max-Set)) OF Positioning-Method-And Positioning-Method-And-Usage ::= OCTET STRING (SIZE (1)) -Protocol-Cause ::= ENUMERATED { +Protocol-Cause ::= ENUMERATED { transfer-Syntax-Error, abstract-Syntax-Error-Reject, abstract-Syntax-Error-Ignore-And-Notify, @@ -441,12 +480,19 @@ abstract-Syntax-Error, -- Q -- R -Radio-Network-Layer-Cause ::= ENUMERATED { +Radio-Network-Layer-Cause ::= ENUMERATED { unspecified, ... } -Response-Time ::= ENUMERATED { +RAT-Type ::= ENUMERATED { + lte-wb, + nb-iot, + ..., + lte-m +} + +Response-Time ::= ENUMERATED { low-Delay(0), delay-Tolerant(1), ... @@ -467,11 +513,23 @@ 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 { +Transport-Layer-Cause ::= ENUMERATED { tranport-Resource-Unavailable, unspecified, ... @@ -483,28 +541,32 @@ 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 +Uncertainty-Ellipse ::= SEQUENCE { + uncertainty-SemiMajor Uncertainty-Code, + uncertainty-SemiMinor Uncertainty-Code, + orientation-Major-Axis Orientation-Major-Axis } -UE-Positioning-Capability ::= SEQUENCE { - lPP BOOLEAN, +UE-Positioning-Capability ::= SEQUENCE { + lPP BOOLEAN, ... } -- 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-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-Requested ::= ENUMERATED { vertical-coordinate-Is-Not-Requested(0), vertical-coordinate-Is-Requested(1) } @@ -512,8 +574,8 @@ Vertical-Requested ::= ENUMERATED { Vertical-Accuracy ::= INTEGER (0..127) Vertical-Velocity ::= SEQUENCE { - vertical-Speed INTEGER (0..255), - vertical-Speed-Direction Vertical-Speed-Direction + vertical-Speed INTEGER (0..255), + vertical-Speed-Direction Vertical-Speed-Direction } Vertical-Speed-Direction ::= ENUMERATED { diff --git a/epan/dissectors/asn1/lcsap/LCS-AP-PDU-Contents.asn b/epan/dissectors/asn1/lcsap/LCS-AP-PDU-Contents.asn index 9fdccfb360..b6765b154f 100644 --- a/epan/dissectors/asn1/lcsap/LCS-AP-PDU-Contents.asn +++ b/epan/dissectors/asn1/lcsap/LCS-AP-PDU-Contents.asn @@ -1,4 +1,4 @@ --- ETSI TS 129 171 V13.2.0 (2016-03) +-- ETSI TS 129 171 V15.2.0 (2019-03) -- -- 7.5.4 PDU definitions -- ************************************************************** @@ -27,15 +27,19 @@ IMPORTS 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-Client-Type, LCS-Service-Type-ID, LCS-Priority, LCS-QoS, @@ -44,6 +48,7 @@ IMPORTS Network-Element, Payload-Type, Positioning-Data, + RAT-Type, Return-Error-Type, Return-Error-Cause, UE-Positioning-Capability, @@ -60,8 +65,12 @@ FROM LCS-AP-Containers 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, @@ -70,13 +79,14 @@ FROM LCS-AP-Containers id-LCS-Client-Type, id-LCS-Priority, id-LCS-QOS, - id-LCS-Cause, + 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, @@ -92,28 +102,30 @@ FROM LCS-AP-Constants; -- ************************************************************** Location-Request ::= SEQUENCE { - protocolIEs ProtocolIE-Container { { Location-Request-IEs} }, - protocolExtensions ProtocolExtensionContainer { { Location-Request-Extensions} } OPTIONAL, + 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-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-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-LCS-Service-Type-ID CRITICALITY ignore EXTENSION LCS-Service-Type-ID PRESENCE optional }, ... } @@ -125,27 +137,28 @@ Location-Request-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { -- ************************************************************** Location-Response ::= SEQUENCE { - protocolIEs ProtocolIE-Container { {Location-Response-IEs} }, - protocolExtensions ProtocolExtensionContainer { {Location-Response-Extensions} } OPTIONAL, + 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-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 } , + { 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-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-Coverage-Level CRITICALITY ignore EXTENSION Coverage-Level PRESENCE optional}, ... } @@ -156,14 +169,14 @@ Location-Response-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { -- ************************************************************** Location-Abort-Request ::= SEQUENCE { - protocolIEs ProtocolIE-Container { {Location-Abort-Request-IEs} }, - protocolExtensions ProtocolExtensionContainer { {Location-Abort-Request-Extensions} } OPTIONAL, + 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 } , + { ID id-Correlation-ID CRITICALITY reject TYPE Correlation-ID PRESENCE mandatory } | + { ID id-LCS-Cause CRITICALITY ignore TYPE LCS-Cause PRESENCE mandatory } , ... } @@ -178,15 +191,15 @@ Location-Abort-Request-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { -- ************************************************************** Connection-Oriented-Information ::= SEQUENCE { - protocolIEs ProtocolIE-Container { {Connection-Oriented-Information-IEs} }, - protocolExtensions ProtocolExtensionContainer { {Connection-Oriented-Information-Extensions} } OPTIONAL, + 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 } , + { 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 } , ... } @@ -201,17 +214,17 @@ Connection-Oriented-Information-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { -- ************************************************************** Connectionless-Information ::= SEQUENCE { - protocolIEs ProtocolIE-Container { {Connectionless-Information-IEs} }, - protocolExtensions ProtocolExtensionContainer { {Connectionless-Information-Extensions} } OPTIONAL, + 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 } , + { 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 } , ... } @@ -227,13 +240,13 @@ Connectionless-Information-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { -- ************************************************************** Reset-Request ::= SEQUENCE { - protocolIEs ProtocolIE-Container { {Reset-Request-IEs} }, - protocolExtensions ProtocolExtensionContainer { {Reset-Request-Extensions} } OPTIONAL, + 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 } , + { ID id-LCS-Cause CRITICALITY ignore TYPE LCS-Cause PRESENCE mandatory } , ... } @@ -249,9 +262,9 @@ Reset-Request-Extensions LCS-AP-PROTOCOL-EXTENSION ::= { -- -- ************************************************************** -Reset-Acknowledge ::= SEQUENCE { - protocolIEs ProtocolIE-Container { { Reset-Acknowledge-IEs} }, - protocolExtensions ProtocolExtensionContainer { { Reset-Acknowledge-Extensions} } OPTIONAL, +Reset-Acknowledge ::= SEQUENCE { + protocolIEs ProtocolIE-Container { { Reset-Acknowledge-IEs} }, + protocolExtensions ProtocolExtensionContainer { { Reset-Acknowledge-Extensions} } OPTIONAL, ... } @@ -264,4 +277,51 @@ 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 +-- +-- ************************************************************** + +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 index f0f71eed9f..c6138a8608 100644 --- a/epan/dissectors/asn1/lcsap/LCS-AP-PDU-Descriptions.asn +++ b/epan/dissectors/asn1/lcsap/LCS-AP-PDU-Descriptions.asn @@ -1,4 +1,4 @@ --- ETSI TS 129 171 V13.2.0 (2016-03) +-- ETSI TS 129 171 V15.2.0 (2019-03) -- -- 7.5.3 Elementary procedure definitions -- ************************************************************** @@ -33,14 +33,17 @@ FROM LCS-AP-CommonDataTypes Connection-Oriented-Information, Connectionless-Information, Reset-Request, - Reset-Acknowledge + 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-Reset, + id-Ciphering-Key-Data FROM LCS-AP-Constants; -- ************************************************************** @@ -50,18 +53,18 @@ FROM LCS-AP-Constants; -- ************************************************************** LCS-AP-ELEMENTARY-PROCEDURE ::= CLASS { - &InitiatingMessage , - &SuccessfulOutcome OPTIONAL, - &UnsuccessfulOutcome OPTIONAL, - &procedureCode ProcedureCode UNIQUE, - &criticality Criticality DEFAULT ignore + &InitiatingMessage , + &SuccessfulOutcome OPTIONAL, + &UnsuccessfulOutcome OPTIONAL, + &procedureCode ProcedureCode UNIQUE, + &criticality Criticality DEFAULT ignore } WITH SYNTAX { - INITIATING MESSAGE &InitiatingMessage - [SUCCESSFUL OUTCOME &SuccessfulOutcome] + INITIATING MESSAGE &InitiatingMessage + [SUCCESSFUL OUTCOME &SuccessfulOutcome] [UNSUCCESSFUL OUTCOME &UnsuccessfulOutcome] - PROCEDURE CODE &procedureCode - [CRITICALITY &criticality] + PROCEDURE CODE &procedureCode + [CRITICALITY &criticality] } -- ************************************************************** @@ -78,21 +81,21 @@ LCS-AP-PDU ::= CHOICE { } 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}) + 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}) + 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}) + 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}) } -- ************************************************************** @@ -108,10 +111,11 @@ LCS-AP-ELEMENTARY-PROCEDURES LCS-AP-ELEMENTARY-PROCEDURE ::= { } LCS-AP-ELEMENTARY-PROCEDURES-CLASS-1 LCS-AP-ELEMENTARY-PROCEDURE ::= { - location-Service-Request | - connectionless-Information-Transfer | - location-Abort | - reset , + location-Service-Request | + connectionless-Information-Transfer | + location-Abort | + reset , + ciphering-Key-Data , ... } @@ -130,38 +134,46 @@ LCS-AP-ELEMENTARY-PROCEDURES-CLASS-2 LCS-AP-ELEMENTARY-PROCEDURE ::= { location-Service-Request LCS-AP-ELEMENTARY-PROCEDURE ::= { - INITIATING MESSAGE Location-Request - SUCCESSFUL OUTCOME Location-Response + INITIATING MESSAGE Location-Request + SUCCESSFUL OUTCOME Location-Response UNSUCCESSFUL OUTCOME Location-Response - PROCEDURE CODE id-Location-Service-Request - CRITICALITY reject + 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 + 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 + INITIATING MESSAGE Connectionless-Information UNSUCCESSFUL OUTCOME Connectionless-Information - PROCEDURE CODE id-Connectionless-Information-Transfer - CRITICALITY reject + 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 + 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 + INITIATING MESSAGE Reset-Request + SUCCESSFUL OUTCOME Reset-Acknowledge + PROCEDURE CODE id-Reset + CRITICALITY reject +} + +Ciphering-Key-Data 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 + CRITICALITY reject } END diff --git a/epan/dissectors/asn1/lcsap/lcsap.cnf b/epan/dissectors/asn1/lcsap/lcsap.cnf index f69759604c..174537c238 100644 --- a/epan/dissectors/asn1/lcsap/lcsap.cnf +++ b/epan/dissectors/asn1/lcsap/lcsap.cnf @@ -19,6 +19,7 @@ ProtocolIE-ID #.NO_EMIT TBCD-STRING +Coverage-Level #.OMIT_ASSIGNMENT # Get rid of unused code warnings @@ -262,6 +263,7 @@ id-Connection-Oriented-Information-Transfer ProcedureCode id-Connectionless-Information-Transfer ProcedureCode id-Location-Abort ProcedureCode id-Reset ProcedureCode +id-Ciphering-Key-Data ProcedureCode # ProtocolIE-ID id-Correlation-ID ProtocolIE-ID @@ -287,10 +289,14 @@ id-Location-Estimate ProtocolIE-ID id-Source-Identity ProtocolIE-ID id-Destination-ID ProtocolIE-ID id-LCS-Service-Type-ID ProtocolIE-ID -id-Additional-PositioningDataSet ProtocolIE-ID -id-Barometric-Pressure 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 #.REGISTER @@ -317,11 +323,16 @@ 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 + #LCS-AP-PROTOCOL-EXTENSION LCS-Service-Type-ID N lcsap.extension id-LCS-Service-Type-ID -Additional-PositioningDataSet N lcsap.extension id-Additional-PositioningDataSet -Barometric-Pressure N lcsap.extension id-Barometric-Pressure 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 @@ -342,6 +353,10 @@ 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 +Ciphering-Key-Data-Result N lcsap.proc.sout id-Ciphering-Key-Data +Ciphering-Key-Data-Result N lcsap.proc.uout id-Ciphering-Key-Data + #.TYPE_ATTR diff --git a/epan/dissectors/packet-lcsap.c b/epan/dissectors/packet-lcsap.c index 0c535a941b..f7690e7172 100644 --- a/epan/dissectors/packet-lcsap.c +++ b/epan/dissectors/packet-lcsap.c @@ -57,6 +57,7 @@ void proto_reg_handoff_lcsap(void); #define max_Set 9 #define max_GNSS_Set 9 #define max_Add_Pos_Set 8 +#define max_Cipher_Set 16 #define maxProtocolExtensions 65535 #define maxProtocolIEs 65535 @@ -65,7 +66,8 @@ typedef enum _ProcedureCode_enum { id_Connection_Oriented_Information_Transfer = 1, id_Connectionless_Information_Transfer = 2, id_Location_Abort = 3, - id_Reset = 4 + id_Reset = 4, + id_Ciphering_Key_Data = 5 } ProcedureCode_enum; typedef enum _ProtocolIE_ID_enum { @@ -95,7 +97,11 @@ typedef enum _ProtocolIE_ID_enum { id_Cell_Portion_ID = 23, id_Civic_Address = 24, id_Barometric_Pressure = 25, - id_Additional_PositioningDataSet = 26 + id_Additional_PositioningDataSet = 26, + id_RAT_Type = 27, + id_Ciphering_Data = 28, + id_Ciphering_Data_Ack = 29, + id_Ciphering_Data_Error_Report = 30 } ProtocolIE_ID_enum; /*--- End of included file: packet-lcsap-val.h ---*/ @@ -117,6 +123,9 @@ static int hf_lcsap_Accuracy_Fulfillment_Indicator_PDU = -1; /* Accuracy_Fulfil static int hf_lcsap_Additional_PositioningDataSet_PDU = -1; /* Additional_PositioningDataSet */ static int hf_lcsap_Barometric_Pressure_PDU = -1; /* Barometric_Pressure */ static int hf_lcsap_Cell_Portion_ID_PDU = -1; /* Cell_Portion_ID */ +static int hf_lcsap_Ciphering_Data_PDU = -1; /* Ciphering_Data */ +static int hf_lcsap_Ciphering_Data_Ack_PDU = -1; /* Ciphering_Data_Ack */ +static int hf_lcsap_Ciphering_Data_Error_Report_PDU = -1; /* Ciphering_Data_Error_Report */ static int hf_lcsap_Civic_Address_PDU = -1; /* Civic_Address */ static int hf_lcsap_lcsap_Correlation_ID_PDU = -1; /* Correlation_ID */ static int hf_lcsap_E_CGI_PDU = -1; /* E_CGI */ @@ -134,6 +143,7 @@ static int hf_lcsap_MultipleAPDUs_PDU = -1; /* MultipleAPDUs */ static int hf_lcsap_Network_Element_PDU = -1; /* Network_Element */ static int hf_lcsap_Payload_Type_PDU = -1; /* Payload_Type */ static int hf_lcsap_lcsap_Positioning_Data_PDU = -1; /* Positioning_Data */ +static int hf_lcsap_RAT_Type_PDU = -1; /* RAT_Type */ static int hf_lcsap_Return_Error_Type_PDU = -1; /* Return_Error_Type */ static int hf_lcsap_Return_Error_Cause_PDU = -1; /* Return_Error_Cause */ static int hf_lcsap_UE_Positioning_Capability_PDU = -1; /* UE_Positioning_Capability */ @@ -145,6 +155,8 @@ static int hf_lcsap_Connection_Oriented_Information_PDU = -1; /* Connection_Ori static int hf_lcsap_Connectionless_Information_PDU = -1; /* Connectionless_Information */ static int hf_lcsap_Reset_Request_PDU = -1; /* Reset_Request */ static int hf_lcsap_Reset_Acknowledge_PDU = -1; /* Reset_Acknowledge */ +static int hf_lcsap_Ciphering_Key_Data_PDU = -1; /* Ciphering_Key_Data */ +static int hf_lcsap_Ciphering_Key_Data_Result_PDU = -1; /* Ciphering_Key_Data_Result */ static int hf_lcsap_LCS_AP_PDU_PDU = -1; /* LCS_AP_PDU */ static int hf_lcsap_ProtocolIE_Container_item = -1; /* ProtocolIE_Field */ static int hf_lcsap_id = -1; /* ProtocolIE_ID */ @@ -156,6 +168,17 @@ static int hf_lcsap_extensionValue = -1; /* T_extensionValue */ static int hf_lcsap_Additional_PositioningDataSet_item = -1; /* Additional_PositioningMethodAndUsage */ static int hf_lcsap_direction_Of_Altitude = -1; /* Direction_Of_Altitude */ static int hf_lcsap_altitude = -1; /* Altitude */ +static int hf_lcsap_Ciphering_Data_item = -1; /* Ciphering_Data_Set */ +static int hf_lcsap_Ciphering_Data_Ack_item = -1; /* Ciphering_Set_ID */ +static int hf_lcsap_Ciphering_Data_Error_Report_item = -1; /* Ciphering_Data_Error_Report_Contents */ +static int hf_lcsap_ciphering_Set_ID = -1; /* Ciphering_Set_ID */ +static int hf_lcsap_ciphering_Key = -1; /* Ciphering_Key */ +static int hf_lcsap_c0 = -1; /* C0 */ +static int hf_lcsap_sib_Types = -1; /* SIB_Types */ +static int hf_lcsap_validity_Start_Time = -1; /* Validity_Start_Time */ +static int hf_lcsap_validity_Duration = -1; /* Validity_Duration */ +static int hf_lcsap_tais_List = -1; /* TAIs_List */ +static int hf_lcsap_storage_Outcome = -1; /* Storage_Outcome */ static int hf_lcsap_pLMNidentity = -1; /* PLMN_ID */ static int hf_lcsap_cell_ID = -1; /* CellIdentity */ static int hf_lcsap_iE_Extensions = -1; /* ProtocolExtensionContainer */ @@ -170,6 +193,8 @@ static int hf_lcsap_offset_Angle = -1; /* Angle */ static int hf_lcsap_included_Angle = -1; /* Angle */ static int hf_lcsap_macro_eNB_ID = -1; /* Macro_eNB_ID */ static int hf_lcsap_home_eNB_ID = -1; /* Home_eNB_ID */ +static int hf_lcsap_short_macro_eNB_ID = -1; /* Short_Macro_eNB_ID */ +static int hf_lcsap_long_macro_eNB_ID = -1; /* Long_Macro_eNB_ID */ static int hf_lcsap_point = -1; /* Point */ static int hf_lcsap_point_With_Uncertainty = -1; /* Point_With_Uncertainty */ static int hf_lcsap_ellipsoidPoint_With_Uncertainty_Ellipse = -1; /* Ellipsoid_Point_With_Uncertainty_Ellipse */ @@ -244,6 +269,11 @@ static gint ett_lcsap_ProtocolExtensionContainer = -1; static gint ett_lcsap_ProtocolExtensionField = -1; static gint ett_lcsap_Additional_PositioningDataSet = -1; static gint ett_lcsap_Altitude_And_Direction = -1; +static gint ett_lcsap_Ciphering_Data = -1; +static gint ett_lcsap_Ciphering_Data_Ack = -1; +static gint ett_lcsap_Ciphering_Data_Error_Report = -1; +static gint ett_lcsap_Ciphering_Data_Set = -1; +static gint ett_lcsap_Ciphering_Data_Error_Report_Contents = -1; static gint ett_lcsap_E_CGI = -1; static gint ett_lcsap_Ellipsoid_Point_With_Uncertainty_Ellipse = -1; static gint ett_lcsap_Ellipsoid_Point_With_Altitude = -1; @@ -280,6 +310,8 @@ static gint ett_lcsap_Connection_Oriented_Information = -1; static gint ett_lcsap_Connectionless_Information = -1; static gint ett_lcsap_Reset_Request = -1; static gint ett_lcsap_Reset_Acknowledge = -1; +static gint ett_lcsap_Ciphering_Key_Data = -1; +static gint ett_lcsap_Ciphering_Key_Data_Result = -1; static gint ett_lcsap_LCS_AP_PDU = -1; static gint ett_lcsap_InitiatingMessage = -1; static gint ett_lcsap_SuccessfulOutcome = -1; @@ -434,6 +466,7 @@ static const value_string lcsap_ProcedureCode_vals[] = { { id_Connectionless_Information_Transfer, "id-Connectionless-Information-Transfer" }, { id_Location_Abort, "id-Location-Abort" }, { id_Reset, "id-Reset" }, + { id_Ciphering_Key_Data, "id-Ciphering-Key-Data" }, { 0, NULL } }; @@ -443,7 +476,7 @@ dissect_lcsap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, &ProcedureCode, FALSE); -#line 99 "./asn1/lcsap/lcsap.cnf" +#line 100 "./asn1/lcsap/lcsap.cnf" { guint8 tmp = tvb_get_guint8(tvb, 0); @@ -502,6 +535,10 @@ static const value_string lcsap_ProtocolIE_ID_vals[] = { { id_Civic_Address, "id-Civic-Address" }, { id_Barometric_Pressure, "id-Barometric-Pressure" }, { id_Additional_PositioningDataSet, "id-Additional-PositioningDataSet" }, + { id_RAT_Type, "id-RAT-Type" }, + { id_Ciphering_Data, "id-Ciphering-Data" }, + { id_Ciphering_Data_Ack, "id-Ciphering-Data-Ack" }, + { id_Ciphering_Data_Error_Report, "id-Ciphering-Data-Error-Report" }, { 0, NULL } }; @@ -511,7 +548,7 @@ dissect_lcsap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 65535U, &ProtocolIE_ID, FALSE); -#line 51 "./asn1/lcsap/lcsap.cnf" +#line 52 "./asn1/lcsap/lcsap.cnf" 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)")); } @@ -601,7 +638,7 @@ dissect_lcsap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1 static int dissect_lcsap_APDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 72 "./asn1/lcsap/lcsap.cnf" +#line 73 "./asn1/lcsap/lcsap.cnf" tvbuff_t *parameter_tvb=NULL; @@ -737,6 +774,16 @@ dissect_lcsap_Barometric_Pressure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t +static int +dissect_lcsap_C0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 1, 128, FALSE, NULL, 0, NULL, NULL); + + return offset; +} + + + static int dissect_lcsap_CellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, @@ -757,9 +804,162 @@ dissect_lcsap_Cell_Portion_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act +static int +dissect_lcsap_Ciphering_Set_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 65535U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lcsap_Ciphering_Key(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 16, 16, FALSE, NULL); + + return offset; +} + + + +static int +dissect_lcsap_SIB_Types(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 4, 4, FALSE, NULL); + + return offset; +} + + + +static int +dissect_lcsap_Validity_Start_Time(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 4, 4, FALSE, NULL); + + return offset; +} + + + +static int +dissect_lcsap_Validity_Duration(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, + 0U, 65535U, NULL, FALSE); + + return offset; +} + + + +static int +dissect_lcsap_TAIs_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, + 7, 97, FALSE, NULL); + + return offset; +} + + +static const per_sequence_t Ciphering_Data_Set_sequence[] = { + { &hf_lcsap_ciphering_Set_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Ciphering_Set_ID }, + { &hf_lcsap_ciphering_Key , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Ciphering_Key }, + { &hf_lcsap_c0 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_C0 }, + { &hf_lcsap_sib_Types , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_SIB_Types }, + { &hf_lcsap_validity_Start_Time, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Validity_Start_Time }, + { &hf_lcsap_validity_Duration, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Validity_Duration }, + { &hf_lcsap_tais_List , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_TAIs_List }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lcsap_Ciphering_Data_Set(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lcsap_Ciphering_Data_Set, Ciphering_Data_Set_sequence); + + return offset; +} + + +static const per_sequence_t Ciphering_Data_sequence_of[1] = { + { &hf_lcsap_Ciphering_Data_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Ciphering_Data_Set }, +}; + +static int +dissect_lcsap_Ciphering_Data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lcsap_Ciphering_Data, Ciphering_Data_sequence_of, + 1, max_Cipher_Set, FALSE); + + return offset; +} + + +static const per_sequence_t Ciphering_Data_Ack_sequence_of[1] = { + { &hf_lcsap_Ciphering_Data_Ack_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Ciphering_Set_ID }, +}; + +static int +dissect_lcsap_Ciphering_Data_Ack(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lcsap_Ciphering_Data_Ack, Ciphering_Data_Ack_sequence_of, + 1, max_Cipher_Set, FALSE); + + return offset; +} + + +static const value_string lcsap_Storage_Outcome_vals[] = { + { 0, "successful" }, + { 1, "failed" }, + { 0, NULL } +}; + + +static int +dissect_lcsap_Storage_Outcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, FALSE, 0, NULL); + + return offset; +} + + +static const per_sequence_t Ciphering_Data_Error_Report_Contents_sequence[] = { + { &hf_lcsap_ciphering_Set_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Ciphering_Set_ID }, + { &hf_lcsap_storage_Outcome, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_Storage_Outcome }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lcsap_Ciphering_Data_Error_Report_Contents(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lcsap_Ciphering_Data_Error_Report_Contents, Ciphering_Data_Error_Report_Contents_sequence); + + return offset; +} + + +static const per_sequence_t Ciphering_Data_Error_Report_sequence_of[1] = { + { &hf_lcsap_Ciphering_Data_Error_Report_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_lcsap_Ciphering_Data_Error_Report_Contents }, +}; + +static int +dissect_lcsap_Ciphering_Data_Error_Report(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, + ett_lcsap_Ciphering_Data_Error_Report, Ciphering_Data_Error_Report_sequence_of, + 1, max_Cipher_Set, FALSE); + + return offset; +} + + + static int dissect_lcsap_Civic_Address(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 239 "./asn1/lcsap/lcsap.cnf" +#line 240 "./asn1/lcsap/lcsap.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -808,7 +1008,7 @@ dissect_lcsap_Correlation_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_lcsap_DegreesLatitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 199 "./asn1/lcsap/lcsap.cnf" +#line 200 "./asn1/lcsap/lcsap.cnf" gint32 degrees; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, @@ -825,7 +1025,7 @@ dissect_lcsap_DegreesLatitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *act static int dissect_lcsap_DegreesLongitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 207 "./asn1/lcsap/lcsap.cnf" +#line 208 "./asn1/lcsap/lcsap.cnf" gint32 degrees; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, @@ -843,7 +1043,7 @@ dissect_lcsap_DegreesLongitude(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static int dissect_lcsap_PLMN_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 151 "./asn1/lcsap/lcsap.cnf" +#line 152 "./asn1/lcsap/lcsap.cnf" tvbuff_t *parameter_tvb=NULL; proto_tree *subtree; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -877,6 +1077,7 @@ dissect_lcsap_E_CGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, pro } + static const value_string lcsap_LatitudeSign_vals[] = { { 0, "north" }, { 1, "south" }, @@ -913,7 +1114,7 @@ dissect_lcsap_Geographical_Coordinates(tvbuff_t *tvb _U_, int offset _U_, asn1_c static int dissect_lcsap_Uncertainty_Code(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 191 "./asn1/lcsap/lcsap.cnf" +#line 192 "./asn1/lcsap/lcsap.cnf" guint32 uncertainty_code; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, @@ -1065,15 +1266,39 @@ dissect_lcsap_Home_eNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U } + +static int +dissect_lcsap_Short_Macro_eNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 18, 18, FALSE, NULL, 0, NULL, NULL); + + return offset; +} + + + +static int +dissect_lcsap_Long_Macro_eNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, + 21, 21, FALSE, NULL, 0, NULL, NULL); + + return offset; +} + + static const value_string lcsap_ENB_ID_vals[] = { { 0, "macro-eNB-ID" }, { 1, "home-eNB-ID" }, + { 2, "short-macro-eNB-ID" }, + { 3, "long-macro-eNB-ID" }, { 0, NULL } }; static const per_choice_t ENB_ID_choice[] = { { 0, &hf_lcsap_macro_eNB_ID , ASN1_EXTENSION_ROOT , dissect_lcsap_Macro_eNB_ID }, { 1, &hf_lcsap_home_eNB_ID , ASN1_EXTENSION_ROOT , dissect_lcsap_Home_eNB_ID }, + { 2, &hf_lcsap_short_macro_eNB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_lcsap_Short_Macro_eNB_ID }, + { 3, &hf_lcsap_long_macro_eNB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_lcsap_Long_Macro_eNB_ID }, { 0, NULL, 0, NULL } }; @@ -1207,7 +1432,7 @@ dissect_lcsap_Global_eNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx static int dissect_lcsap_GNSS_Positioning_Method_And_Usage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 177 "./asn1/lcsap/lcsap.cnf" +#line 178 "./asn1/lcsap/lcsap.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -1244,7 +1469,7 @@ dissect_lcsap_GNSS_Positioning_Data_Set(tvbuff_t *tvb _U_, int offset _U_, asn1_ static int dissect_lcsap_Horizontal_Accuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 225 "./asn1/lcsap/lcsap.cnf" +#line 226 "./asn1/lcsap/lcsap.cnf" guint32 uncertainty_code; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 127U, &uncertainty_code, FALSE); @@ -1252,7 +1477,7 @@ dissect_lcsap_Horizontal_Accuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t -#line 229 "./asn1/lcsap/lcsap.cnf" +#line 230 "./asn1/lcsap/lcsap.cnf" proto_item_append_text(actx->created_item, " (%.1f m)", 10 * (pow(1.1, (double)uncertainty_code) - 1)); @@ -1404,7 +1629,7 @@ dissect_lcsap_Horizontal_With_Vertical_Velocity_And_Uncertainty(tvbuff_t *tvb _U static int dissect_lcsap_IMSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 215 "./asn1/lcsap/lcsap.cnf" +#line 216 "./asn1/lcsap/lcsap.cnf" tvbuff_t *imsi_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 3, 8, FALSE, &imsi_tvb); @@ -1451,6 +1676,7 @@ dissect_lcsap_Include_Velocity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac static const value_string lcsap_Location_Type_vals[] = { { 0, "geographic-Information" }, { 1, "assistance-Information" }, + { 2, "last-known-location" }, { 0, NULL } }; @@ -1458,7 +1684,7 @@ static const value_string lcsap_Location_Type_vals[] = { static int dissect_lcsap_Location_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 2, NULL, TRUE, 0, NULL); + 2, NULL, TRUE, 1, NULL); return offset; } @@ -1520,7 +1746,8 @@ static const value_string lcsap_Misc_Cause_vals[] = { { 0, "processing-Overload" }, { 1, "hardware-Failure" }, { 2, "o-And-M-Intervention" }, - { 3, "unspecified" }, + { 3, "ciphering-key-data-lost" }, + { 4, "unspecified" }, { 0, NULL } }; @@ -1528,7 +1755,7 @@ static const value_string lcsap_Misc_Cause_vals[] = { static int dissect_lcsap_Misc_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, - 4, NULL, TRUE, 0, NULL); + 5, NULL, TRUE, 0, NULL); return offset; } @@ -1611,7 +1838,7 @@ dissect_lcsap_Vertical_Requested(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t * static int dissect_lcsap_Vertical_Accuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 232 "./asn1/lcsap/lcsap.cnf" +#line 233 "./asn1/lcsap/lcsap.cnf" guint32 vertical_uncertainty; offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 127U, &vertical_uncertainty, FALSE); @@ -1619,7 +1846,7 @@ dissect_lcsap_Vertical_Accuracy(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a -#line 236 "./asn1/lcsap/lcsap.cnf" +#line 237 "./asn1/lcsap/lcsap.cnf" proto_item_append_text(actx->created_item, " (%.1f m)", 45 * (pow(1.025, (double)vertical_uncertainty) - 1)); @@ -1725,7 +1952,7 @@ dissect_lcsap_Payload_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _ static int dissect_lcsap_Positioning_Method_And_Usage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 165 "./asn1/lcsap/lcsap.cnf" +#line 166 "./asn1/lcsap/lcsap.cnf" tvbuff_t *parameter_tvb=NULL; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, @@ -1775,6 +2002,23 @@ dissect_lcsap_Positioning_Data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *ac } +static const value_string lcsap_RAT_Type_vals[] = { + { 0, "lte-wb" }, + { 1, "nb-iot" }, + { 2, "lte-m" }, + { 0, NULL } +}; + + +static int +dissect_lcsap_RAT_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, + 2, NULL, TRUE, 1, NULL); + + return offset; +} + + static const value_string lcsap_Return_Error_Type_vals[] = { { 0, "yes" }, { 1, "no" }, @@ -1927,7 +2171,7 @@ static const per_sequence_t Connectionless_Information_sequence[] = { static int dissect_lcsap_Connectionless_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 68 "./asn1/lcsap/lcsap.cnf" +#line 69 "./asn1/lcsap/lcsap.cnf" PayloadType = 1; /* LPPa */ @@ -1969,6 +2213,36 @@ dissect_lcsap_Reset_Acknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *a } +static const per_sequence_t Ciphering_Key_Data_sequence[] = { + { &hf_lcsap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_Container }, + { &hf_lcsap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lcsap_Ciphering_Key_Data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lcsap_Ciphering_Key_Data, Ciphering_Key_Data_sequence); + + return offset; +} + + +static const per_sequence_t Ciphering_Key_Data_Result_sequence[] = { + { &hf_lcsap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_lcsap_ProtocolIE_Container }, + { &hf_lcsap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lcsap_ProtocolExtensionContainer }, + { NULL, 0, 0, NULL } +}; + +static int +dissect_lcsap_Ciphering_Key_Data_Result(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, + ett_lcsap_Ciphering_Key_Data_Result, Ciphering_Key_Data_Result_sequence); + + return offset; +} + + static int dissect_lcsap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -2109,6 +2383,30 @@ static int dissect_Cell_Portion_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_ offset += 7; offset >>= 3; return offset; } +static int dissect_Ciphering_Data_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_lcsap_Ciphering_Data(tvb, offset, &asn1_ctx, tree, hf_lcsap_Ciphering_Data_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Ciphering_Data_Ack_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_lcsap_Ciphering_Data_Ack(tvb, offset, &asn1_ctx, tree, hf_lcsap_Ciphering_Data_Ack_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Ciphering_Data_Error_Report_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_lcsap_Ciphering_Data_Error_Report(tvb, offset, &asn1_ctx, tree, hf_lcsap_Ciphering_Data_Error_Report_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_Civic_Address_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -2245,6 +2543,14 @@ int dissect_lcsap_Positioning_Data_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_ offset += 7; offset >>= 3; return offset; } +static int dissect_RAT_Type_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_lcsap_RAT_Type(tvb, offset, &asn1_ctx, tree, hf_lcsap_RAT_Type_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_Return_Error_Type_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -2333,6 +2639,22 @@ static int dissect_Reset_Acknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _ offset += 7; offset >>= 3; return offset; } +static int dissect_Ciphering_Key_Data_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_lcsap_Ciphering_Key_Data(tvb, offset, &asn1_ctx, tree, hf_lcsap_Ciphering_Key_Data_PDU); + offset += 7; offset >>= 3; + return offset; +} +static int dissect_Ciphering_Key_Data_Result_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); + offset = dissect_lcsap_Ciphering_Key_Data_Result(tvb, offset, &asn1_ctx, tree, hf_lcsap_Ciphering_Key_Data_Result_PDU); + offset += 7; offset >>= 3; + return offset; +} static int dissect_LCS_AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; @@ -2429,9 +2751,13 @@ proto_reg_handoff_lcsap(void) dissector_add_uint("lcsap.ies", id_Source_Identity, create_dissector_handle(dissect_Network_Element_PDU, proto_lcsap)); dissector_add_uint("lcsap.ies", id_UE_Positioning_Capability, create_dissector_handle(dissect_UE_Positioning_Capability_PDU, proto_lcsap)); dissector_add_uint("lcsap.ies", id_Velocity_Estimate, create_dissector_handle(dissect_Velocity_Estimate_PDU, proto_lcsap)); - dissector_add_uint("lcsap.extension", id_LCS_Service_Type_ID, create_dissector_handle(dissect_LCS_Service_Type_ID_PDU, proto_lcsap)); - dissector_add_uint("lcsap.extension", id_Additional_PositioningDataSet, create_dissector_handle(dissect_Additional_PositioningDataSet_PDU, proto_lcsap)); dissector_add_uint("lcsap.extension", id_Barometric_Pressure, create_dissector_handle(dissect_Barometric_Pressure_PDU, proto_lcsap)); + dissector_add_uint("lcsap.extension", id_Additional_PositioningDataSet, create_dissector_handle(dissect_Additional_PositioningDataSet_PDU, proto_lcsap)); + dissector_add_uint("lcsap.ies", id_RAT_Type, create_dissector_handle(dissect_RAT_Type_PDU, proto_lcsap)); + dissector_add_uint("lcsap.ies", id_Ciphering_Data, create_dissector_handle(dissect_Ciphering_Data_PDU, proto_lcsap)); + dissector_add_uint("lcsap.ies", id_Ciphering_Data_Ack, create_dissector_handle(dissect_Ciphering_Data_Ack_PDU, proto_lcsap)); + dissector_add_uint("lcsap.ies", id_Ciphering_Data_Error_Report, create_dissector_handle(dissect_Ciphering_Data_Error_Report_PDU, proto_lcsap)); + dissector_add_uint("lcsap.extension", id_LCS_Service_Type_ID, create_dissector_handle(dissect_LCS_Service_Type_ID_PDU, proto_lcsap)); dissector_add_uint("lcsap.extension", id_Cell_Portion_ID, create_dissector_handle(dissect_Cell_Portion_ID_PDU, proto_lcsap)); dissector_add_uint("lcsap.extension", id_Civic_Address, create_dissector_handle(dissect_Civic_Address_PDU, proto_lcsap)); dissector_add_uint("lcsap.extension", id_E_UTRAN_Cell_Identifier, create_dissector_handle(dissect_E_CGI_PDU, proto_lcsap)); @@ -2445,6 +2771,9 @@ proto_reg_handoff_lcsap(void) dissector_add_uint("lcsap.proc.sout", id_Location_Abort, create_dissector_handle(dissect_Location_Response_PDU, proto_lcsap)); dissector_add_uint("lcsap.proc.imsg", id_Reset, create_dissector_handle(dissect_Reset_Request_PDU, proto_lcsap)); dissector_add_uint("lcsap.proc.sout", id_Reset, create_dissector_handle(dissect_Reset_Acknowledge_PDU, proto_lcsap)); + dissector_add_uint("lcsap.proc.imsg", id_Ciphering_Key_Data, create_dissector_handle(dissect_Ciphering_Key_Data_PDU, proto_lcsap)); + dissector_add_uint("lcsap.proc.sout", id_Ciphering_Key_Data, create_dissector_handle(dissect_Ciphering_Key_Data_Result_PDU, proto_lcsap)); + dissector_add_uint("lcsap.proc.uout", id_Ciphering_Key_Data, create_dissector_handle(dissect_Ciphering_Key_Data_Result_PDU, proto_lcsap)); /*--- End of included file: packet-lcsap-dis-tab.c ---*/ @@ -2516,6 +2845,18 @@ void proto_register_lcsap(void) { { "Cell-Portion-ID", "lcsap.Cell_Portion_ID", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_lcsap_Ciphering_Data_PDU, + { "Ciphering-Data", "lcsap.Ciphering_Data", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_Ciphering_Data_Ack_PDU, + { "Ciphering-Data-Ack", "lcsap.Ciphering_Data_Ack", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_Ciphering_Data_Error_Report_PDU, + { "Ciphering-Data-Error-Report", "lcsap.Ciphering_Data_Error_Report", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, { &hf_lcsap_Civic_Address_PDU, { "Civic-Address", "lcsap.Civic_Address", FT_BYTES, BASE_NONE, NULL, 0, @@ -2584,6 +2925,10 @@ void proto_register_lcsap(void) { { "Positioning-Data", "lcsap.Positioning_Data_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_lcsap_RAT_Type_PDU, + { "RAT-Type", "lcsap.RAT_Type", + FT_UINT32, BASE_DEC, VALS(lcsap_RAT_Type_vals), 0, + NULL, HFILL }}, { &hf_lcsap_Return_Error_Type_PDU, { "Return-Error-Type", "lcsap.Return_Error_Type", FT_UINT32, BASE_DEC, VALS(lcsap_Return_Error_Type_vals), 0, @@ -2628,6 +2973,14 @@ void proto_register_lcsap(void) { { "Reset-Acknowledge", "lcsap.Reset_Acknowledge_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_lcsap_Ciphering_Key_Data_PDU, + { "Ciphering-Key-Data", "lcsap.Ciphering_Key_Data_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_Ciphering_Key_Data_Result_PDU, + { "Ciphering-Key-Data-Result", "lcsap.Ciphering_Key_Data_Result_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_lcsap_LCS_AP_PDU_PDU, { "LCS-AP-PDU", "lcsap.LCS_AP_PDU", FT_UINT32, BASE_DEC, VALS(lcsap_LCS_AP_PDU_vals), 0, @@ -2672,6 +3025,50 @@ void proto_register_lcsap(void) { { "altitude", "lcsap.altitude", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, + { &hf_lcsap_Ciphering_Data_item, + { "Ciphering-Data-Set", "lcsap.Ciphering_Data_Set_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_Ciphering_Data_Ack_item, + { "Ciphering-Set-ID", "lcsap.Ciphering_Set_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_Ciphering_Data_Error_Report_item, + { "Ciphering-Data-Error-Report-Contents", "lcsap.Ciphering_Data_Error_Report_Contents_element", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_ciphering_Set_ID, + { "ciphering-Set-ID", "lcsap.ciphering_Set_ID", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_ciphering_Key, + { "ciphering-Key", "lcsap.ciphering_Key", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_c0, + { "c0", "lcsap.c0", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_sib_Types, + { "sib-Types", "lcsap.sib_Types", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_validity_Start_Time, + { "validity-Start-Time", "lcsap.validity_Start_Time", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_validity_Duration, + { "validity-Duration", "lcsap.validity_Duration", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_tais_List, + { "tais-List", "lcsap.tais_List", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_storage_Outcome, + { "storage-Outcome", "lcsap.storage_Outcome", + FT_UINT32, BASE_DEC, VALS(lcsap_Storage_Outcome_vals), 0, + NULL, HFILL }}, { &hf_lcsap_pLMNidentity, { "pLMNidentity", "lcsap.pLMNidentity", FT_BYTES, BASE_NONE, NULL, 0, @@ -2728,6 +3125,14 @@ void proto_register_lcsap(void) { { "home-eNB-ID", "lcsap.home_eNB_ID", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_lcsap_short_macro_eNB_ID, + { "short-macro-eNB-ID", "lcsap.short_macro_eNB_ID", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_lcsap_long_macro_eNB_ID, + { "long-macro-eNB-ID", "lcsap.long_macro_eNB_ID", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_lcsap_point, { "point", "lcsap.point_element", FT_NONE, BASE_NONE, NULL, 0, @@ -2968,6 +3373,11 @@ void proto_register_lcsap(void) { &ett_lcsap_ProtocolExtensionField, &ett_lcsap_Additional_PositioningDataSet, &ett_lcsap_Altitude_And_Direction, + &ett_lcsap_Ciphering_Data, + &ett_lcsap_Ciphering_Data_Ack, + &ett_lcsap_Ciphering_Data_Error_Report, + &ett_lcsap_Ciphering_Data_Set, + &ett_lcsap_Ciphering_Data_Error_Report_Contents, &ett_lcsap_E_CGI, &ett_lcsap_Ellipsoid_Point_With_Uncertainty_Ellipse, &ett_lcsap_Ellipsoid_Point_With_Altitude, @@ -3004,6 +3414,8 @@ void proto_register_lcsap(void) { &ett_lcsap_Connectionless_Information, &ett_lcsap_Reset_Request, &ett_lcsap_Reset_Acknowledge, + &ett_lcsap_Ciphering_Key_Data, + &ett_lcsap_Ciphering_Key_Data_Result, &ett_lcsap_LCS_AP_PDU, &ett_lcsap_InitiatingMessage, &ett_lcsap_SuccessfulOutcome, -- cgit v1.2.3