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/gsm_map | |
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/gsm_map')
36 files changed, 17656 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/gsm_map/CMakeLists.txt b/epan/dissectors/asn1/gsm_map/CMakeLists.txt new file mode 100644 index 00000000..c245b630 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/CMakeLists.txt @@ -0,0 +1,88 @@ +# 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 gsm_map ) + +set( PROTO_OPT _EMPTY_ ) + +set( EXPORT_FILES + ${PROTOCOL_NAME}-exp.cnf +) + +set( EXT_ASN_FILE_LIST + ../ros/Remote-Operations-Information-Objects.asn +) + +set( DATATYPES_ASN_FILES + MAP-ExtensionDataTypes.asn + MAP-CommonDataTypes.asn + MAP-SS-DataTypes.asn + MAP-ER-DataTypes.asn + MAP-SM-DataTypes.asn + MAP-OM-DataTypes.asn + MAP-MS-DataTypes.asn + MAP-CH-DataTypes.asn + MAP-LCS-DataTypes.asn + MAP-GR-DataTypes.asn +) + +set( OPERATIONS_ASN_FILES + MAP-LocationServiceOperations.asn + MAP-Group-Call-Operations.asn + MAP-ShortMessageServiceOperations.asn + MAP-SupplementaryServiceOperations.asn + MAP-CallHandlingOperations.asn + MAP-OperationAndMaintenanceOperations.asn + MAP-MobileServiceOperations.asn +) + +set( SS_ASN_FILES + SS-DataTypes.asn + SS-Operations.asn +) + +set( PROPRIETARY_ASN_FILES + Ericsson.asn + Nokia.asn +) + +set( ASN_FILE_LIST + MobileDomainDefinitions.asn + MAP-ApplicationContexts.asn + MAP-SS-Code.asn + MAP-BS-Code.asn + MAP-TS-Code.asn + ${DATATYPES_ASN_FILES} + MAP-DialogueInformation.asn + ${OPERATIONS_ASN_FILES} + MAP-Errors.asn + MAP-Protocol.asn + GSMMAP.asn + ${SS_ASN_FILES} + ${PROPRIETARY_ASN_FILES} +) + +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 -b ) + +set( EXTRA_CNF +) + +ASN2WRS() diff --git a/epan/dissectors/asn1/gsm_map/Ericsson.asn b/epan/dissectors/asn1/gsm_map/Ericsson.asn new file mode 100644 index 00000000..ab8879b5 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/Ericsson.asn @@ -0,0 +1,184 @@ +-- Ericsson proprietary extensions + +EricssonMAP{ 0 identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) map-Protocol (4) version13 (13) } + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + +IMPORTS + + IMSI, + IMEI, + ISDN-AddressString, + Ext-SS-Status, + SignalInfo, + TBCD-STRING +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version13 (13)} + + RequestedEquipmentInfo +FROM MAP-MS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-MS-DataTypes (11) version13 (13)} + + ExtensionContainer, + PrivateExtension +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)} +; + +-- non 3GPP standard compliant extension used by Ericsson (see https://gitlab.com/wireshark/wireshark/-/issues/7648) +EnhancedCheckIMEI-Arg ::= SEQUENCE { + imei IMEI, + requestedEquipmentInfo RequestedEquipmentInfo OPTIONAL, + imsi [PRIVATE 1] IMSI OPTIONAL, + locationInformation [PRIVATE 3] OCTET STRING (SIZE (1..7)) OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ...} + + +-- Start of adding Private Extensions for EricssonS + +ExtensionSet MAP-EXTENSION ::= { + { &ExtensionType; ExtensionType, &extensionId; {1 2 826 0 1249 58 1 0} }, + ...} + +ExtensionType ::= CHOICE { + isdArgType [1] IsdArgType, + isdResType [2] IsdResType, + dsdArgType [3] DsdArgType, + sriArgType [4] SRIArgType, + sriResType [5] SRIResType, + prnArgType [6] PrnArgType, + ulArgType [7] UlArgType, + rdArgType [8] RdArgType, + saiArgType [9] SaiArgType, + saiResType [10] SaiResType, + atiArgType [11] AtiArgType, + atiResType [12] AtiResType, + extAtiArgType [13] ExtAtiArgType + } + +IsdArgType ::= SEQUENCE (SIZE(1..50)) OF + IsdArgData + +IsdArgData ::= SEQUENCE { + privateFeatureCode [1] PrivateFeatureCode OPTIONAL, + privateFeatureData PrivateFeatureData OPTIONAL, + ...} + +PrivateFeatureData ::= CHOICE { + subscriptionTypeInfo [3] SubscriptionTypeInfo, + oickInfo [7] OickInfo + } + +OickInfo ::= SEQUENCE { + ss-Status Ext-SS-Status, + inCategoryKey INCategoryKey } + +INCategoryKey ::= TBCD-STRING (SIZE(1..3)) + +SubscriptionTypeInfo ::= SEQUENCE { + subscriptionType SubscriptionType } + +SubscriptionType ::= OCTET STRING (SIZE(1)) + +IsdResType ::= SEQUENCE (SIZE(1..50)) OF + IsdResData + +IsdResData ::= SEQUENCE { + supportedPrivateFeature [1] PrivateFeatureCode OPTIONAL, + ... } + +DsdArgType ::= SEQUENCE (SIZE (1..50)) OF + DsdArgData + +DsdArgData ::= SEQUENCE { + privateFeatureWithdraw PrivateFeatureCode } + +SRIArgType ::= SEQUENCE (SIZE(1..50)) OF + SriArgData + +SriArgData ::= SEQUENCE { + privateFeatureCode [1] PrivateFeatureCode OPTIONAL, + extraNetworkInfo [2] ExtraSignalInfo OPTIONAL, + ... } + +SRIResType ::= SEQUENCE (SIZE(1..50)) OF + SriResData + +SriResData ::= SEQUENCE { + privateFeatureCode [1] PrivateFeatureCode OPTIONAL, + inCategoryKey [2] INCategoryKey OPTIONAL, + subscriptionType [5] SubscriptionType OPTIONAL, + ... } + +PrnArgType ::= SEQUENCE (SIZE(1..50)) OF + PrnArgData + +PrnArgData ::= SEQUENCE { + privateFeatureCode [1] PrivateFeatureCode OPTIONAL, + ..., + extraNetworkInfo [2] ExtraSignalInfo OPTIONAL } + +UlArgType ::= SEQUENCE (SIZE(1..50)) OF + UlArgData + +UlArgData ::= SEQUENCE { + privateFeatureCode [1] PrivateFeatureCode OPTIONAL, + privateFeatureUlArgData PrivateFeatureUlArgData OPTIONAL, + ... } + +PrivateFeatureUlArgData ::= CHOICE { + adc [3] IMEI } + +ExtraProtocolId ::= INTEGER { q763 (1)} (1..20) + +ExtraSignalInfo ::= [PRIVATE 1] SEQUENCE { + protocolId ExtraProtocolId, + signalInfo SignalInfo } + +SaiArgType ::= SEQUENCE { + msisdn [1] NULL OPTIONAL, + noAuthenVectorsRequested [2] NULL OPTIONAL + } + +SaiResType ::= SEQUENCE { + msIsdn [1] ISDN-AddressString OPTIONAL + } + +AtiArgType ::= SEQUENCE { + requestedInfoType [0] RequestedInfoType OPTIONAL + } + +AtiResType ::= SEQUENCE { + toBeDecided [1] NULL OPTIONAL + } + +RdArgType ::= SEQUENCE { + toBeDecidedOne [1] NULL OPTIONAL + } + +RequestedInfoType ::= SEQUENCE { + sgsnNumber [0] NULL OPTIONAL + } + +ExtAtiArgType ::= SEQUENCE (SIZE (1..50)) OF AtiArgData + +AtiArgData ::= SEQUENCE { + privateFeatureCode [1] PrivateFeatureCode OPTIONAL, + ...} + +PrivateFeatureCode ::= OCTET STRING (SIZE (1)) + +-- End of adding Private Extension for Ericsson + +END + diff --git a/epan/dissectors/asn1/gsm_map/GSMMAP.asn b/epan/dissectors/asn1/gsm_map/GSMMAP.asn new file mode 100644 index 00000000..d4e1753f --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/GSMMAP.asn @@ -0,0 +1,768 @@ +-- Expanded ASN1 Module 'MAP-Protocol' +--SIEMENS ASN.1 Compiler R5.70 (Production_5.70) +-- Date: 2003-09-04 Time: 14:14:00 +-- Updated to version 3GPP TS 29.002 V7.5.0 (2006-09) Release 7 +-- Partially from ETS 300 599: December 2000 (GSM 09.02 version 4.19.1) + +DummyMAP{ 0 identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) map-Protocol (4) version5 (5) } + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + + +-- Must import data types for the "old" asn1 defs collected here. +IMPORTS + AddressString, + BasicServiceCode, + ExternalSignalInfo, + HLR-List, + GlobalCellId, + ISDN-AddressString, + IMSI, + IMSI-WithLMSI, + LMSI, + NetworkResource, + ProtocolId, + SignalInfo, + TeleserviceCode, + SubscriberIdentity, + SubscriberId +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version11 (11)} + + ExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version11 (11)} + + CUG-CheckInfo, + NumberOfForwarding, + RoutingInfo +FROM MAP-CH-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CH-DataTypes (13) version11 (11)} + + CUG-Interlock, + SubscriberData, + -- WS modification + TripletList, + QuintupletList, + -- End WS modification + AuthenticationSetList +FROM MAP-MS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-MS-DataTypes (11) version15 (15)} + + CorrelationID, + SM-DeliveryNotIntended, + SM-RP-MTI, + SM-RP-SMEA +FROM MAP-SM-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SM-DataTypes (16) version15 (15)} + +; + +-- ROS def's +-- Module Remote-Operations-Apdus (H.450.1:02/1998) +--Remote-Operations-Apdus {itu-t recommendation h 450 1 version1(0) +-- remote-operations-apdus(11)} DEFINITIONS AUTOMATIC TAGS ::= +--BEGIN + +Component ::= CHOICE { + invoke [1] Invoke, + returnResultLast [2] ReturnResult, + returnError [3] ReturnError, + reject [4] Reject, +-- TCAP adds returnResultNotLast to allow for the segmentation of a result. + returnResultNotLast [7] ReturnResult +} + +Invoke ::= SEQUENCE { + invokeID InvokeIdType, + linkedID [0] InvokeIdType OPTIONAL, + opCode MAP-OPERATION, + invokeparameter InvokeParameter OPTIONAL +} +InvokeParameter ::= ANY + + +-- ANY is filled by the single ASN.1 data type following the keyword PARAMETER or the keyword ARGUMENT +-- in the type definition of a particular operation. + +ReturnResult ::= SEQUENCE { + invokeID InvokeIdType, + resultretres SEQUENCE { + opCode MAP-OPERATION, + returnparameter ReturnResultParameter OPTIONAL + } OPTIONAL + } + +ReturnResultParameter ::= ANY + +-- ANY is filled by the single ASN.1 data type following the keyword RESULT in the type definition +-- of a particular operation. + +ReturnError ::= SEQUENCE { + invokeID InvokeIdType, + errorCode MAP-ERROR, + parameter ReturnErrorParameter OPTIONAL } + +ReturnErrorParameter ::= ANY + +-- ANY is filled by the single ASN.1 data type following the keyword PARAMETER in the type definition +-- of a particular error. + +Reject ::= SEQUENCE { + invokeIDRej CHOICE { + derivable InvokeIdType, + not-derivable NULL }, + problem CHOICE { + generalProblem [0] GeneralProblem, + invokeProblem [1] InvokeProblem, + returnResultProblem [2] ReturnResultProblem, + returnErrorProblem [3] ReturnErrorProblem } } + +InvokeIdType ::= INTEGER (-128..127) + + +MAP-OPERATION ::= CHOICE { + localValue OperationLocalvalue, + globalValue OBJECT IDENTIFIER } + +GSMMAPOperationLocalvalue ::= INTEGER{ + updateLocation (2), + cancelLocation (3), + provideRoamingNumber (4), + noteSubscriberDataModified (5), + resumeCallHandling (6), + insertSubscriberData (7), + deleteSubscriberData (8), + sendParameters (9), + registerSS (10), + eraseSS (11), + activateSS (12), + deactivateSS (13), + interrogateSS (14), + authenticationFailureReport (15), + notifySS (16), + registerPassword (17), + getPassword (18), + processUnstructuredSS-Data (19), + releaseResources (20), + mt-ForwardSM-VGCS (21), + sendRoutingInfo (22), + updateGprsLocation (23), + sendRoutingInfoForGprs (24), + failureReport (25), + noteMsPresentForGprs (26), + unAllocated (27), + performHandover (28), + sendEndSignal (29), + performSubsequentHandover (30), + provideSIWFSNumber (31), + sIWFSSignallingModify (32), + processAccessSignalling (33), + forwardAccessSignalling (34), + noteInternalHandover (35), + cancelVcsgLocation (36), + reset (37), + forwardCheckSS (38), + prepareGroupCall (39), + sendGroupCallEndSignal (40), + processGroupCallSignalling (41), + forwardGroupCallSignalling (42), + checkIMEI (43), + mt-forwardSM (44), + sendRoutingInfoForSM (45), + mo-forwardSM (46), + reportSM-DeliveryStatus (47), + noteSubscriberPresent (48), + alertServiceCentreWithoutResult (49), + activateTraceMode (50), + deactivateTraceMode (51), + traceSubscriberActivity (52), + updateVcsgLocation (53), + beginSubscriberActivity (54), + sendIdentification (55), + sendAuthenticationInfo (56), + restoreData (57), + sendIMSI (58), + processUnstructuredSS-Request (59), + unstructuredSS-Request (60), + unstructuredSS-Notify (61), + anyTimeSubscriptionInterrogation (62), + informServiceCentre (63), + alertServiceCentre (64), + anyTimeModification (65), + readyForSM (66), + purgeMS (67), + prepareHandover (68), + prepareSubsequentHandover (69), + provideSubscriberInfo (70), + anyTimeInterrogation (71), + ss-InvocationNotification (72), + setReportingState (73), + statusReport (74), + remoteUserFree (75), + registerCC-Entry (76), + eraseCC-Entry (77), + secureTransportClass1 (78), + secureTransportClass2 (79), + secureTransportClass3 (80), + secureTransportClass4 (81), + unAllocated (82), + provideSubscriberLocation (83), + sendGroupCallInfo (84), + sendRoutingInfoForLCS (85), + subscriberLocationReport (86), + ist-Alert (87), + ist-Command (88), + noteMM-Event (89), + unAllocated (90), + unAllocated (91), + unAllocated (92), + unAllocated (93), + unAllocated (94), + unAllocated (95), + unAllocated (96), + unAllocated (97), + unAllocated (98), + unAllocated (99), + unAllocated (100), + unAllocated (101), + unAllocated (102), + unAllocated (103), + unAllocated (104), + unAllocated (105), + unAllocated (106), + unAllocated (107), + unAllocated (108), + lcs-PeriodicLocationCancellation (109), + lcs-LocationUpdate (110), + lcs-PeriodicLocationRequest (111), + lcs-AreaEventCancellation (112), + lcs-AreaEventReport (113), + lcs-AreaEventRequest (114), + lcs-MOLR (115), + lcs-LocationNotification (116), + callDeflection (117), + userUserService (118), + accessRegisterCCEntry (119), + forwardCUG-Info (120), + splitMPTY (121), + retrieveMPTY (122), + holdMPTY(123), + buildMPTY (124), + forwardChargeAdvice(125), + explicitCT (126) + } + +OperationLocalvalue ::= GSMMAPOperationLocalvalue + +MAP-ERROR ::= CHOICE { + localValue LocalErrorcode, + globalValue OBJECT IDENTIFIER } + +GSMMAPLocalErrorcode ::= INTEGER{ + unknownSubscriber (1), + unknownBaseStation (2), + unknownMSC (3), + secureTransportError (4), + unidentifiedSubscriber (5), + absentSubscriberSM (6), + unknownEquipment (7), + roamingNotAllowed (8), + illegalSubscriber (9), + bearerServiceNotProvisioned (10), + teleserviceNotProvisioned (11), + illegalEquipment (12), + callBarred (13), + forwardingViolation (14), + cug-Reject (15), + illegalSS-Operation (16), + ss-ErrorStatus (17), + ss-NotAvailable (18), + ss-SubscriptionViolation (19), + ss-Incompatibility (20), + facilityNotSupported (21), + ongoingGroupCall (22), + invalidTargetBaseStation (23), + noRadioResourceAvailable (24), + noHandoverNumberAvailable (25), + subsequentHandoverFailure (26), + absentSubscriber (27), + incompatibleTerminal (28), + shortTermDenial (29), + longTermDenial (30), + subscriberBusyForMT-SMS (31), + sm-DeliveryFailure (32), + messageWaitingListFull (33), + systemFailure (34), + dataMissing (35), + unexpectedDataValue (36), + pw-RegistrationFailure (37), + negativePW-Check (38), + noRoamingNumberAvailable (39), + tracingBufferFull (40), + targetCellOutsideGroupCallArea (42), + numberOfPW-AttemptsViolation (43), + numberChanged (44), + busySubscriber (45), + noSubscriberReply (46), + forwardingFailed (47), + or-NotAllowed (48), + ati-NotAllowed (49), + noGroupCallNumberAvailable (50), + resourceLimitation (51), + unauthorizedRequestingNetwork (52), + unauthorizedLCSClient (53), + positionMethodFailure (54), + unknownOrUnreachableLCSClient (58), + mm-EventNotSupported (59), + atsi-NotAllowed (60), + atm-NotAllowed (61), + informationNotAvailable (62), + unknownAlphabet (71), + ussd-Busy (72) +} + +LocalErrorcode ::= GSMMAPLocalErrorcode + +-- PROBLEMS + +GeneralProblem ::= INTEGER { unrecognizedComponent (0), + mistypedComponent (1), + badlyStructuredComponent (2) } + +InvokeProblem ::= INTEGER { duplicateInvokeID (0), + unrecognizedOperation (1), + mistypedParameter (2), + resourceLimitation (3), + initiatingRelease (4), + unrecognizedLinkedID (5), + linkedResponseUnexpected (6), + unexpectedLinkedOperation (7) } + +ReturnResultProblem ::= INTEGER { unrecognizedInvokeID (0), + returnResultUnexpected (1), + mistypedParameter (2) } + +ReturnErrorProblem ::= INTEGER { unrecognizedInvokeID (0), + returnErrorUnexpected (1), + unrecognizedError (2), + unexpectedError (3), + mistypedParameter (4) } + + + +--END + +Bss-APDU ::= SEQUENCE { + protocolId ProtocolId, + signalInfo SignalInfo, + extensionContainer ExtensionContainer OPTIONAL, + ... } + +--provideSIWFSNumber OPERATION +-- ARGUMENT + +ProvideSIWFSNumberArg ::= SEQUENCE { + gsm-BearerCapability [0] ExternalSignalInfo, + isdn-BearerCapability [1] ExternalSignalInfo, + call-Direction [2] CallDirection, + b-Subscriber-Address [3] ISDN-AddressString, + chosenChannel [4] ExternalSignalInfo, + lowerLayerCompatibility [5] ExternalSignalInfo OPTIONAL, + highLayerCompatibility [6] ExternalSignalInfo OPTIONAL, + extensionContainer [7] ExtensionContainer OPTIONAL, +...} +-- RESULT +ProvideSIWFSNumberRes ::= SEQUENCE { + sIWFSNumber [0] ISDN-AddressString, + extensionContainer [1] ExtensionContainer OPTIONAL, +...} +-- ERRORS { +-- resourceLimitation localValue : 51, +-- dataMissing localValue : 35, +-- unexpectedDataValue localValue : 36, +-- systemFailure localValue : 34} +-- ::= localValue : 31 + +CallDirection ::= OCTET STRING (SIZE (1)) +-- OCTET 1 +-- bit 1 (direction of call) +-- 0 Mobile Originated Call (MOC) +-- 1 Mobile Terminated Call (MTC) + +PurgeMSArgV2 ::= SEQUENCE { + imsi IMSI, + vlr-Number ISDN-AddressString OPTIONAL, + ... } + +PrepareHO-ArgOld ::= SEQUENCE { + targetCellId GlobalCellId OPTIONAL, + ho-NumberNotRequired NULL OPTIONAL, + bss-APDU Bss-APDU OPTIONAL, + ... } + +PrepareHO-ResOld ::= SEQUENCE { + handoverNumber ISDN-AddressString OPTIONAL, + bss-APDU Bss-APDU OPTIONAL, + ... } + +SendAuthenticationInfoResOld ::= SEQUENCE ( SIZE( 1 .. 5 ) ) OF + SEQUENCE { + rand RAND, + sres SRES, + kc Kc, + ... } + +RAND ::= OCTET STRING (SIZE (16)) + +SRES ::= OCTET STRING (SIZE (4)) + +Kc ::= OCTET STRING (SIZE (8)) + +SendIdentificationResV2 ::= SEQUENCE { + imsi IMSI OPTIONAL, + tripletList TripletListold OPTIONAL, + ...} + +TripletListold ::= SEQUENCE SIZE (1..5) OF + AuthenticationTriplet-v2 + +AuthenticationTriplet-v2 ::= SEQUENCE { + rand RAND, + sres SRES, + kc Kc, + ...} + +--sIWFSSignallingModify OPERATION +-- ARGUMENT +SIWFSSignallingModifyArg ::= SEQUENCE { + channelType [0] ExternalSignalInfo OPTIONAL, + chosenChannel [1] ExternalSignalInfo OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, +...} +-- RESULT +SIWFSSignallingModifyRes ::= SEQUENCE { + channelType [0] ExternalSignalInfo OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ... } +-- ERRORS { +-- resourceLimitation localValue : 51, +-- dataMissing localValue : 35, +-- unexpectedDataValue localValue : 36, +-- systemFailure localValue : 34} +-- ::= localValue : 32 + +-- not used +-- Ccbs-Monitoring ::= ENUMERATED { +-- stopMonitoring ( 0 ), +-- startMonitoring ( 1 ), +-- ... } + +--setReportingState OPERATION +-- ARGUMENT + + + +NewPassword ::= NumericString (SIZE( 4 ) ) +-- ERRORS { +-- systemFailure localValue : 34, +-- dataMissing localValue : 35, +-- unexpectedDataValue localValue : 36, +-- callBarred localValue : 13, +-- ss-SubscriptionViolation localValue : 19, +-- pw-RegistrationFailure localValue : 37, +-- negativePW-Check localValue : 38, +-- numberOfPW-AttemptsViolation localValue : 43} +--LINKED { + -- getPassword localValue : 18} +-- ::= localValue : 17 + +--getPassword OPERATION +-- ARGUMENT +-- GetPasswordArg is GuidanceInfo +GetPasswordArg ::= ENUMERATED { + enterPW ( 0 ), + enterNewPW ( 1 ), + enterNewPW-Again ( 2 ) } +-- RESULT +CurrentPassword ::= NumericString (SIZE( 4 ) ) +-- ::= localValue : 18 + +--registerCC-Entry OPERATION +-- ARGUMENT + +SecureTransportArg ::= SEQUENCE { + securityHeader SecurityHeader, + protectedPayload ProtectedPayload OPTIONAL +} + +SecureTransportErrorParam ::= SEQUENCE { + securityHeader SecurityHeader, + protectedPayload ProtectedPayload OPTIONAL +} + +-- The protectedPayload carries the result of applying the security function +-- defined in 3GPP TS 33.200 to the encoding of the argument of the securely +-- transported operation + +SecureTransportRes ::= SEQUENCE { + securityHeader SecurityHeader, + protectedPayload ProtectedPayload OPTIONAL +} +-- The protectedPayload carries the result of applying the security function +-- defined in 3GPP TS 33.200 to the encoding of the result of the securely +-- transported operation + +SecurityHeader ::= SEQUENCE { + securityParametersIndex SecurityParametersIndex, + originalComponentIdentifier OriginalComponentIdentifier, + initialisationVector InitialisationVector OPTIONAL, +...} + +ProtectedPayload ::= OCTET STRING(SIZE(1.. 3438)) +-- In protection mode 0 (noProtection) the ProtectedPayload carries the transfer +-- syntax value of the component parameter identified by the +-- originalComponentIdentifier. +-- In protection mode 1 (integrityAuthenticity) the protectedPayload carries +-- the transfer syntax value of the component +-- parameter identified by the originalComponentIdentifier, followed by +-- the 32 bit integrity check value. +-- The integrity check value is the result of applying the hash algorithm +-- to the concatenation of the transfer syntax value of the SecurityHeader, +-- and the transfer syntax value of the component parameter. +-- In protection mode 2 (confidentialityIntegrityAuthenticity) the protected +-- payload carries the encrypted transfer syntax +-- value of the component parameter identified by the +-- originalComponentIdentifier, followed by the 32 bit integrity check value. +-- The integrity check value is the result of applying the hash algorithm +-- to the concatenation of the transfer syntax value of the SecurityHeader, +-- and the encrypted transfer syntax value of the component parameter. +-- See 33.200. +-- The length of the protectedPayload is adjusted according to the capabilities of +-- the lower protocol layers + +SecurityParametersIndex ::= OCTET STRING (SIZE(4)) + +InitialisationVector ::= OCTET STRING (SIZE(14)) +-- the internal structure is defined as follows: +-- Octets 1 to 4 : TVP. The TVP is a 32 bit time stamp. Its value is binary coded +-- and indicates the number of intervals of 100 milliseconds +-- elapsed since 1st January 2002, 0:00:00 UTC +-- Octets 5 to 10: NE-Id. The NE-Id uniquely identifies the sending network entity +-- within the PLMN. It is the entity's E.164 number without CC and +-- NDC. It is TBCD-coded, padded with zeros. +-- Octets 11 to 14: PROP. This 32 bit value is used to make the +-- InitialisationVector unique within the same TVP period. +-- The content is not standardized. + +OriginalComponentIdentifier ::= CHOICE { + operationCode [0] OperationCode, + errorCode [1] ErrorCode, + userInfo [2] NULL} + +OperationCode ::= CHOICE { + localValue INTEGER, + globalValue OBJECT IDENTIFIER} + +ErrorCode ::= CHOICE { + localValue INTEGER, + globalValue OBJECT IDENTIFIER} + + +--PLMN_Data +-- Alcatel Specific extension container +PlmnContainer ::= [PRIVATE 2] SEQUENCE { + msisdn [0] ISDN-AddressString OPTIONAL, + category [1] Category OPTIONAL, + basicService BasicServiceCode OPTIONAL, + operatorSS-Code [4] SEQUENCE ( SIZE( 1 .. 16 ) ) OF + OCTET STRING ( SIZE ( 1 ) ) OPTIONAL, + ... +} +Category ::= OCTET STRING (SIZE (1)) + -- The internal structure is defined in ITU-T Rec Q.763. + +-- Special stuff from older spec's +--ForwardSM OPERATION +-- ARGUMENT +ForwardSM-Arg ::= SEQUENCE { + sm-RP-DA SM-RP-DAold, + sm-RP-OA SM-RP-OAold, + sm-RP-UI SignalInfo, + moreMessagesToSend NULL OPTIONAL, + ... } +-- In fact, the 3GPP uses SignalInfo instead, but it is used for SMS content decoding +--Sm-RP-UI ::= OCTET STRING ( SIZE( 1 .. 200 ) ) +-- Must be locally defined as they are not exported from SM-datatypes +SM-RP-DAold ::= CHOICE { + imsi [0] IMSI, + lmsi [1] LMSI, + serviceCentreAddressDA [4] AddressString, + noSM-RP-DA [5] NULL} + +SM-RP-OAold ::= CHOICE { + msisdn [2] ISDN-AddressString, + serviceCentreAddressOA [4] AddressString, + noSM-RP-OA [5] NULL} + +-- Private extensions +accessType-id OBJECT IDENTIFIER ::= + {1 3 12 2 1107 3 66 1 1} + + --iso (1) + --identified-organization (3) + --ecma (12) + --member-company (2) + --siemens-units (1107) + --oen (3) + --mn (66) + --proprietary-extensions (1) + --accessType (1) + +accessTypeNotAllowed-id OBJECT IDENTIFIER ::= + {1 3 12 2 1107 3 66 1 2} + + --iso (1) + --identified-organization (3) + --ecma (12) + --member-company (2) + --siemens-units (1107) + --oen (3) + --mn (66) + --proprietary-extensions (1) + --accessTypeNotAllowed (2) + +SendRoutingInfoArgV2 ::= SEQUENCE { + msisdn [0] ISDN-AddressString, + cug-CheckInfo [1] CUG-CheckInfo OPTIONAL, +-- cug-CheckInfo must be absent in version 1 + numberOfForwarding [2] NumberOfForwarding OPTIONAL, + networkSignalInfo [10] ExternalSignalInfo OPTIONAL, + ... + } + +SendRoutingInfoResV2 ::= SEQUENCE { + imsi IMSI, + routingInfo RoutingInfo, + cug-CheckInfo CUG-CheckInfo OPTIONAL, +-- cug-CheckInfo must be absent in version 1 + ... + } + +-- Removed from SS-DataTypes.asn in Rel 9.0.0 +BeginSubscriberActivityArg ::= SEQUENCE { + imsi IMSI, + originatingEntityNumber ISDN-AddressString, + msisdn [PRIVATE 28] AddressString OPTIONAL, + ... } + +RoutingInfoForSM-ArgV1 ::= SEQUENCE { + msisdn [0] ISDN-AddressString, + sm-RP-PRI [1] BOOLEAN, + serviceCentreAddress [2] AddressString, + -- WS specific change to be backwards compatible with phase 1 (See Bug 9704) + cug-Interlock [3] CUG-Interlock OPTIONAL, + teleserviceCode [5] TeleserviceCode OPTIONAL, + -- END Ws specific change + --extensionContainer [6] ExtensionContainer OPTIONAL, + ... , + --gprsSupportIndicator [7] NULL OPTIONAL, + -- gprsSupportIndicator is set only if the SMS-GMSC supports + -- receiving of two numbers from the HLR + --sm-RP-MTI [8] SM-RP-MTI OPTIONAL, + --sm-RP-SMEA [9] SM-RP-SMEA OPTIONAL, + --sm-deliveryNotIntended [10] SM-DeliveryNotIntended OPTIONAL, + --ip-sm-gwGuidanceIndicator [11] NULL OPTIONAL, + imsi [12] IMSI OPTIONAL --, + --t4-Trigger-Indicator [14] NULL OPTIONAL, + --singleAttemptDelivery [13] NULL OPTIONAL, + --correlationID [15] CorrelationID OPTIONAL + } + +-- From ETS 300 599: December 2000 (GSM 09.02 version 4.19.1), clause 14.7.6 +RoutingInfoForSM-ResV2::= SEQUENCE { + imsi IMSI, + locationInfoWithLMSI [0] LocationInfoWithLMSIv2, + mwd-Set [2] BOOLEAN OPTIONAL, + -- mwd-Set must be absent in version greater 1 + ...} + +-- From ETS 300 599: December 2000 (GSM 09.02 version 4.19.1), clause 14.7.6 +LocationInfoWithLMSIv2 ::= SEQUENCE { + locationInfo LocationInfo, + lmsi LMSI OPTIONAL, + ...} + +-- From ETS 300 599: December 2000 (GSM 09.02 version 4.19.1), clause 14.7.6 +LocationInfo ::= CHOICE { + roamingNumber [0] ISDN-AddressString, + -- roamingNumber must not be used in version greater 1 + msc-Number [1] ISDN-AddressString} + +Ki ::= OCTET STRING (SIZE (16)) + +SendParametersArg ::= SEQUENCE { + subscriberId SubscriberId, + requestParameterList RequestParameterList} + +RequestParameter ::= ENUMERATED { + requestIMSI (0), + requestAuthenticationSet (1), + requestSubscriberData (2), + requestKi (4)} + +RequestParameterList ::= SEQUENCE SIZE (1..2) OF + RequestParameter + +SentParameter ::= CHOICE { + imsi [0] IMSI, + authenticationSet [1] AuthenticationSetListOld, + subscriberData [2] SubscriberData, + ki [4] Ki} + +AuthenticationSetListOld ::= CHOICE { + tripletList [0] TripletList, + quintupletList [1] QuintupletList } + +maxNumOfSentParameter INTEGER ::= 6 + -- This NamedValue corresponds to the maximum number of + -- authentication set which may be returned by a HLR plus 1 + +SentParameterList ::= SEQUENCE SIZE (1..maxNumOfSentParameter) OF + SentParameter + + +sendParameters OPERATION ::= { + ARGUMENT + SendParametersArg + RESULT + SentParameterList + -- optional + -- nothing is returned, if no requested parameter is + -- available or exists + ERRORS { + UnexpectedDataValue, + UnknownSubscriber, + UnidentifiedSubscriber} + CODE local:9 } + +ResetArgV1 ::= SEQUENCE { + networkResource NetworkResource OPTIONAL, + -- networkResource must be present in version 1 + -- networkResource must be absent in version greater 1 + hlr-Number ISDN-AddressString, + hlr-List HLR-List OPTIONAL, + ...} + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-ApplicationContexts.asn b/epan/dissectors/asn1/gsm_map/MAP-ApplicationContexts.asn new file mode 100644 index 00000000..5750dba1 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-ApplicationContexts.asn @@ -0,0 +1,204 @@ +--17.3.3 ASN.1 Module for application-context-names +--The following ASN.1 module summarises the application-context-name assigned to MAP application-contexts. +-- 3GPP TS 29.002 V15.5.0 (2019-06) + +MAP-ApplicationContexts { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ApplicationContexts (2) version18 (18)} + +DEFINITIONS + +::= + +BEGIN + + +-- EXPORTS everything + + +IMPORTS + gsm-NetworkId, + ac-Id +FROM MobileDomainDefinitions { + itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) + mobileDomainDefinitions (0) version1 (1)} +; + +-- application-context-names + +map-ac OBJECT IDENTIFIER ::= {gsm-NetworkId ac-Id} + +networkLocUpContext-v3 OBJECT IDENTIFIER ::= + {map-ac networkLocUp(1) version3(3)} + +locationCancellationContext-v3 OBJECT IDENTIFIER ::= + {map-ac locationCancel(2) version3(3)} + +roamingNumberEnquiryContext-v3 OBJECT IDENTIFIER ::= + {map-ac roamingNbEnquiry(3) version3(3)} + +authenticationFailureReportContext-v3 OBJECT IDENTIFIER ::= + {map-ac authenticationFailureReport(39) version3(3)} + +locationInfoRetrievalContext-v3 OBJECT IDENTIFIER ::= + {map-ac locInfoRetrieval(5) version3(3)} + +resetContext-v3 OBJECT IDENTIFIER ::= + {map-ac reset(10) version3(3)} + +handoverControlContext-v3 OBJECT IDENTIFIER ::= + {map-ac handoverControl(11) version3(3)} + +equipmentMngtContext-v3 OBJECT IDENTIFIER ::= + {map-ac equipmentMngt(13) version3(3)} + +infoRetrievalContext-v3 OBJECT IDENTIFIER ::= + {map-ac infoRetrieval(14) version3(3)} + +interVlrInfoRetrievalContext-v3 OBJECT IDENTIFIER ::= + {map-ac interVlrInfoRetrieval(15) version3(3)} + +subscriberDataMngtContext-v3 OBJECT IDENTIFIER ::= + {map-ac subscriberDataMngt(16) version3(3)} + +tracingContext-v3 OBJECT IDENTIFIER ::= + {map-ac tracing(17) version3(3)} + +networkFunctionalSsContext-v2 OBJECT IDENTIFIER ::= + {map-ac networkFunctionalSs(18) version2(2)} + +networkUnstructuredSsContext-v2 OBJECT IDENTIFIER ::= + {map-ac networkUnstructuredSs(19) version2(2)} + +shortMsgGatewayContext-v3 OBJECT IDENTIFIER ::= + {map-ac shortMsgGateway(20) version3(3)} + +shortMsgMO-RelayContext-v3 OBJECT IDENTIFIER ::= + {map-ac shortMsgMO-Relay(21) version3(3)} + +shortMsgAlertContext-v2 OBJECT IDENTIFIER ::= + {map-ac shortMsgAlert(23) version2(2)} + +mwdMngtContext-v3 OBJECT IDENTIFIER ::= + {map-ac mwdMngt(24) version3(3)} + +shortMsgMT-RelayContext-v3 OBJECT IDENTIFIER ::= + {map-ac shortMsgMT-Relay(25) version3(3)} + +shortMsgMT-Relay-VGCS-Context-v3 OBJECT IDENTIFIER ::= + {map-ac shortMsgMT-Relay-VGCS(41) version3(3)} + +imsiRetrievalContext-v2 OBJECT IDENTIFIER ::= + {map-ac imsiRetrieval(26) version2(2)} + +msPurgingContext-v3 OBJECT IDENTIFIER ::= + {map-ac msPurging(27) version3(3)} + +subscriberInfoEnquiryContext-v3 OBJECT IDENTIFIER ::= + {map-ac subscriberInfoEnquiry(28) version3(3)} + +anyTimeInfoEnquiryContext-v3 OBJECT IDENTIFIER ::= + {map-ac anyTimeInfoEnquiry(29) version3(3)} + +callControlTransferContext-v4 OBJECT IDENTIFIER ::= + {map-ac callControlTransfer(6) version4(4)} + +ss-InvocationNotificationContext-v3 OBJECT IDENTIFIER ::= + {map-ac ss-InvocationNotification(36) version3(3)} + +groupCallControlContext-v3 OBJECT IDENTIFIER ::= + {map-ac groupCallControl(31) version3(3)} + +groupCallInfoRetrievalContext-v3 OBJECT IDENTIFIER ::= + {map-ac groupCallInfoRetrieval(45) version3(3)} + +gprsLocationUpdateContext-v3 OBJECT IDENTIFIER ::= + {map-ac gprsLocationUpdate(32) version3(3)} + +gprsLocationInfoRetrievalContext-v4 OBJECT IDENTIFIER ::= + {map-ac gprsLocationInfoRetrieval(33) version4(4)} + +failureReportContext-v3 OBJECT IDENTIFIER ::= + {map-ac failureReport(34) version3(3)} + +gprsNotifyContext-v3 OBJECT IDENTIFIER ::= + {map-ac gprsNotify(35) version3(3)} + +reportingContext-v3 OBJECT IDENTIFIER ::= + {map-ac reporting(7) version3(3)} + +callCompletionContext-v3 OBJECT IDENTIFIER ::= + {map-ac callCompletion(8) version3(3)} + +istAlertingContext-v3 OBJECT IDENTIFIER ::= + {map-ac istAlerting(4) version3(3)} + +serviceTerminationContext-v3 OBJECT IDENTIFIER ::= + {map-ac immediateTermination(9) version3(3)} + +locationSvcGatewayContext-v3 OBJECT IDENTIFIER ::= + {map-ac locationSvcGateway(37) version3(3)} + +locationSvcEnquiryContext-v3 OBJECT IDENTIFIER ::= + {map-ac locationSvcEnquiry(38) version3(3)} + +mm-EventReportingContext-v3 OBJECT IDENTIFIER ::= + {map-ac mm-EventReporting(42) version3(3)} + +anyTimeInfoHandlingContext-v3 OBJECT IDENTIFIER ::= + {map-ac anyTimeInfoHandling(43) version3(3)} + +subscriberDataModificationNotificationContext-v3 OBJECT IDENTIFIER ::= + {map-ac subscriberDataModificationNotification(22) version3(3)} + +resourceManagementContext-v3 OBJECT IDENTIFIER ::= + {map-ac resourceManagement(44) version3(3)} + +vcsgLocationUpdateContext-v3 OBJECT IDENTIFIER ::= + {map-ac vcsgLocationUpdate(46) version3(3)} + +vcsgLocationCancellationContext-v3 OBJECT IDENTIFIER ::= + {map-ac vcsgLocationCancel(47) version3(3)} + + +-- The following Object Identifiers are reserved for application-contexts +-- existing in previous versions of the protocol + +-- AC Name & Version Object Identifier +-- +-- networkLocUpContext-v1 map-ac networkLocUp (1) version1 (1) +-- networkLocUpContext-v2 map-ac networkLocUp (1) version2 (2) +-- locationCancellationContext-v1 map-ac locationCancellation (2) version1 (1) +-- locationCancellationContext-v2 map-ac locationCancellation (2) version2 (2) +-- roamingNumberEnquiryContext-v1 map-ac roamingNumberEnquiry (3) version1 (1) +-- roamingNumberEnquiryContext-v2 map-ac roamingNumberEnquiry (3) version2 (2) +-- locationInfoRetrievalContext-v1 map-ac locationInfoRetrieval (5) version1 (1) +-- locationInfoRetrievalContext-v2 map-ac locationInfoRetrieval (5) version2 (2) +-- resetContext-v1 map-ac reset (10) version1 (1) +-- resetContext-v2 map-ac reset (10) version2 (2) +-- handoverControlContext-v1 map-ac handoverControl (11) version1 (1) +-- handoverControlContext-v2 map-ac handoverControl (11) version2 (2) +-- sIWFSAllocationContext-v3 map-ac sIWFSAllocation (12) version3 (3) +-- equipmentMngtContext-v1 map-ac equipmentMngt (13) version1 (1) +-- equipmentMngtContext-v2 map-ac equipmentMngt (13) version2 (2) +-- infoRetrievalContext-v1 map-ac infoRetrieval (14) version1 (1) +-- infoRetrievalContext-v2 map-ac infoRetrieval (14) version2 (2) +-- interVlrInfoRetrievalContext-v2 map-ac interVlrInfoRetrieval (15) version2 (2) +-- subscriberDataMngtContext-v1 map-ac subscriberDataMngt (16) version1 (1) +-- subscriberDataMngtContext-v2 map-ac subscriberDataMngt (16) version2 (2) +-- tracingContext-v1 map-ac tracing (17) version1 (1) +-- tracingContext-v2 map-ac tracing (17) version2 (2) +-- networkFunctionalSsContext-v1 map-ac networkFunctionalSs (18) version1 (1) +-- shortMsgGatewayContext-v1 map-ac shortMsgGateway (20) version1 (1) +-- shortMsgGatewayContext-v2 map-ac shortMsgGateway (20) version2 (2) +-- shortMsgRelayContext-v1 map-ac shortMsgRelay (21) version1 (1) +-- shortMsgAlertContext-v1 map-ac shortMsgAlert (23) version1 (1) +-- mwdMngtContext-v1 map-ac mwdMngt (24) version1 (1) +-- mwdMngtContext-v2 map-ac mwdMngt (24) version2 (2) +-- shortMsgMT-RelayContext-v2 map-ac shortMsgMT-Relay (25) version2 (2) +-- msPurgingContext-v2 map-ac msPurging (27) version2 (2) +-- callControlTransferContext-v3 map-ac callControlTransferContext (6) version3 (3) +-- gprsLocationInfoRetrievalContext-v3 map-ac gprsLocationInfoRetrievalContext (33) version3 (3) + + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-BS-Code.asn b/epan/dissectors/asn1/gsm_map/MAP-BS-Code.asn new file mode 100644 index 00000000..3f55e6d6 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-BS-Code.asn @@ -0,0 +1,129 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.7.10 Bearer Service Codes + +MAP-BS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-BS-Code (20) version20 (20)} + +DEFINITIONS + +::= + +BEGIN + +BearerServiceCode ::= OCTET STRING (SIZE (1)) + -- This type is used to represent the code identifying a single + -- bearer service, a group of bearer services, or all bearer + -- services. The services are defined in TS 3GPP TS 22.002 [3]. + -- The internal structure is defined as follows: + -- + -- plmn-specific bearer services: + -- bits 87654321: defined by the HPLMN operator + + -- rest of bearer services: + -- bit 8: 0 (unused) + -- bits 7654321: group (bits 7654), and rate, if applicable + -- (bits 321) + +Ext-BearerServiceCode ::= OCTET STRING (SIZE (1..5)) + -- This type is used to represent the code identifying a single + -- bearer service, a group of bearer services, or all bearer + -- services. The services are defined in TS 3GPP TS 22.002 [3]. + -- The internal structure is defined as follows: + -- + -- OCTET 1: + -- plmn-specific bearer services: + -- bits 87654321: defined by the HPLMN operator + -- + -- rest of bearer services: + -- bit 8: 0 (unused) + -- bits 7654321: group (bits 7654), and rate, if applicable + -- (bits 321) + + -- OCTETS 2-5: reserved for future use. If received the + -- Ext-TeleserviceCode shall be + -- treated according to the exception handling defined for the + -- operation that uses this type. + + + -- Ext-BearerServiceCode includes all values defined for BearerServiceCode. + +allBearerServices BearerServiceCode ::= '00000000'B + +allDataCDA-Services BearerServiceCode ::= '00010000'B +dataCDA-300bps BearerServiceCode ::= '00010001'B +dataCDA-1200bps BearerServiceCode ::= '00010010'B +dataCDA-1200-75bps BearerServiceCode ::= '00010011'B +dataCDA-2400bps BearerServiceCode ::= '00010100'B +dataCDA-4800bps BearerServiceCode ::= '00010101'B +dataCDA-9600bps BearerServiceCode ::= '00010110'B +general-dataCDA BearerServiceCode ::= '00010111'B + +allDataCDS-Services BearerServiceCode ::= '00011000'B +dataCDS-1200bps BearerServiceCode ::= '00011010'B +dataCDS-2400bps BearerServiceCode ::= '00011100'B +dataCDS-4800bps BearerServiceCode ::= '00011101'B +dataCDS-9600bps BearerServiceCode ::= '00011110'B +general-dataCDS BearerServiceCode ::= '00011111'B + +allPadAccessCA-Services BearerServiceCode ::= '00100000'B +padAccessCA-300bps BearerServiceCode ::= '00100001'B +padAccessCA-1200bps BearerServiceCode ::= '00100010'B +padAccessCA-1200-75bps BearerServiceCode ::= '00100011'B +padAccessCA-2400bps BearerServiceCode ::= '00100100'B +padAccessCA-4800bps BearerServiceCode ::= '00100101'B +padAccessCA-9600bps BearerServiceCode ::= '00100110'B +general-padAccessCA BearerServiceCode ::= '00100111'B + +allDataPDS-Services BearerServiceCode ::= '00101000'B +dataPDS-2400bps BearerServiceCode ::= '00101100'B +dataPDS-4800bps BearerServiceCode ::= '00101101'B +dataPDS-9600bps BearerServiceCode ::= '00101110'B +general-dataPDS BearerServiceCode ::= '00101111'B + +allAlternateSpeech-DataCDA BearerServiceCode ::= '00110000'B + +allAlternateSpeech-DataCDS BearerServiceCode ::= '00111000'B + +allSpeechFollowedByDataCDA BearerServiceCode ::= '01000000'B + +allSpeechFollowedByDataCDS BearerServiceCode ::= '01001000'B + +-- The following non-hierarchical Compound Bearer Service +-- Groups are defined in TS 3GPP TS 22.030: +allDataCircuitAsynchronous BearerServiceCode ::= '01010000'B + -- covers "allDataCDA-Services", "allAlternateSpeech-DataCDA" and + -- "allSpeechFollowedByDataCDA" +allAsynchronousServices BearerServiceCode ::= '01100000'B + -- covers "allDataCDA-Services", "allAlternateSpeech-DataCDA", + -- "allSpeechFollowedByDataCDA" and "allPadAccessCDA-Services" +allDataCircuitSynchronous BearerServiceCode ::= '01011000'B + -- covers "allDataCDS-Services", "allAlternateSpeech-DataCDS" and + -- "allSpeechFollowedByDataCDS" +allSynchronousServices BearerServiceCode ::= '01101000'B + -- covers "allDataCDS-Services", "allAlternateSpeech-DataCDS", + -- "allSpeechFollowedByDataCDS" and "allDataPDS-Services" +-- +-- Compound Bearer Service Group Codes are only used in call +-- independent supplementary service operations, i.e. they +-- are not used in InsertSubscriberData or in +-- DeleteSubscriberData messages. + +allPLMN-specificBS BearerServiceCode ::= '11010000'B +plmn-specificBS-1 BearerServiceCode ::= '11010001'B +plmn-specificBS-2 BearerServiceCode ::= '11010010'B +plmn-specificBS-3 BearerServiceCode ::= '11010011'B +plmn-specificBS-4 BearerServiceCode ::= '11010100'B +plmn-specificBS-5 BearerServiceCode ::= '11010101'B +plmn-specificBS-6 BearerServiceCode ::= '11010110'B +plmn-specificBS-7 BearerServiceCode ::= '11010111'B +plmn-specificBS-8 BearerServiceCode ::= '11011000'B +plmn-specificBS-9 BearerServiceCode ::= '11011001'B +plmn-specificBS-A BearerServiceCode ::= '11011010'B +plmn-specificBS-B BearerServiceCode ::= '11011011'B +plmn-specificBS-C BearerServiceCode ::= '11011100'B +plmn-specificBS-D BearerServiceCode ::= '11011101'B +plmn-specificBS-E BearerServiceCode ::= '11011110'B +plmn-specificBS-F BearerServiceCode ::= '11011111'B + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-CH-DataTypes.asn b/epan/dissectors/asn1/gsm_map/MAP-CH-DataTypes.asn new file mode 100644 index 00000000..414043ef --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-CH-DataTypes.asn @@ -0,0 +1,479 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.7.3 Call handling data types + +MAP-CH-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CH-DataTypes (13) version20 (20)} + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + +EXPORTS + SendRoutingInfoArg, + SendRoutingInfoRes, + ProvideRoamingNumberArg, + ProvideRoamingNumberRes, + ResumeCallHandlingArg, + ResumeCallHandlingRes, + NumberOfForwarding, + SuppressionOfAnnouncement, + CallReferenceNumber, + SetReportingStateArg, + SetReportingStateRes, + StatusReportArg, + StatusReportRes, + RemoteUserFreeArg, + RemoteUserFreeRes, + IST-AlertArg, + IST-AlertRes, + IST-CommandArg, +IST-CommandRes, +UU-Data, +ReleaseResourcesArg, +-- WS added exports needed by gsm_map.asn (extra asn1 file to handle older protocol versions) +RoutingInfo, +CUG-CheckInfo, +ReleaseResourcesRes +; + +IMPORTS + SubscriberInfo, + SupportedCamelPhases, + OfferedCamel4CSIs, + CUG-Interlock, + O-CSI, + D-CSI, + O-BcsmCamelTDPCriteriaList, + T-BCSM-CAMEL-TDP-CriteriaList, + IST-SupportIndicator, + IST-AlertTimerValue, + T-CSI, + NumberPortabilityStatus, + PagingArea +FROM MAP-MS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-MS-DataTypes (11) version20 (20)} + + ForwardingOptions, + SS-List, + CCBS-Feature +FROM MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-DataTypes (14) version20 (20)} + + ISDN-AddressString, + ISDN-SubaddressString, + FTN-AddressString, + ExternalSignalInfo, + Ext-ExternalSignalInfo, + IMSI, + LMSI, + Ext-BasicServiceCode, + AlertingPattern, + NAEA-PreferredCI, + EMLPP-Priority, + PLMN-Id +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version20 (20)} + + ExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version20 (20)} +; + + +CUG-CheckInfo ::= SEQUENCE { + cug-Interlock CUG-Interlock, + cug-OutgoingAccess NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +NumberOfForwarding ::= INTEGER (1..5) + +SendRoutingInfoArg ::= SEQUENCE { + msisdn [0] ISDN-AddressString, + cug-CheckInfo [1] CUG-CheckInfo OPTIONAL, + numberOfForwarding [2] NumberOfForwarding OPTIONAL, + interrogationType [3] InterrogationType, + or-Interrogation [4] NULL OPTIONAL, + or-Capability [5] OR-Phase OPTIONAL, + gmsc-OrGsmSCF-Address [6] ISDN-AddressString, + callReferenceNumber [7] CallReferenceNumber OPTIONAL, + forwardingReason [8] ForwardingReason OPTIONAL, + basicServiceGroup [9] Ext-BasicServiceCode OPTIONAL, + networkSignalInfo [10] ExternalSignalInfo OPTIONAL, + camelInfo [11] CamelInfo OPTIONAL, + suppressionOfAnnouncement [12] SuppressionOfAnnouncement OPTIONAL, + extensionContainer [13] ExtensionContainer OPTIONAL, + ..., + alertingPattern [14] AlertingPattern OPTIONAL, + ccbs-Call [15] NULL OPTIONAL, + supportedCCBS-Phase [16] SupportedCCBS-Phase OPTIONAL, + additionalSignalInfo [17] Ext-ExternalSignalInfo OPTIONAL, + istSupportIndicator [18] IST-SupportIndicator OPTIONAL, + pre-pagingSupported [19] NULL OPTIONAL, + callDiversionTreatmentIndicator [20] CallDiversionTreatmentIndicator OPTIONAL, + longFTN-Supported [21] NULL OPTIONAL, + suppress-VT-CSI [22] NULL OPTIONAL, + suppressIncomingCallBarring [23] NULL OPTIONAL, + gsmSCF-InitiatedCall [24] NULL OPTIONAL, + basicServiceGroup2 [25] Ext-BasicServiceCode OPTIONAL, + networkSignalInfo2 [26] ExternalSignalInfo OPTIONAL, + suppressMTSS [27] SuppressMTSS OPTIONAL, + mtRoamingRetrySupported [28] NULL OPTIONAL, + callPriority [29] EMLPP-Priority OPTIONAL + } + +SuppressionOfAnnouncement ::= NULL + +SuppressMTSS ::= BIT STRING { + suppressCUG (0), + suppressCCBS (1) } (SIZE (2..16)) + -- Other bits than listed above shall be discarded + +InterrogationType ::= ENUMERATED { + basicCall (0), + forwarding (1)} + +OR-Phase ::= INTEGER (1..127) + +CallReferenceNumber ::= OCTET STRING (SIZE (1..8)) + +ForwardingReason ::= ENUMERATED { + notReachable (0), + busy (1), + noReply (2)} + +SupportedCCBS-Phase ::= INTEGER (1..127) +-- exception handling: +-- Only value 1 is used. +-- Values in the ranges 2-127 are reserved for future use. +-- If received values 2-127 shall be mapped on to value 1. + +CallDiversionTreatmentIndicator ::= OCTET STRING (SIZE(1)) +-- callDiversionAllowed (xxxx xx01) +-- callDiversionNotAllowed (xxxx xx10) +-- network default is call diversion allowed + +SendRoutingInfoRes ::= [3] SEQUENCE { + imsi [9] IMSI OPTIONAL, + -- IMSI must be present if SendRoutingInfoRes is not segmented. + -- If the TC-Result-NL segmentation option is taken the IMSI must be + -- present in one segmented transmission of SendRoutingInfoRes. + extendedRoutingInfo ExtendedRoutingInfo OPTIONAL, + cug-CheckInfo [3] CUG-CheckInfo OPTIONAL, + cugSubscriptionFlag [6] NULL OPTIONAL, + subscriberInfo [7] SubscriberInfo OPTIONAL, + ss-List [1] SS-List OPTIONAL, + basicService [5] Ext-BasicServiceCode OPTIONAL, + forwardingInterrogationRequired [4] NULL OPTIONAL, + vmsc-Address [2] ISDN-AddressString OPTIONAL, + extensionContainer [0] ExtensionContainer OPTIONAL, + ... , + naea-PreferredCI [10] NAEA-PreferredCI OPTIONAL, + -- naea-PreferredCI is included at the discretion of the HLR operator. + ccbs-Indicators [11] CCBS-Indicators OPTIONAL, + msisdn [12] ISDN-AddressString OPTIONAL, + numberPortabilityStatus [13] NumberPortabilityStatus OPTIONAL, + istAlertTimer [14] IST-AlertTimerValue OPTIONAL, + supportedCamelPhasesInVMSC [15] SupportedCamelPhases OPTIONAL, + offeredCamel4CSIsInVMSC [16] OfferedCamel4CSIs OPTIONAL, + routingInfo2 [17] RoutingInfo OPTIONAL, + ss-List2 [18] SS-List OPTIONAL, + basicService2 [19] Ext-BasicServiceCode OPTIONAL, + allowedServices [20] AllowedServices OPTIONAL, + unavailabilityCause [21] UnavailabilityCause OPTIONAL, + releaseResourcesSupported [22] NULL OPTIONAL, + gsm-BearerCapability [23] ExternalSignalInfo OPTIONAL + } + +AllowedServices ::= BIT STRING { + firstServiceAllowed (0), + secondServiceAllowed (1) } (SIZE (2..8)) + -- firstService is the service indicated in the networkSignalInfo + -- secondService is the service indicated in the networkSignalInfo2 + -- Other bits than listed above shall be discarded + +UnavailabilityCause ::= ENUMERATED { + bearerServiceNotProvisioned (1), + teleserviceNotProvisioned (2), + absentSubscriber (3), + busySubscriber (4), + callBarred (5), + cug-Reject (6), + ...} + -- exception handling: + -- Reception of other values than the ones listed shall result in the service + -- being unavailable for that call. + +CCBS-Indicators ::= SEQUENCE { + ccbs-Possible [0] NULL OPTIONAL, + keepCCBS-CallIndicator [1] NULL OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ...} + +RoutingInfo ::= CHOICE { + roamingNumber ISDN-AddressString, + forwardingData ForwardingData} + +ForwardingData ::= SEQUENCE { + forwardedToNumber [5] ISDN-AddressString OPTIONAL, + -- When this datatype is sent from an HLR which supports CAMEL Phase 2 + -- to a GMSC which supports CAMEL Phase 2 the GMSC shall not check the + -- format of the number + forwardedToSubaddress [4] ISDN-SubaddressString OPTIONAL, + forwardingOptions [6] ForwardingOptions OPTIONAL, + extensionContainer [7] ExtensionContainer OPTIONAL, + ..., + longForwardedToNumber [8] FTN-AddressString OPTIONAL} + +ProvideRoamingNumberArg ::= SEQUENCE { + imsi [0] IMSI, + msc-Number [1] ISDN-AddressString, + msisdn [2] ISDN-AddressString OPTIONAL, + lmsi [4] LMSI OPTIONAL, + gsm-BearerCapability [5] ExternalSignalInfo OPTIONAL, + networkSignalInfo [6] ExternalSignalInfo OPTIONAL, + suppressionOfAnnouncement [7] SuppressionOfAnnouncement OPTIONAL, + gmsc-Address [8] ISDN-AddressString OPTIONAL, + callReferenceNumber [9] CallReferenceNumber OPTIONAL, + or-Interrogation [10] NULL OPTIONAL, + extensionContainer [11] ExtensionContainer OPTIONAL, + ... , + alertingPattern [12] AlertingPattern OPTIONAL, + ccbs-Call [13] NULL OPTIONAL, + supportedCamelPhasesInInterrogatingNode [15] SupportedCamelPhases OPTIONAL, + additionalSignalInfo [14] Ext-ExternalSignalInfo OPTIONAL, + orNotSupportedInGMSC [16] NULL OPTIONAL, + pre-pagingSupported [17] NULL OPTIONAL, + longFTN-Supported [18] NULL OPTIONAL, + suppress-VT-CSI [19] NULL OPTIONAL, + offeredCamel4CSIsInInterrogatingNode [20] OfferedCamel4CSIs OPTIONAL, + mtRoamingRetrySupported [21] NULL OPTIONAL, + pagingArea [22] PagingArea OPTIONAL, + callPriority [23] EMLPP-Priority OPTIONAL, + mtrf-Indicator [24] NULL OPTIONAL, + oldMSC-Number [25] ISDN-AddressString OPTIONAL, + lastUsedLtePLMN-Id [26] PLMN-Id OPTIONAL + } + +ProvideRoamingNumberRes ::= SEQUENCE { + roamingNumber ISDN-AddressString, + extensionContainer ExtensionContainer OPTIONAL, + ..., + releaseResourcesSupported NULL OPTIONAL, + vmsc-Address ISDN-AddressString OPTIONAL } + +ResumeCallHandlingArg ::= SEQUENCE { + callReferenceNumber [0] CallReferenceNumber OPTIONAL, + basicServiceGroup [1] Ext-BasicServiceCode OPTIONAL, + forwardingData [2] ForwardingData OPTIONAL, + imsi [3] IMSI OPTIONAL, + cug-CheckInfo [4] CUG-CheckInfo OPTIONAL, + o-CSI [5] O-CSI OPTIONAL, + extensionContainer [7] ExtensionContainer OPTIONAL, + ccbs-Possible [8] NULL OPTIONAL, + msisdn [9] ISDN-AddressString OPTIONAL, + uu-Data [10] UU-Data OPTIONAL, + allInformationSent [11] NULL OPTIONAL, + ..., + d-csi [12] D-CSI OPTIONAL, + o-BcsmCamelTDPCriteriaList [13] O-BcsmCamelTDPCriteriaList OPTIONAL, + basicServiceGroup2 [14] Ext-BasicServiceCode OPTIONAL, + mtRoamingRetry [15] NULL OPTIONAL + } + +UU-Data ::= SEQUENCE { + uuIndicator [0] UUIndicator OPTIONAL, + uui [1] UUI OPTIONAL, + uusCFInteraction [2] NULL OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +UUIndicator ::= OCTET STRING (SIZE (1)) + -- Octets are coded according to ETS 300 356 + +UUI ::= OCTET STRING (SIZE (1..131)) + -- Octets are coded according to ETS 300 356 + +ResumeCallHandlingRes ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +CamelInfo ::= SEQUENCE { + supportedCamelPhases SupportedCamelPhases, + suppress-T-CSI NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ... , + offeredCamel4CSIs [0] OfferedCamel4CSIs OPTIONAL } + +ExtendedRoutingInfo ::= CHOICE { + routingInfo RoutingInfo, + camelRoutingInfo [8] CamelRoutingInfo} + +CamelRoutingInfo ::= SEQUENCE { + forwardingData ForwardingData OPTIONAL, + gmscCamelSubscriptionInfo [0] GmscCamelSubscriptionInfo, + extensionContainer [1] ExtensionContainer OPTIONAL, + ...} + +GmscCamelSubscriptionInfo ::= SEQUENCE { + t-CSI [0] T-CSI OPTIONAL, + o-CSI [1] O-CSI OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ..., + o-BcsmCamelTDP-CriteriaList [3] O-BcsmCamelTDPCriteriaList OPTIONAL, + t-BCSM-CAMEL-TDP-CriteriaList [4] T-BCSM-CAMEL-TDP-CriteriaList OPTIONAL, + d-csi [5] D-CSI OPTIONAL} + +SetReportingStateArg ::= SEQUENCE { + imsi [0] IMSI OPTIONAL, + lmsi [1] LMSI OPTIONAL, + ccbs-Monitoring [2] ReportingState OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +ReportingState ::= ENUMERATED { + stopMonitoring (0), + startMonitoring (1), + ...} + -- exception handling: + -- reception of values 2-10 shall be mapped to 'stopMonitoring' + -- reception of values > 10 shall be mapped to 'startMonitoring' + +SetReportingStateRes ::= SEQUENCE{ + ccbs-SubscriberStatus [0] CCBS-SubscriberStatus OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ...} + +CCBS-SubscriberStatus ::= ENUMERATED { + ccbsNotIdle (0), + ccbsIdle (1), + ccbsNotReachable (2), + ...} + -- exception handling: + -- reception of values 3-10 shall be mapped to 'ccbsNotIdle' + -- reception of values 11-20 shall be mapped to 'ccbsIdle' + -- reception of values > 20 shall be mapped to 'ccbsNotReachable' + +StatusReportArg ::= SEQUENCE{ + imsi [0] IMSI, + eventReportData [1] EventReportData OPTIONAL, + callReportdata [2] CallReportData OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +EventReportData ::= SEQUENCE{ + ccbs-SubscriberStatus [0] CCBS-SubscriberStatus OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ...} + +CallReportData ::= SEQUENCE{ + monitoringMode [0] MonitoringMode OPTIONAL, + callOutcome [1] CallOutcome OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ...} + +MonitoringMode ::= ENUMERATED { + a-side (0), + b-side (1), + ...} + -- exception handling: + -- reception of values 2-10 shall be mapped 'a-side' + -- reception of values > 10 shall be mapped to 'b-side' + +CallOutcome ::= ENUMERATED { + success (0), + failure (1), + busy (2), + ...} + -- exception handling: + -- reception of values 3-10 shall be mapped to 'success' + -- reception of values 11-20 shall be mapped to 'failure' + -- reception of values > 20 shall be mapped to 'busy' + +StatusReportRes ::= SEQUENCE { + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +RemoteUserFreeArg ::= SEQUENCE{ + imsi [0] IMSI, + callInfo [1] ExternalSignalInfo, + ccbs-Feature [2] CCBS-Feature, + translatedB-Number [3] ISDN-AddressString, + replaceB-Number [4] NULL OPTIONAL, + alertingPattern [5] AlertingPattern OPTIONAL, + extensionContainer [6] ExtensionContainer OPTIONAL, + ...} + +RemoteUserFreeRes ::= SEQUENCE{ + ruf-Outcome [0] RUF-Outcome, + extensionContainer [1] ExtensionContainer OPTIONAL, + ...} + +RUF-Outcome ::= ENUMERATED{ + accepted (0), + rejected (1), + noResponseFromFreeMS (2), -- T4 Expiry + noResponseFromBusyMS (3), -- T10 Expiry + udubFromFreeMS (4), + udubFromBusyMS (5), + ...} + -- exception handling: + -- reception of values 6-20 shall be mapped to 'accepted' + -- reception of values 21-30 shall be mapped to 'rejected' + -- reception of values 31-40 shall be mapped to 'noResponseFromFreeMS' + -- reception of values 41-50 shall be mapped to 'noResponseFromBusyMS' + -- reception of values 51-60 shall be mapped to 'udubFromFreeMS' + -- reception of values > 60 shall be mapped to 'udubFromBusyMS' + +IST-AlertArg ::= SEQUENCE{ + imsi [0] IMSI, + extensionContainer [1] ExtensionContainer OPTIONAL, + ...} + +IST-AlertRes ::= SEQUENCE{ + istAlertTimer [0] IST-AlertTimerValue OPTIONAL, + istInformationWithdraw [1] NULL OPTIONAL, + callTerminationIndicator [2] CallTerminationIndicator OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +IST-CommandArg ::= SEQUENCE{ + imsi [0] IMSI, + extensionContainer [1] ExtensionContainer OPTIONAL, + ...} + +IST-CommandRes ::= SEQUENCE{ + extensionContainer ExtensionContainer OPTIONAL, + ...} + +CallTerminationIndicator ::= ENUMERATED { + terminateCallActivityReferred (0), + terminateAllCallActivities (1), + ...} + -- exception handling: + -- reception of values 2-10 shall be mapped to ' terminateCallActivityReferred ' + -- reception of values > 10 shall be mapped to ' terminateAllCallActivities ' + + -- In MSCs not supporting linkage of all call activities, any value received shall + -- be interpreted as ' terminateCallActivityReferred ' + +ReleaseResourcesArg ::= SEQUENCE{ + msrn ISDN-AddressString, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +ReleaseResourcesRes ::= SEQUENCE{ + extensionContainer ExtensionContainer OPTIONAL, + ...} + + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-CallHandlingOperations.asn b/epan/dissectors/asn1/gsm_map/MAP-CallHandlingOperations.asn new file mode 100644 index 00000000..ba09a9d4 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-CallHandlingOperations.asn @@ -0,0 +1,214 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +--17.6.3 Call Handling Operations +MAP-CallHandlingOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CallHandlingOperations (7) + version20 (20)} + +DEFINITIONS + +::= + +BEGIN + +EXPORTS + sendRoutingInfo, + provideRoamingNumber, + resumeCallHandling, + setReportingState, + statusReport, + remoteUserFree, + ist-Alert, + ist-Command, + releaseResources +; + +IMPORTS + OPERATION +FROM Remote-Operations-Information-Objects { +joint-iso-itu-t remote-operations(4) + informationObjects(5) version1(0)} + + systemFailure, + dataMissing, + unexpectedDataValue, + facilityNotSupported, + or-NotAllowed, + unknownSubscriber, + numberChanged, + bearerServiceNotProvisioned, + teleserviceNotProvisioned, + noRoamingNumberAvailable, + absentSubscriber, + busySubscriber, + noSubscriberReply, + callBarred, + forwardingViolation, + forwardingFailed, + cug-Reject, + resourceLimitation, + incompatibleTerminal, + unidentifiedSubscriber + +FROM MAP-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-Errors (10) version20 (20)} + SendRoutingInfoArg, + SendRoutingInfoRes, + ProvideRoamingNumberArg, + ProvideRoamingNumberRes, + ResumeCallHandlingArg, + ResumeCallHandlingRes, + SetReportingStateArg, + SetReportingStateRes, + StatusReportArg, + StatusReportRes, + RemoteUserFreeArg, + RemoteUserFreeRes, + IST-AlertArg, + IST-AlertRes, + IST-CommandArg, + IST-CommandRes, + ReleaseResourcesArg, + ReleaseResourcesRes +FROM MAP-CH-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CH-DataTypes (13) version20 (20)} + +; + +sendRoutingInfo OPERATION ::= { --Timer m +-- The timer is set to the upper limit of the range if the GMSC supports pre-paging. + ARGUMENT + SendRoutingInfoArg + RESULT + SendRoutingInfoRes + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + facilityNotSupported | + or-NotAllowed | + unknownSubscriber | + numberChanged | + bearerServiceNotProvisioned | + teleserviceNotProvisioned | + absentSubscriber | + busySubscriber | + noSubscriberReply | + callBarred | + cug-Reject | + forwardingViolation} + CODE local:22 } + +provideRoamingNumber OPERATION ::= { --Timer m +-- The timer is set to the upper limit of the range if the HLR supports pre-paging. + ARGUMENT + ProvideRoamingNumberArg + RESULT + ProvideRoamingNumberRes + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + facilityNotSupported | + or-NotAllowed | + absentSubscriber | + noRoamingNumberAvailable} + CODE local:4 } + +resumeCallHandling OPERATION ::= { --Timer m + ARGUMENT + ResumeCallHandlingArg + RESULT + ResumeCallHandlingRes + -- optional + ERRORS { + forwardingFailed | + or-NotAllowed | + unexpectedDataValue | + dataMissing } + CODE local:6 } + +setReportingState OPERATION ::= { --Timer m + ARGUMENT + SetReportingStateArg + RESULT + SetReportingStateRes + -- optional + ERRORS { + systemFailure | + unidentifiedSubscriber | + unexpectedDataValue | + dataMissing | + resourceLimitation | + facilityNotSupported} + CODE local:73 } + +statusReport OPERATION ::= { --Timer m + ARGUMENT + StatusReportArg + RESULT + StatusReportRes + -- optional + ERRORS { + unknownSubscriber | + systemFailure | + unexpectedDataValue | + dataMissing} + CODE local:74 } + +remoteUserFree OPERATION ::= { --Timer ml + ARGUMENT + RemoteUserFreeArg + RESULT + RemoteUserFreeRes + ERRORS { + unexpectedDataValue | + dataMissing | + incompatibleTerminal | + absentSubscriber | + systemFailure | + busySubscriber} + CODE local:75 } + +ist-Alert OPERATION ::= { --Timer m + ARGUMENT + IST-AlertArg + RESULT + IST-AlertRes + -- optional + ERRORS { + unexpectedDataValue | + resourceLimitation | + unknownSubscriber | + systemFailure | + facilityNotSupported} + CODE local:87 } + +ist-Command OPERATION::= { --Timer m + ARGUMENT + IST-CommandArg + RESULT + IST-CommandRes + -- optional + ERRORS { + unexpectedDataValue | + resourceLimitation | + unknownSubscriber | + systemFailure | + facilityNotSupported} + CODE local:88 } + +releaseResources OPERATION::= { --Timer m + ARGUMENT + ReleaseResourcesArg + RESULT + ReleaseResourcesRes + -- optional + ERRORS { + unexpectedDataValue | + systemFailure } + CODE local:20 } + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-CommonDataTypes.asn b/epan/dissectors/asn1/gsm_map/MAP-CommonDataTypes.asn new file mode 100644 index 00000000..768f4172 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-CommonDataTypes.asn @@ -0,0 +1,673 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.7.8 Common data types + +MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version20 (20)} + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + +EXPORTS + + -- general data types and values + AddressString, + ISDN-AddressString, + maxISDN-AddressLength, + FTN-AddressString, + ISDN-SubaddressString, + ExternalSignalInfo, + Ext-ExternalSignalInfo, +AccessNetworkSignalInfo, + SignalInfo, + maxSignalInfoLength, + AlertingPattern, + TBCD-STRING, + DiameterIdentity, + Time, + HLR-Id, + + -- data types for numbering and identification + IMSI, + TMSI, + Identity, + SubscriberId, + IMEI, + HLR-List, + LMSI, + GlobalCellId, + NetworkResource, + AdditionalNetworkResource, + NAEA-PreferredCI, + NAEA-CIC, + ASCI-CallReference, + SubscriberIdentity, + PLMN-Id, + E-UTRAN-CGI, + NR-CGI, + TA-Id, + NR-TA-Id, + RAIdentity, + NetworkNodeDiameterAddress, + + -- data types for CAMEL + CellGlobalIdOrServiceAreaIdOrLAI, + CellGlobalIdOrServiceAreaIdFixedLength, + LAIFixedLength, + + -- data types for subscriber management + BasicServiceCode, + Ext-BasicServiceCode, + EMLPP-Info, + EMLPP-Priority, + MC-SS-Info, + MaxMC-Bearers, + MC-Bearers, + Ext-SS-Status, + + -- data types for geographic location + AgeOfLocationInformation, + LCSClientExternalID, + LCSClientInternalID, + LCSServiceTypeID, +-- WS added exports needed by gsm_map.asn (extra asn1 file to handle older protocol versions) + ProtocolId, + -- gprs location registration types + GSN-Address + +; + +IMPORTS + TeleserviceCode, + Ext-TeleserviceCode +FROM MAP-TS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-TS-Code (19) version20 (20)} + + BearerServiceCode, + Ext-BearerServiceCode +FROM MAP-BS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-BS-Code (20) version20 (20)} + + SS-Code +FROM MAP-SS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-Code (15) version20 (20)} + + ExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version20 (20)} +; + + +-- general data types + +TBCD-STRING ::= OCTET STRING + -- This type (Telephony Binary Coded Decimal String) is used to + -- represent several digits from 0 through 9, *, #, a, b, c, two + -- digits per octet, each digit encoded 0000 to 1001 (0 to 9), + -- 1010 (*), 1011 (#), 1100 (a), 1101 (b) or 1110 (c); 1111 used + -- as filler when there is an odd number of digits. + + -- bits 8765 of octet n encoding digit 2n + -- bits 4321 of octet n encoding digit 2(n-1) +1 + +DiameterIdentity ::= OCTET STRING (SIZE(9..255)) +-- content of DiameterIdentity is defined in IETF RFC 3588 [139] + +AddressString ::= OCTET STRING (SIZE (1..maxAddressLength)) + -- This type is used to represent a number for addressing + -- purposes. It is composed of + -- a) one octet for nature of address, and numbering plan + -- indicator. + -- b) digits of an address encoded as TBCD-String. + + -- a) The first octet includes a one bit extension indicator, a + -- 3 bits nature of address indicator and a 4 bits numbering + -- plan indicator, encoded as follows: + + -- bit 8: 1 (no extension) + + -- bits 765: nature of address indicator + -- 000 unknown + -- 001 international number + -- 010 national significant number + -- 011 network specific number + -- 100 subscriber number + -- 101 reserved + -- 110 abbreviated number + -- 111 reserved for extension + + -- bits 4321: numbering plan indicator + -- 0000 unknown + -- 0001 ISDN/Telephony Numbering Plan (Rec ITU-T E.164) + -- 0010 spare + -- 0011 data numbering plan (ITU-T Rec X.121) + -- 0100 telex numbering plan (ITU-T Rec F.69) + -- 0101 spare + -- 0110 land mobile numbering plan (ITU-T Rec E.212) + -- 0111 spare + -- 1000 national numbering plan + -- 1001 private numbering plan + -- 1111 reserved for extension + + -- all other values are reserved. + + -- b) The following octets representing digits of an address + -- encoded as a TBCD-STRING. + +maxAddressLength INTEGER ::= 20 + +ISDN-AddressString ::= + AddressString (SIZE (1..maxISDN-AddressLength)) + -- This type is used to represent ISDN numbers. + +maxISDN-AddressLength INTEGER ::= 9 + +FTN-AddressString ::= + AddressString (SIZE (1..maxFTN-AddressLength)) + -- This type is used to represent forwarded-to numbers. + -- If NAI = international the first digits represent the country code (CC) + -- and the network destination code (NDC) as for E.164. + +maxFTN-AddressLength INTEGER ::= 15 + +ISDN-SubaddressString ::= + OCTET STRING (SIZE (1..maxISDN-SubaddressLength)) + -- This type is used to represent ISDN subaddresses. + -- It is composed of + -- a) one octet for type of subaddress and odd/even indicator. + -- b) 20 octets for subaddress information. + + -- a) The first octet includes a one bit extension indicator, a + -- 3 bits type of subaddress and a one bit odd/even indicator, + -- encoded as follows: + + -- bit 8: 1 (no extension) + + -- bits 765: type of subaddress + -- 000 NSAP (X.213/ISO 8348 AD2) + -- 010 User Specified + -- All other values are reserved + + -- bit 4: odd/even indicator + -- 0 even number of address signals + -- 1 odd number of address signals + -- The odd/even indicator is used when the type of subaddress + -- is "user specified" and the coding is BCD. + + -- bits 321: 000 (unused) + + -- b) Subaddress information. + -- The NSAP X.213/ISO8348AD2 address shall be formatted as specified + -- by octet 4 which contains the Authority and Format Identifier + -- (AFI). The encoding is made according to the "preferred binary + -- encoding" as defined in X.213/ISO834AD2. For the definition + -- of this type of subaddress, see ITU-T Rec I.334. + + -- For User-specific subaddress, this field is encoded according + -- to the user specification, subject to a maximum length of 20 + -- octets. When interworking with X.25 networks BCD coding should + -- be applied. + +maxISDN-SubaddressLength INTEGER ::= 21 + +ExternalSignalInfo ::= SEQUENCE { + protocolId ProtocolId, + signalInfo SignalInfo, + -- Information about the internal structure is given in + -- clause 7.6.9. + extensionContainer ExtensionContainer OPTIONAL, + -- extensionContainer must not be used in version 2 + ...} + +SignalInfo ::= OCTET STRING (SIZE (1..maxSignalInfoLength)) + +maxSignalInfoLength INTEGER ::= 200 + -- This NamedValue represents the theoretical maximum number of octets which is + -- available to carry a single instance of the SignalInfo data type, + -- without requiring segmentation to cope with the network layer service. + -- However, the actual maximum size available for an instance of the data + -- type may be lower, especially when other information elements + -- have to be included in the same component. + +ProtocolId ::= ENUMERATED { + gsm-0408 (1), + gsm-0806 (2), + gsm-BSSMAP (3), + -- Value 3 is reserved and must not be used + ets-300102-1 (4)} + +Ext-ExternalSignalInfo ::= SEQUENCE { + ext-ProtocolId Ext-ProtocolId, + signalInfo SignalInfo, + -- Information about the internal structure is given in + -- clause 7.6.9.10 + extensionContainer ExtensionContainer OPTIONAL, + ...} + +Ext-ProtocolId ::= ENUMERATED { + ets-300356 (1), + ... + } +-- exception handling: +-- For Ext-ExternalSignalInfo sequences containing this parameter with any +-- other value than the ones listed the receiver shall ignore the whole +-- Ext-ExternalSignalInfo sequence. + +AccessNetworkSignalInfo ::= SEQUENCE { + accessNetworkProtocolId AccessNetworkProtocolId, + signalInfo LongSignalInfo, + -- Information about the internal structure is given in clause 7.6.9.1 + + extensionContainer ExtensionContainer OPTIONAL, + ...} + +LongSignalInfo ::= OCTET STRING (SIZE (1..maxLongSignalInfoLength)) + +maxLongSignalInfoLength INTEGER ::= 2560 + -- This Named Value represents the maximum number of octets which is available + -- to carry a single instance of the LongSignalInfo data type using + -- White Book SCCP with the maximum number of segments. + -- It takes account of the octets used by the lower layers of the protocol, and + -- other information elements which may be included in the same component. + +AccessNetworkProtocolId ::= ENUMERATED { + ts3G-48006 (1), + ts3G-25413 (2), + ...} + -- exception handling: + -- For AccessNetworkSignalInfo sequences containing this parameter with any + -- other value than the ones listed the receiver shall ignore the whole + -- AccessNetworkSignalInfo sequence. + +AlertingPattern ::= OCTET STRING (SIZE (1) ) + -- This type is used to represent Alerting Pattern + + -- bits 8765 : 0000 (unused) + + -- bits 43 : type of Pattern + -- 00 level + -- 01 category + -- 10 category + -- all other values are reserved. + + -- bits 21 : type of alerting + +alertingLevel-0 AlertingPattern ::= '00000000'B +alertingLevel-1 AlertingPattern ::= '00000001'B +alertingLevel-2 AlertingPattern ::= '00000010'B + -- all other values of Alerting level are reserved + -- Alerting Levels are defined in GSM 02.07 + +alertingCategory-1 AlertingPattern ::= '00000100'B +alertingCategory-2 AlertingPattern ::= '00000101'B +alertingCategory-3 AlertingPattern ::= '00000110'B +alertingCategory-4 AlertingPattern ::= '00000111'B +alertingCategory-5 AlertingPattern ::= '00001000'B + -- all other values of Alerting Category are reserved + -- Alerting categories are defined in GSM 02.07 + +GSN-Address ::= OCTET STRING (SIZE (5..17)) + -- Octets are coded according to TS 3GPP TS 23.003 [17] + +Time ::= OCTET STRING (SIZE (4)) + -- Octets are coded according to IETF RFC 3588 [139] + + +-- data types for numbering and identification + +IMSI ::= TBCD-STRING (SIZE (3..8)) + -- digits of MCC, MNC, MSIN are concatenated in this order. + +Identity ::= CHOICE { + imsi IMSI, + imsi-WithLMSI IMSI-WithLMSI} + +IMSI-WithLMSI ::= SEQUENCE { + imsi IMSI, + lmsi LMSI, + -- a special value 00000000 indicates that the LMSI is not in use + ...} + +ASCI-CallReference ::= TBCD-STRING (SIZE (1..8)) + -- digits of VGCS/VBS-area,Group-ID are concatenated in this order if there is a + -- VGCS/VBS-area. + +TMSI ::= OCTET STRING (SIZE (1..4)) + +SubscriberId ::= CHOICE { + imsi [0] IMSI, + tmsi [1] TMSI} + +IMEI ::= TBCD-STRING (SIZE (8)) + -- Refers to International Mobile Station Equipment Identity + -- and Software Version Number (SVN) defined in TS 3GPP TS 23.003 [17]. + -- If the SVN is not present the last octet shall contain the + -- digit 0 and a filler. + -- If present the SVN shall be included in the last octet. + +HLR-Id ::= IMSI + -- leading digits of IMSI, i.e. (MCC, MNC, leading digits of + -- MSIN) forming HLR Id defined in TS 3GPP TS 23.003 [17]. + +HLR-List ::= SEQUENCE SIZE (1..maxNumOfHLR-Id) OF + HLR-Id + +maxNumOfHLR-Id INTEGER ::= 50 + +LMSI ::= OCTET STRING (SIZE (4)) + +GlobalCellId ::= OCTET STRING (SIZE (5..7)) + -- Refers to Cell Global Identification defined in TS 3GPP TS 23.003 [17]. + -- The internal structure is defined as follows: + -- octet 1 bits 4321 Mobile Country Code 1st digit + -- bits 8765 Mobile Country Code 2nd digit + -- octet 2 bits 4321 Mobile Country Code 3rd digit + -- bits 8765 Mobile Network Code 3rd digit + -- or filler (1111) for 2 digit MNCs + -- octet 3 bits 4321 Mobile Network Code 1st digit + -- bits 8765 Mobile Network Code 2nd digit + -- octets 4 and 5 Location Area Code according to TS 3GPP TS 24.008 [35] + -- octets 6 and 7 Cell Identity (CI) according to TS 3GPP TS 24.008 [35] + +NetworkResource ::= ENUMERATED { + plmn (0), + hlr (1), + vlr (2), + pvlr (3), + controllingMSC (4), + vmsc (5), + eir (6), + rss (7)} + +AdditionalNetworkResource ::= ENUMERATED { + sgsn (0), + ggsn (1), + gmlc (2), + gsmSCF (3), + nplr (4), + auc (5), + ... , + ue (6), + mme (7)} + -- if unknown value is received in AdditionalNetworkResource + -- it shall be ignored. + + +NAEA-PreferredCI ::= SEQUENCE { + naea-PreferredCIC [0] NAEA-CIC, + extensionContainer [1] ExtensionContainer OPTIONAL, + ...} + +NAEA-CIC ::= OCTET STRING (SIZE (3)) + -- The internal structure is defined by the Carrier Identification + -- parameter in ANSI T1.113.3. Carrier codes between "000" and "999" may + -- be encoded as 3 digits using "000" to "999" or as 4 digits using + -- "0000" to "0999". Carrier codes between "1000" and "9999" are encoded + -- using 4 digits. + +SubscriberIdentity ::= CHOICE { + imsi [0] IMSI, + msisdn [1] ISDN-AddressString + } + +LCSClientExternalID ::= SEQUENCE { + externalAddress [0] ISDN-AddressString OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ... } + +LCSClientInternalID ::= ENUMERATED { + broadcastService (0), + o-andM-HPLMN (1), + o-andM-VPLMN (2), + anonymousLocation (3), + targetMSsubscribedService (4), + ... } +-- for a CAMEL phase 3 PLMN operator client, the value targetMSsubscribedService shall be used + +LCSServiceTypeID ::= INTEGER (0..127) + -- the integer values 0-63 are reserved for Standard LCS service types + -- the integer values 64-127 are reserved for Non Standard LCS service types + +-- Standard LCS Service Types +emergencyServices LCSServiceTypeID ::= 0 +emergencyAlertServices LCSServiceTypeID ::= 1 +personTracking LCSServiceTypeID ::= 2 +fleetManagement LCSServiceTypeID ::= 3 +assetManagement LCSServiceTypeID ::= 4 +trafficCongestionReporting LCSServiceTypeID ::= 5 +roadsideAssistance LCSServiceTypeID ::= 6 +routingToNearestCommercialEnterprise LCSServiceTypeID ::= 7 +navigation LCSServiceTypeID ::= 8 + --this service type is reserved for use in previous releases +citySightseeing LCSServiceTypeID ::= 9 +localizedAdvertising LCSServiceTypeID ::= 10 +mobileYellowPages LCSServiceTypeID ::= 11 +trafficAndPublicTransportationInfo LCSServiceTypeID ::= 12 +weather LCSServiceTypeID ::= 13 +assetAndServiceFinding LCSServiceTypeID ::= 14 +gaming LCSServiceTypeID ::= 15 +findYourFriend LCSServiceTypeID ::= 16 +dating LCSServiceTypeID ::= 17 +chatting LCSServiceTypeID ::= 18 +routeFinding LCSServiceTypeID ::= 19 +whereAmI LCSServiceTypeID ::= 20 + +-- The values of LCSServiceTypeID are defined according to 3GPP TS 22.071. + +-- Non Standard LCS Service Types +serv64 LCSServiceTypeID ::= 64 +serv65 LCSServiceTypeID ::= 65 +serv66 LCSServiceTypeID ::= 66 +serv67 LCSServiceTypeID ::= 67 +serv68 LCSServiceTypeID ::= 68 +serv69 LCSServiceTypeID ::= 69 +serv70 LCSServiceTypeID ::= 70 +serv71 LCSServiceTypeID ::= 71 +serv72 LCSServiceTypeID ::= 72 +serv73 LCSServiceTypeID ::= 73 +serv74 LCSServiceTypeID ::= 74 +serv75 LCSServiceTypeID ::= 75 +serv76 LCSServiceTypeID ::= 76 +serv77 LCSServiceTypeID ::= 77 +serv78 LCSServiceTypeID ::= 78 +serv79 LCSServiceTypeID ::= 79 +serv80 LCSServiceTypeID ::= 80 +serv81 LCSServiceTypeID ::= 81 +serv82 LCSServiceTypeID ::= 82 +serv83 LCSServiceTypeID ::= 83 +serv84 LCSServiceTypeID ::= 84 +serv85 LCSServiceTypeID ::= 85 +serv86 LCSServiceTypeID ::= 86 +serv87 LCSServiceTypeID ::= 87 +serv88 LCSServiceTypeID ::= 88 +serv89 LCSServiceTypeID ::= 89 +serv90 LCSServiceTypeID ::= 90 +serv91 LCSServiceTypeID ::= 91 +serv92 LCSServiceTypeID ::= 92 +serv93 LCSServiceTypeID ::= 93 +serv94 LCSServiceTypeID ::= 94 +serv95 LCSServiceTypeID ::= 95 +serv96 LCSServiceTypeID ::= 96 +serv97 LCSServiceTypeID ::= 97 +serv98 LCSServiceTypeID ::= 98 +serv99 LCSServiceTypeID ::= 99 +serv100 LCSServiceTypeID ::= 100 +serv101 LCSServiceTypeID ::= 101 +serv102 LCSServiceTypeID ::= 102 +serv103 LCSServiceTypeID ::= 103 +serv104 LCSServiceTypeID ::= 104 +serv105 LCSServiceTypeID ::= 105 +serv106 LCSServiceTypeID ::= 106 +serv107 LCSServiceTypeID ::= 107 +serv108 LCSServiceTypeID ::= 108 +serv109 LCSServiceTypeID ::= 109 +serv110 LCSServiceTypeID ::= 110 +serv111 LCSServiceTypeID ::= 111 +serv112 LCSServiceTypeID ::= 112 +serv113 LCSServiceTypeID ::= 113 +serv114 LCSServiceTypeID ::= 114 +serv115 LCSServiceTypeID ::= 115 +serv116 LCSServiceTypeID ::= 116 +serv117 LCSServiceTypeID ::= 117 +serv118 LCSServiceTypeID ::= 118 +serv119 LCSServiceTypeID ::= 119 +serv120 LCSServiceTypeID ::= 120 +serv121 LCSServiceTypeID ::= 121 +serv122 LCSServiceTypeID ::= 122 +serv123 LCSServiceTypeID ::= 123 +serv124 LCSServiceTypeID ::= 124 +serv125 LCSServiceTypeID ::= 125 +serv126 LCSServiceTypeID ::= 126 +serv127 LCSServiceTypeID ::= 127 + +PLMN-Id ::= OCTET STRING (SIZE (3)) + -- The internal structure is defined as follows: + -- octet 1 bits 4321 Mobile Country Code 1st digit + -- bits 8765 Mobile Country Code 2nd digit + -- octet 2 bits 4321 Mobile Country Code 3rd digit + -- bits 8765 Mobile Network Code 3rd digit + -- or filler (1111) for 2 digit MNCs + -- octet 3 bits 4321 Mobile Network Code 1st digit + -- bits 8765 Mobile Network Code 2nd digit + +E-UTRAN-CGI ::= OCTET STRING (SIZE (7)) + -- Octets are coded as described in 3GPP TS 29.118 [152]. + +NR-CGI ::= OCTET STRING (SIZE (8)) + -- Octets are coded as described in 3GPP TS 38.413 [153]. + +TA-Id ::= OCTET STRING (SIZE (5)) + -- Octets are coded as described in 3GPP TS 29.118 [152]. + +NR-TA-Id ::= OCTET STRING (SIZE (6)) + -- Octets are coded as described in 3GPP TS 38.413 [153]. + +RAIdentity ::= OCTET STRING (SIZE (6)) +-- Routing Area Identity is coded in accordance with 3GPP TS 29.060 [105]. +-- It shall contain the value part defined in 3GPP TS 29.060 only. I.e. the 3GPP TS 29.060 +-- type identifier octet shall not be included. + +NetworkNodeDiameterAddress::= SEQUENCE { + diameter-Name [0] DiameterIdentity, + diameter-Realm [1] DiameterIdentity } + +-- data types for CAMEL + +CellGlobalIdOrServiceAreaIdOrLAI ::= CHOICE { + cellGlobalIdOrServiceAreaIdFixedLength [0] CellGlobalIdOrServiceAreaIdFixedLength, + laiFixedLength [1] LAIFixedLength} + +CellGlobalIdOrServiceAreaIdFixedLength ::= OCTET STRING (SIZE (7)) + -- Refers to Cell Global Identification or Service Are Identification + -- defined in 3GPP TS 23.003. + -- The internal structure is defined as follows: + -- octet 1 bits 4321 Mobile Country Code 1st digit + -- bits 8765 Mobile Country Code 2nd digit + -- octet 2 bits 4321 Mobile Country Code 3rd digit + -- bits 8765 Mobile Network Code 3rd digit + -- or filler (1111) for 2 digit MNCs + -- octet 3 bits 4321 Mobile Network Code 1st digit + -- bits 8765 Mobile Network Code 2nd digit + -- octets 4 and 5 Location Area Code according to 3GPP TS 24.008 + -- octets 6 and 7 Cell Identity (CI) value or + -- Service Area Code (SAC) value + -- according to 3GPP TS 23.003 + +LAIFixedLength ::= OCTET STRING (SIZE (5)) + -- Refers to Location Area Identification defined in 3GPP TS 23.003 [17]. + -- The internal structure is defined as follows: + -- octet 1 bits 4321 Mobile Country Code 1st digit + -- bits 8765 Mobile Country Code 2nd digit + -- octet 2 bits 4321 Mobile Country Code 3rd digit + -- bits 8765 Mobile Network Code 3rd digit + -- or filler (1111) for 2 digit MNCs + -- octet 3 bits 4321 Mobile Network Code 1st digit + -- bits 8765 Mobile Network Code 2nd digit + -- octets 4 and 5 Location Area Code according to 3GPP TS 24.008 [35] + +-- data types for subscriber management + +BasicServiceCode ::= CHOICE { + bearerService [2] BearerServiceCode, + teleservice [3] TeleserviceCode} + +Ext-BasicServiceCode ::= CHOICE { + ext-BearerService [2] Ext-BearerServiceCode, + ext-Teleservice [3] Ext-TeleserviceCode} + +EMLPP-Info ::= SEQUENCE { + maximumentitledPriority EMLPP-Priority, + defaultPriority EMLPP-Priority, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +EMLPP-Priority ::= INTEGER (0..15) + -- The mapping from the values A,B,0,1,2,3,4 to the integer-value is + -- specified as follows where A is the highest and 4 is the lowest + -- priority level + -- the integer values 7-15 are spare and shall be mapped to value 4 + +priorityLevelA EMLPP-Priority ::= 6 +priorityLevelB EMLPP-Priority ::= 5 +priorityLevel0 EMLPP-Priority ::= 0 +priorityLevel1 EMLPP-Priority ::= 1 +priorityLevel2 EMLPP-Priority ::= 2 +priorityLevel3 EMLPP-Priority ::= 3 +priorityLevel4 EMLPP-Priority ::= 4 + +MC-SS-Info ::= SEQUENCE { + ss-Code [0] SS-Code, + ss-Status [1] Ext-SS-Status, + nbrSB [2] MaxMC-Bearers, + nbrUser [3] MC-Bearers, + extensionContainer [4] ExtensionContainer OPTIONAL, + ...} + +MaxMC-Bearers ::= INTEGER (2..maxNumOfMC-Bearers) + +MC-Bearers ::= INTEGER (1..maxNumOfMC-Bearers) + +maxNumOfMC-Bearers INTEGER ::= 7 + +Ext-SS-Status ::= OCTET STRING (SIZE (1..5)) + + -- OCTET 1: + -- + -- bits 8765: 0000 (unused) + -- bits 4321: Used to convey the "P bit","R bit","A bit" and "Q bit", + -- representing supplementary service state information + -- as defined in TS 3GPP TS 23.011 [22] + + -- bit 4: "Q bit" + + -- bit 3: "P bit" + + -- bit 2: "R bit" + + -- bit 1: "A bit" + + -- OCTETS 2-5: reserved for future use. They shall be discarded if + -- received and not understood. + + + -- data types for geographic location + +AgeOfLocationInformation ::= INTEGER (0..32767) +-- the value represents the elapsed time in minutes since the last +-- network contact of the mobile station (i.e. the actuality of the +-- location information). +-- value "0" indicates that the MS is currently in contact with the +-- network +-- value "32767" indicates that the location information is at least +-- 32767 minutes old + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-DialogueInformation.asn b/epan/dissectors/asn1/gsm_map/MAP-DialogueInformation.asn new file mode 100644 index 00000000..c767f107 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-DialogueInformation.asn @@ -0,0 +1,127 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.4 MAP Dialogue Information + +MAP-DialogueInformation { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-DialogueInformation (3) version20 (20)} + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + +EXPORTS + map-DialogueAS, + MAP-DialoguePDU + +; + +IMPORTS + gsm-NetworkId, + as-Id +FROM MobileDomainDefinitions { + itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) + mobileDomainDefinitions (0) version1 (1)} + + AddressString +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network(1) modules (3) map-CommonDataTypes (18) version20 (20)} + + ExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version20 (20)} + + +; + + +-- abstract syntax name for MAP-DialoguePDU + +map-DialogueAS OBJECT IDENTIFIER ::= + {gsm-NetworkId as-Id map-DialoguePDU (1) version1 (1)} + +MAP-DialoguePDU ::= CHOICE { + map-open [0] MAP-OpenInfo, + map-accept [1] MAP-AcceptInfo, + map-close [2] MAP-CloseInfo, + map-refuse [3] MAP-RefuseInfo, + map-userAbort [4] MAP-UserAbortInfo, + map-providerAbort [5] MAP-ProviderAbortInfo} + +MAP-OpenInfo ::= SEQUENCE { + destinationReference [0] AddressString OPTIONAL, + originationReference [1] AddressString OPTIONAL, + ..., + extensionContainer ExtensionContainer OPTIONAL + -- extensionContainer must not be used in version 2 + } + +MAP-AcceptInfo ::= SEQUENCE { + ..., + extensionContainer ExtensionContainer OPTIONAL + -- extensionContainer must not be used in version 2 + } + +MAP-CloseInfo ::= SEQUENCE { + ..., + extensionContainer ExtensionContainer OPTIONAL + -- extensionContainer must not be used in version 2 + } + +MAP-RefuseInfo ::= SEQUENCE { + reason Reason, + ..., + extensionContainer ExtensionContainer OPTIONAL, + -- extensionContainer must not be used in version 2 + alternativeApplicationContext OBJECT IDENTIFIER OPTIONAL + -- alternativeApplicationContext must not be used in version 2 + } + +Reason ::= ENUMERATED { + noReasonGiven (0), + invalidDestinationReference (1), + invalidOriginatingReference (2)} + +MAP-UserAbortInfo ::= SEQUENCE { + map-UserAbortChoice MAP-UserAbortChoice, + ..., + extensionContainer ExtensionContainer OPTIONAL + -- extensionContainer must not be used in version 2 + } + +MAP-UserAbortChoice ::= CHOICE { + userSpecificReason [0] NULL, + userResourceLimitation [1] NULL, + resourceUnavailable [2] ResourceUnavailableReason, + applicationProcedureCancellation [3] ProcedureCancellationReason} + +ResourceUnavailableReason ::= ENUMERATED { + shortTermResourceLimitation (0), + longTermResourceLimitation (1)} + +ProcedureCancellationReason ::= ENUMERATED { + handoverCancellation (0), + radioChannelRelease (1), + networkPathRelease (2), + callRelease (3), + associatedProcedureFailure (4), + tandemDialogueRelease (5), + remoteOperationsFailure (6)} + +MAP-ProviderAbortInfo ::= SEQUENCE { + map-ProviderAbortReason MAP-ProviderAbortReason, + ..., + extensionContainer ExtensionContainer OPTIONAL + -- extensionContainer must not be used in version 2 + } + +MAP-ProviderAbortReason ::= ENUMERATED { + abnormalDialogue (0), + invalidPDU (1)} + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-ER-DataTypes.asn b/epan/dissectors/asn1/gsm_map/MAP-ER-DataTypes.asn new file mode 100644 index 00000000..5b871a29 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-ER-DataTypes.asn @@ -0,0 +1,435 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.7.7 Error data types + +MAP-ER-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ER-DataTypes (17) version20 (20)} + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + +EXPORTS + RoamingNotAllowedParam, + CallBarredParam, + CUG-RejectParam, + SS-IncompatibilityCause, + PW-RegistrationFailureCause, + SM-DeliveryFailureCause, + SystemFailureParam, + DataMissingParam, + UnexpectedDataParam, + FacilityNotSupParam, + OR-NotAllowedParam, + UnknownSubscriberParam, + NumberChangedParam, + UnidentifiedSubParam, + IllegalSubscriberParam, + IllegalEquipmentParam, + BearerServNotProvParam, + TeleservNotProvParam, + TracingBufferFullParam, + NoRoamingNbParam, + AbsentSubscriberParam, + BusySubscriberParam, + NoSubscriberReplyParam, + ForwardingViolationParam, + ForwardingFailedParam, + ATI-NotAllowedParam, + SubBusyForMT-SMS-Param, + MessageWaitListFullParam, + AbsentSubscriberSM-Param, + AbsentSubscriberDiagnosticSM, + ResourceLimitationParam, + NoGroupCallNbParam, + IncompatibleTerminalParam, + ShortTermDenialParam, + LongTermDenialParam, + UnauthorizedRequestingNetwork-Param, + UnauthorizedLCSClient-Param, + PositionMethodFailure-Param, +UnknownOrUnreachableLCSClient-Param, + MM-EventNotSupported-Param, +ATSI-NotAllowedParam, +ATM-NotAllowedParam, +IllegalSS-OperationParam, +SS-NotAvailableParam, +SS-SubscriptionViolationParam, +InformationNotAvailableParam, +TargetCellOutsideGCA-Param, +OngoingGroupCallParam, +PositionMethodFailure-Diagnostic, +UnauthorizedLCSClient-Diagnostic + +; + +IMPORTS + SS-Status +FROM MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-DataTypes (14) version20 (20)} + + SignalInfo, + BasicServiceCode, + NetworkResource, + AdditionalNetworkResource, + IMSI, + Time +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version20 (20)} + + + SS-Code +FROM MAP-SS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-Code (15) version20 (20)} + + ExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version20 (20)} +; + +RoamingNotAllowedParam ::= SEQUENCE { + roamingNotAllowedCause RoamingNotAllowedCause, + extensionContainer ExtensionContainer OPTIONAL, + ..., + additionalRoamingNotAllowedCause [0] AdditionalRoamingNotAllowedCause OPTIONAL } + +-- if the additionalRoamingNotallowedCause is received by the MSC/VLR or SGSN then the +-- roamingNotAllowedCause shall be discarded. + +AdditionalRoamingNotAllowedCause ::= ENUMERATED { + supportedRAT-TypesNotAllowed (0), + ...} + +RoamingNotAllowedCause ::= ENUMERATED { + plmnRoamingNotAllowed (0), + operatorDeterminedBarring (3)} + +CallBarredParam ::= CHOICE { + callBarringCause CallBarringCause, + -- call BarringCause must not be used in version 3 and higher + extensibleCallBarredParam ExtensibleCallBarredParam + -- extensibleCallBarredParam must not be used in version <3 + } + +CallBarringCause ::= ENUMERATED { + barringServiceActive (0), + operatorBarring (1)} + +ExtensibleCallBarredParam ::= SEQUENCE { + callBarringCause CallBarringCause OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ... , + unauthorisedMessageOriginator [1] NULL OPTIONAL, + anonymousCallRejection [2] NULL OPTIONAL } + +-- unauthorisedMessageOriginator and anonymousCallRejection shall be mutually exclusive. + + +CUG-RejectParam ::= SEQUENCE { + cug-RejectCause CUG-RejectCause OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +CUG-RejectCause ::= ENUMERATED { + incomingCallsBarredWithinCUG (0), + subscriberNotMemberOfCUG (1), + requestedBasicServiceViolatesCUG-Constraints (5), + calledPartySS-InteractionViolation (7)} + +SS-IncompatibilityCause ::= SEQUENCE { + ss-Code [1] SS-Code OPTIONAL, + basicService BasicServiceCode OPTIONAL, + ss-Status [4] SS-Status OPTIONAL, + ...} + +PW-RegistrationFailureCause ::= ENUMERATED { + undetermined (0), + invalidFormat (1), + newPasswordsMismatch (2)} + +SM-EnumeratedDeliveryFailureCause ::= ENUMERATED { + memoryCapacityExceeded (0), + equipmentProtocolError (1), + equipmentNotSM-Equipped (2), + unknownServiceCentre (3), + sc-Congestion (4), + invalidSME-Address (5), + subscriberNotSC-Subscriber (6)} + +SM-DeliveryFailureCause ::= SEQUENCE { + sm-EnumeratedDeliveryFailureCause SM-EnumeratedDeliveryFailureCause, + diagnosticInfo SignalInfo OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +AbsentSubscriberSM-Param ::= SEQUENCE { + absentSubscriberDiagnosticSM AbsentSubscriberDiagnosticSM OPTIONAL, + -- AbsentSubscriberDiagnosticSM can be either for non-GPRS + -- or for GPRS + extensionContainer ExtensionContainer OPTIONAL, + ..., + additionalAbsentSubscriberDiagnosticSM [0] AbsentSubscriberDiagnosticSM OPTIONAL, + -- if received, additionalAbsentSubscriberDiagnosticSM + -- is for GPRS and absentSubscriberDiagnosticSM is + -- for non-GPRS + imsi [1] IMSI OPTIONAL, + -- when sent from HLR to IP-SM-GW, IMSI shall be present if UNRI is not set + -- to indicate that the absent condition is met for CS and PS but not for IMS. + requestedRetransmissionTime [2] Time OPTIONAL, + userIdentifierAlert [3] IMSI OPTIONAL } + +AbsentSubscriberDiagnosticSM ::= INTEGER (0..255) + -- AbsentSubscriberDiagnosticSM values are defined in 3GPP TS 23.040 + +SystemFailureParam ::= CHOICE { + networkResource NetworkResource, + -- networkResource must not be used in version 3 + extensibleSystemFailureParam ExtensibleSystemFailureParam + -- extensibleSystemFailureParam must not be used in version <3 + } + +ExtensibleSystemFailureParam ::= SEQUENCE { + networkResource NetworkResource OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + additionalNetworkResource [0] AdditionalNetworkResource OPTIONAL, + failureCauseParam [1] FailureCauseParam OPTIONAL } + +FailureCauseParam ::= ENUMERATED { + limitReachedOnNumberOfConcurrentLocationRequests (0), + ... } + -- if unknown value is received in FailureCauseParam it shall be ignored + + +DataMissingParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +UnexpectedDataParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ..., + unexpectedSubscriber [0] NULL OPTIONAL} +-- the unexpectedSubscriber indication in the unexpectedDataValue error shall not be used +-- for operations that allow the unidentifiedSubscriber error. + +FacilityNotSupParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ..., + shapeOfLocationEstimateNotSupported [0] NULL OPTIONAL, + neededLcsCapabilityNotSupportedInServingNode [1] NULL OPTIONAL } + +OR-NotAllowedParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +UnknownSubscriberParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ..., + unknownSubscriberDiagnostic UnknownSubscriberDiagnostic OPTIONAL} + +UnknownSubscriberDiagnostic ::= ENUMERATED { + imsiUnknown (0), + gprs-eps-SubscriptionUnknown (1), + ..., + npdbMismatch (2)} + -- if unknown values are received in + -- UnknownSubscriberDiagnostic they shall be discarded + +NumberChangedParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +UnidentifiedSubParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +IllegalSubscriberParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +IllegalEquipmentParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +BearerServNotProvParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +TeleservNotProvParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +TracingBufferFullParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +NoRoamingNbParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +AbsentSubscriberParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ..., + absentSubscriberReason [0] AbsentSubscriberReason OPTIONAL} + +AbsentSubscriberReason ::= ENUMERATED { + imsiDetach (0), + restrictedArea (1), + noPageResponse (2), + ... , + purgedMS (3), + mtRoamingRetry (4), + busySubscriber (5)} +-- exception handling: at reception of other values than the ones listed the +-- AbsentSubscriberReason shall be ignored. +-- The AbsentSubscriberReason: purgedMS is defined for the Super-Charger feature +-- (see TS 23.116). If this value is received in a Provide Roaming Number response +-- it shall be mapped to the AbsentSubscriberReason: imsiDetach in the Send Routeing +-- Information response +-- The AbsentSubscriberReason: mtRoamingRetry is used during MT Roaming Retry, +-- see 3GPP TS 23.018[97]. +-- The AbsentSubscriberReason: busySubscriber is used during MT Roaming Forwarding, +-- see 3GPP TS 23.018[97]. + +BusySubscriberParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ..., + ccbs-Possible [0] NULL OPTIONAL, + ccbs-Busy [1] NULL OPTIONAL} + +NoSubscriberReplyParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +ForwardingViolationParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +ForwardingFailedParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +ATI-NotAllowedParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +ATSI-NotAllowedParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +ATM-NotAllowedParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +IllegalSS-OperationParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +SS-NotAvailableParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +SS-SubscriptionViolationParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +InformationNotAvailableParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +SubBusyForMT-SMS-Param ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ... , + gprsConnectionSuspended NULL OPTIONAL } + -- If GprsConnectionSuspended is not understood it shall + -- be discarded + +MessageWaitListFullParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +ResourceLimitationParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +NoGroupCallNbParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +IncompatibleTerminalParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +ShortTermDenialParam ::= SEQUENCE { + ...} + +LongTermDenialParam ::= SEQUENCE { + ...} + +UnauthorizedRequestingNetwork-Param ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +UnauthorizedLCSClient-Param ::= SEQUENCE { + unauthorizedLCSClient-Diagnostic [0] UnauthorizedLCSClient-Diagnostic OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ... } + +UnauthorizedLCSClient-Diagnostic ::= ENUMERATED { + noAdditionalInformation (0), + clientNotInMSPrivacyExceptionList (1), + callToClientNotSetup (2), + privacyOverrideNotApplicable (3), + disallowedByLocalRegulatoryRequirements (4), + ..., + unauthorizedPrivacyClass (5), + unauthorizedCallSessionUnrelatedExternalClient (6), + unauthorizedCallSessionRelatedExternalClient (7) } +-- exception handling: +-- any unrecognized value shall be ignored + +PositionMethodFailure-Param ::= SEQUENCE { + positionMethodFailure-Diagnostic [0] PositionMethodFailure-Diagnostic OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ... } + +PositionMethodFailure-Diagnostic ::= ENUMERATED { + congestion (0), + insufficientResources (1), + insufficientMeasurementData (2), + inconsistentMeasurementData (3), + locationProcedureNotCompleted (4), + locationProcedureNotSupportedByTargetMS (5), + qoSNotAttainable (6), + positionMethodNotAvailableInNetwork (7), + positionMethodNotAvailableInLocationArea (8), + ... } +-- exception handling: +-- any unrecognized value shall be ignored + +UnknownOrUnreachableLCSClient-Param ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +MM-EventNotSupported-Param ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +TargetCellOutsideGCA-Param ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +OngoingGroupCallParam ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-Errors.asn b/epan/dissectors/asn1/gsm_map/MAP-Errors.asn new file mode 100644 index 00000000..245d5cdc --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-Errors.asn @@ -0,0 +1,508 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.6.6 Errors + +MAP-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-Errors (10) version20 (20)} + +DEFINITIONS + +::= + +BEGIN + +EXPORTS + + -- generic errors + systemFailure, + dataMissing, + unexpectedDataValue, + facilityNotSupported, + incompatibleTerminal, + resourceLimitation, + + -- identification and numbering errors + unknownSubscriber, + numberChanged, + unknownMSC, + unidentifiedSubscriber, + unknownEquipment, + + -- subscription errors + roamingNotAllowed, + illegalSubscriber, + illegalEquipment, + bearerServiceNotProvisioned, + teleserviceNotProvisioned, + + -- handover errors + noHandoverNumberAvailable, + subsequentHandoverFailure, + targetCellOutsideGroupCallArea, + + -- operation and maintenance errors + tracingBufferFull, + + -- call handling errors + or-NotAllowed, + noRoamingNumberAvailable, + busySubscriber, + noSubscriberReply, + absentSubscriber, + callBarred, + forwardingViolation, + forwardingFailed, + cug-Reject, + + -- any time interrogation errors + ati-NotAllowed, + + -- any time information handling errors + atsi-NotAllowed, + atm-NotAllowed, + informationNotAvailable, + + -- supplementary service errors + illegalSS-Operation, + ss-ErrorStatus, + ss-NotAvailable, + ss-SubscriptionViolation, + ss-Incompatibility, + unknownAlphabet, + ussd-Busy, + pw-RegistrationFailure, + negativePW-Check, + numberOfPW-AttemptsViolation, + shortTermDenial, + longTermDenial, + + -- short message service errors + subscriberBusyForMT-SMS, + sm-DeliveryFailure, + messageWaitingListFull, + absentSubscriberSM, + + -- Group Call errors + noGroupCallNumberAvailable, + ongoingGroupCall, + + -- location service errors + unauthorizedRequestingNetwork, + unauthorizedLCSClient, + positionMethodFailure, + unknownOrUnreachableLCSClient, + + -- Mobility Management errors + mm-EventNotSupported + + +; + +IMPORTS + ERROR +FROM Remote-Operations-Information-Objects {joint-iso-itu-t remote-operations(4) + informationObjects(5) version1(0) } + + SS-Status +FROM MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-DataTypes (14) version20 (20)} + + SS-IncompatibilityCause, + PW-RegistrationFailureCause, + SM-DeliveryFailureCause, + SystemFailureParam, + DataMissingParam, + UnexpectedDataParam, + FacilityNotSupParam, + UnknownSubscriberParam, + NumberChangedParam, + UnidentifiedSubParam, + RoamingNotAllowedParam, + IllegalSubscriberParam, + IllegalEquipmentParam, + BearerServNotProvParam, + TeleservNotProvParam, + TracingBufferFullParam, + NoRoamingNbParam, + OR-NotAllowedParam, + AbsentSubscriberParam, + BusySubscriberParam, + NoSubscriberReplyParam, + CallBarredParam, + ForwardingViolationParam, + ForwardingFailedParam, + CUG-RejectParam, + ATI-NotAllowedParam, + SubBusyForMT-SMS-Param, + MessageWaitListFullParam, + AbsentSubscriberSM-Param, + ResourceLimitationParam, + NoGroupCallNbParam, + IncompatibleTerminalParam, + ShortTermDenialParam, + LongTermDenialParam, + UnauthorizedRequestingNetwork-Param, + UnauthorizedLCSClient-Param, + PositionMethodFailure-Param, +UnknownOrUnreachableLCSClient-Param, + MM-EventNotSupported-Param, +ATSI-NotAllowedParam, +ATM-NotAllowedParam, +IllegalSS-OperationParam, +SS-NotAvailableParam, +SS-SubscriptionViolationParam, +InformationNotAvailableParam, +TargetCellOutsideGCA-Param, +OngoingGroupCallParam +FROM MAP-ER-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ER-DataTypes (17) version20 (20)} +; + +-- generic errors + +systemFailure ERROR ::= { + PARAMETER + SystemFailureParam + -- optional + CODE local:34 } + +dataMissing ERROR ::= { + PARAMETER + DataMissingParam + -- optional + -- DataMissingParam must not be used in version <3 + CODE local:35 } + +unexpectedDataValue ERROR ::= { + PARAMETER + UnexpectedDataParam + -- optional + -- UnexpectedDataParam must not be used in version <3 + CODE local:36 } + +facilityNotSupported ERROR ::= { + PARAMETER + FacilityNotSupParam + -- optional + -- FacilityNotSupParam must not be used in version <3 + CODE local:21 } + +incompatibleTerminal ERROR ::= { + PARAMETER + IncompatibleTerminalParam + -- optional + CODE local:28 } + +resourceLimitation ERROR ::= { + PARAMETER + ResourceLimitationParam + -- optional + CODE local:51 } + +-- identification and numbering errors + +unknownSubscriber ERROR ::= { + PARAMETER + UnknownSubscriberParam + -- optional + -- UnknownSubscriberParam must not be used in version <3 + CODE local:1 } + +numberChanged ERROR ::= { + PARAMETER + NumberChangedParam + -- optional + CODE local:44 } + +unknownMSC ERROR ::= { + CODE local:3 } + +unidentifiedSubscriber ERROR ::= { + PARAMETER + UnidentifiedSubParam + -- optional + -- UunidentifiedSubParam must not be used in version <3 + CODE local:5 } + +unknownEquipment ERROR ::= { + CODE local:7 } + +-- subscription errors + +roamingNotAllowed ERROR ::= { + PARAMETER + RoamingNotAllowedParam + CODE local:8 } + +illegalSubscriber ERROR ::= { + PARAMETER + IllegalSubscriberParam + -- optional + -- IllegalSubscriberParam must not be used in version <3 + CODE local:9 } + +illegalEquipment ERROR ::= { + PARAMETER + IllegalEquipmentParam + -- optional + -- IllegalEquipmentParam must not be used in version <3 + CODE local:12 } + +bearerServiceNotProvisioned ERROR ::= { + PARAMETER + BearerServNotProvParam + -- optional + -- BearerServNotProvParam must not be used in version <3 + CODE local:10 } + +teleserviceNotProvisioned ERROR ::= { + PARAMETER + TeleservNotProvParam + -- optional + -- TeleservNotProvParam must not be used in version <3 + CODE local:11 } + +-- handover errors + +noHandoverNumberAvailable ERROR ::= { + CODE local:25 } + +subsequentHandoverFailure ERROR ::= { + CODE local:26 } + +targetCellOutsideGroupCallArea ERROR ::= { + PARAMETER + TargetCellOutsideGCA-Param + -- optional + CODE local:42 } + +-- operation and maintenance errors + +tracingBufferFull ERROR ::= { + PARAMETER + TracingBufferFullParam + -- optional + CODE local: 40 } + +-- call handling errors + +noRoamingNumberAvailable ERROR ::= { + PARAMETER + NoRoamingNbParam + -- optional + CODE local:39 } + +absentSubscriber ERROR ::= { + PARAMETER + AbsentSubscriberParam + -- optional + -- AbsentSubscriberParam must not be used in version <3 + CODE local:27 } + +busySubscriber ERROR ::= { + PARAMETER + BusySubscriberParam + -- optional + CODE local:45 } + +noSubscriberReply ERROR ::= { + PARAMETER + NoSubscriberReplyParam + -- optional + CODE local:46 } + +callBarred ERROR ::= { + PARAMETER + CallBarredParam + -- optional + CODE local:13 } + +forwardingViolation ERROR ::= { + PARAMETER + ForwardingViolationParam + -- optional + CODE local:14 } + +forwardingFailed ERROR ::= { + PARAMETER + ForwardingFailedParam + -- optional + CODE local:47 } + +cug-Reject ERROR ::= { + PARAMETER + CUG-RejectParam + -- optional + CODE local:15 } + +or-NotAllowed ERROR ::= { + PARAMETER + OR-NotAllowedParam + -- optional + CODE local:48 } + +-- any time interrogation errors +ati-NotAllowed ERROR ::= { + PARAMETER + ATI-NotAllowedParam + -- optional + CODE local:49 } + +-- any time information handling errors +atsi-NotAllowed ERROR ::= { + PARAMETER + ATSI-NotAllowedParam + -- optional + CODE local:60 } + +atm-NotAllowed ERROR ::= { + PARAMETER + ATM-NotAllowedParam + -- optional + CODE local:61 } + +informationNotAvailable ERROR ::= { + PARAMETER + InformationNotAvailableParam + -- optional + CODE local:62 } + +-- supplementary service errors + +illegalSS-Operation ERROR ::= { + PARAMETER + IllegalSS-OperationParam + -- optional + -- IllegalSS-OperationParam must not be used in version <3 + CODE local:16 } + +ss-ErrorStatus ERROR ::= { + PARAMETER + SS-Status + -- optional + CODE local:17 } + +ss-NotAvailable ERROR ::= { + PARAMETER + SS-NotAvailableParam + -- optional + -- SS-NotAvailableParam must not be used in version <3 + CODE local:18 } + +ss-SubscriptionViolation ERROR ::= { + PARAMETER + SS-SubscriptionViolationParam + -- optional + -- SS-SubscriptionViolationParam must not be used in version <3 + CODE local:19 } + +ss-Incompatibility ERROR ::= { + PARAMETER + SS-IncompatibilityCause + -- optional + CODE local:20 } + +unknownAlphabet ERROR ::= { + CODE local:71 } + +ussd-Busy ERROR ::= { + CODE local:72 } + +pw-RegistrationFailure ERROR ::= { + PARAMETER + PW-RegistrationFailureCause + CODE local:37 } + +negativePW-Check ERROR ::= { + CODE local:38 } + +numberOfPW-AttemptsViolation ERROR ::= { + CODE local:43 } + +shortTermDenial ERROR ::= { + PARAMETER + ShortTermDenialParam + -- optional + CODE local:29 } + +longTermDenial ERROR ::= { + PARAMETER + LongTermDenialParam + -- optional + CODE local:30 } + +-- short message service errors + +subscriberBusyForMT-SMS ERROR ::= { + PARAMETER + SubBusyForMT-SMS-Param + -- optional + CODE local:31 } + +sm-DeliveryFailure ERROR ::= { + PARAMETER + SM-DeliveryFailureCause + CODE local:32 } + +messageWaitingListFull ERROR ::= { + PARAMETER + MessageWaitListFullParam + -- optional + CODE local:33 } + +absentSubscriberSM ERROR ::= { + PARAMETER + AbsentSubscriberSM-Param + -- optional + CODE local:6 } + +-- Group Call errors + +noGroupCallNumberAvailable ERROR ::= { + PARAMETER + NoGroupCallNbParam + -- optional + CODE local:50 } + +ongoingGroupCall ERROR ::= { + PARAMETER + OngoingGroupCallParam + -- optional + CODE local:22 } + +-- location service errors + +unauthorizedRequestingNetwork ERROR ::= { + PARAMETER + UnauthorizedRequestingNetwork-Param + -- optional + CODE local:52 } + +unauthorizedLCSClient ERROR ::= { + PARAMETER + UnauthorizedLCSClient-Param + -- optional + CODE local:53 } + +positionMethodFailure ERROR ::= { + PARAMETER + PositionMethodFailure-Param + -- optional + CODE local:54 } + +unknownOrUnreachableLCSClient ERROR ::= { + PARAMETER + UnknownOrUnreachableLCSClient-Param + -- optional + CODE local:58 } + +mm-EventNotSupported ERROR ::= { + PARAMETER + MM-EventNotSupported-Param + -- optional + CODE local:59 } + + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-ExtensionDataTypes.asn b/epan/dissectors/asn1/gsm_map/MAP-ExtensionDataTypes.asn new file mode 100644 index 00000000..785cd2f3 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-ExtensionDataTypes.asn @@ -0,0 +1,71 @@ +-- MAP-ExtensionDataTypes.asn +-- +-- Taken from 3GPP TS 29.002 V17.1.0 (2021-06) +-- +-- 17.7.11 Extension data types +-- +MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version20 (20)} + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + +EXPORTS + + PrivateExtension, + ExtensionContainer, + SLR-ArgExtensionContainer; + + +-- IOC for private MAP extensions + + +MAP-EXTENSION ::= CLASS { + &ExtensionType OPTIONAL, + &extensionId OBJECT IDENTIFIER } + -- The length of the Object Identifier shall not exceed 16 octets and the + -- number of components of the Object Identifier shall not exceed 16 + +-- data types + +ExtensionContainer ::= SEQUENCE { + privateExtensionList [0]PrivateExtensionList OPTIONAL, + pcs-Extensions [1]PCS-Extensions OPTIONAL, + ...} + +SLR-ArgExtensionContainer ::= SEQUENCE { + privateExtensionList [0]PrivateExtensionList OPTIONAL, + slr-Arg-PCS-Extensions [1]SLR-Arg-PCS-Extensions OPTIONAL, + ...} + +PrivateExtensionList ::= SEQUENCE SIZE (1..maxNumOfPrivateExtensions) OF + PrivateExtension + +PrivateExtension ::= SEQUENCE { + extId MAP-EXTENSION.&extensionId + ({ExtensionSet}), + extType MAP-EXTENSION.&ExtensionType + ({ExtensionSet}{@extId}) OPTIONAL} + +maxNumOfPrivateExtensions INTEGER ::= 10 + +ExtensionSet MAP-EXTENSION ::= + {... + -- ExtensionSet is the set of all defined private extensions + } + -- Unsupported private extensions shall be discarded if received. + +PCS-Extensions ::= SEQUENCE { + ...} + +SLR-Arg-PCS-Extensions ::= SEQUENCE { + ..., + na-ESRK-Request [0] NULL OPTIONAL } + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-GR-DataTypes.asn b/epan/dissectors/asn1/gsm_map/MAP-GR-DataTypes.asn new file mode 100644 index 00000000..76ec0c53 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-GR-DataTypes.asn @@ -0,0 +1,198 @@ +-- Taken from 3GPP TS 29.002 V17.1.0 (2021-06) +-- +--17.7.12 Group Call data types + +MAP-GR-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-GR-DataTypes (23) version20 (20)} + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + +EXPORTS + PrepareGroupCallArg, + PrepareGroupCallRes, + SendGroupCallEndSignalArg, + SendGroupCallEndSignalRes, + ForwardGroupCallSignallingArg, + ProcessGroupCallSignallingArg, + SendGroupCallInfoArg, + SendGroupCallInfoRes +; + +IMPORTS + ISDN-AddressString, + IMSI, + TMSI, + EMLPP-Priority, + ASCI-CallReference, + SignalInfo, + GlobalCellId, + AccessNetworkSignalInfo +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version20 (20)} + + Ext-TeleserviceCode +FROM MAP-TS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-TS-Code (19) version20 (20)} + + Kc, + AdditionalInfo, + GroupId, +Long-GroupId, + AdditionalSubscriptions, + Cksn +FROM MAP-MS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-MS-DataTypes (11) version20 (20)} + + ExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version20 (20)} +; + + +PrepareGroupCallArg ::= SEQUENCE { + teleservice Ext-TeleserviceCode, + asciCallReference ASCI-CallReference, + codec-Info CODEC-Info, + cipheringAlgorithm CipheringAlgorithm, + groupKeyNumber-Vk-Id [0] GroupKeyNumber OPTIONAL, + groupKey [1] Kc OPTIONAL, + -- this parameter shall not be sent and shall be discarded if received + priority [2] EMLPP-Priority OPTIONAL, + uplinkFree [3] NULL OPTIONAL, + extensionContainer [4] ExtensionContainer OPTIONAL, + ..., + vstk [5] VSTK OPTIONAL, + vstk-rand [6] VSTK-RAND OPTIONAL, + talkerChannelParameter [7] NULL OPTIONAL, + uplinkReplyIndicator [8] NULL OPTIONAL} + +VSTK ::= OCTET STRING (SIZE (16)) + +VSTK-RAND ::= OCTET STRING (SIZE (5)) + -- The 36 bit value is carried in bit 7 of octet 1 to bit 4 of octet 5 + -- bits 3, 2, 1, and 0 of octet 5 are padded with zeros. + +PrepareGroupCallRes ::= SEQUENCE { + groupCallNumber ISDN-AddressString, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +SendGroupCallEndSignalArg ::= SEQUENCE { + imsi IMSI OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + talkerPriority [0]TalkerPriority OPTIONAL, + additionalInfo [1]AdditionalInfo OPTIONAL } + +TalkerPriority ::= ENUMERATED { + normal (0), + privileged (1), + emergency (2)} + +SendGroupCallEndSignalRes ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +ForwardGroupCallSignallingArg ::= SEQUENCE { + imsi IMSI OPTIONAL, + uplinkRequestAck [0] NULL OPTIONAL, + uplinkReleaseIndication [1] NULL OPTIONAL, + uplinkRejectCommand [2] NULL OPTIONAL, + uplinkSeizedCommand [3] NULL OPTIONAL, + uplinkReleaseCommand [4] NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + stateAttributes [5] StateAttributes OPTIONAL, + talkerPriority [6] TalkerPriority OPTIONAL, + additionalInfo [7] AdditionalInfo OPTIONAL, + emergencyModeResetCommandFlag [8] NULL OPTIONAL, + sm-RP-UI [9] SignalInfo OPTIONAL, + an-APDU [10] AccessNetworkSignalInfo OPTIONAL + } + +ProcessGroupCallSignallingArg ::= SEQUENCE { + uplinkRequest [0] NULL OPTIONAL, + uplinkReleaseIndication [1] NULL OPTIONAL, + releaseGroupCall [2] NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + talkerPriority [3] TalkerPriority OPTIONAL, + additionalInfo [4] AdditionalInfo OPTIONAL, + emergencyModeResetCommandFlag [5] NULL OPTIONAL, + an-APDU [6] AccessNetworkSignalInfo OPTIONAL } + +GroupKeyNumber ::= INTEGER (0..15) + +CODEC-Info ::= OCTET STRING (SIZE (5..10)) + -- Refers to channel type + -- coded according to 3GPP TS 48.008 [49] and including Element identifier and Length + +CipheringAlgorithm ::= OCTET STRING (SIZE (1)) + -- Refers to 'permitted algorithms' in 'encryption information' + -- coded according to 3GPP TS 48.008 [49]: + + -- Bits 8-1 + -- 8765 4321 + -- 0000 0001 No encryption + -- 0000 0010 GSM A5/1 + -- 0000 0100 GSM A5/2 + -- 0000 1000 GSM A5/3 + -- 0001 0000 GSM A5/4 + -- 0010 0000 GSM A5/5 + -- 0100 0000 GSM A5/6 + -- 1000 0000 GSM A5/7 + +StateAttributes ::= SEQUENCE { + downlinkAttached [5] NULL OPTIONAL, + uplinkAttached [6] NULL OPTIONAL, + dualCommunication [7] NULL OPTIONAL, + callOriginator [8] NULL OPTIONAL } + + -- Refers to 3GPP TS 44.068 for definitions of StateAttributes fields. + + +SendGroupCallInfoArg ::= SEQUENCE { + requestedInfo RequestedInfo, + groupId Long-GroupId, + teleservice Ext-TeleserviceCode, + cellId [0] GlobalCellId OPTIONAL, + imsi [1] IMSI OPTIONAL, + tmsi [2] TMSI OPTIONAL, + additionalInfo [3] AdditionalInfo OPTIONAL, + talkerPriority [4] TalkerPriority OPTIONAL, + cksn [5] Cksn OPTIONAL, + extensionContainer [6] ExtensionContainer OPTIONAL, + ... } + +RequestedInfo ::= ENUMERATED { + anchorMSC-AddressAndASCI-CallReference (0), + imsiAndAdditionalInfoAndAdditionalSubscription (1), + ... } +-- exception handling: +-- an unrecognized value shall be rejected by the receiver with a return error cause of +-- unexpected data value + +SendGroupCallInfoRes ::= SEQUENCE { + anchorMSC-Address [0] ISDN-AddressString OPTIONAL, + asciCallReference [1] ASCI-CallReference OPTIONAL, + imsi [2] IMSI OPTIONAL, + additionalInfo [3] AdditionalInfo OPTIONAL, + additionalSubscriptions [4] AdditionalSubscriptions OPTIONAL, + kc [5] Kc OPTIONAL, + extensionContainer [6] ExtensionContainer OPTIONAL, + ... } + + +END + diff --git a/epan/dissectors/asn1/gsm_map/MAP-Group-Call-Operations.asn b/epan/dissectors/asn1/gsm_map/MAP-Group-Call-Operations.asn new file mode 100644 index 00000000..15e508ff --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-Group-Call-Operations.asn @@ -0,0 +1,97 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.6.7 Group Call operations + +MAP-Group-Call-Operations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-Group-Call-Operations (22) + version20 (20)} + +DEFINITIONS + +::= + +BEGIN + +EXPORTS + prepareGroupCall, + sendGroupCallEndSignal, + forwardGroupCallSignalling, + processGroupCallSignalling, + sendGroupCallInfo +; + +IMPORTS + OPERATION +FROM Remote-Operations-Information-Objects { +joint-iso-itu-t remote-operations(4) + informationObjects(5) version1(0)} + + systemFailure, + unexpectedDataValue, + noGroupCallNumberAvailable, + ongoingGroupCall, + unknownSubscriber, + teleserviceNotProvisioned, + dataMissing +FROM MAP-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-Errors (10) version20 (20)} + + PrepareGroupCallArg, + PrepareGroupCallRes, + SendGroupCallEndSignalArg, + SendGroupCallEndSignalRes, + ForwardGroupCallSignallingArg, + ProcessGroupCallSignallingArg, + SendGroupCallInfoArg, + SendGroupCallInfoRes +FROM MAP-GR-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-GR-DataTypes (23) version20 (20)} + +; + +prepareGroupCall OPERATION ::= { --Timer m + ARGUMENT + PrepareGroupCallArg + RESULT + PrepareGroupCallRes + ERRORS { + systemFailure | + noGroupCallNumberAvailable | + unexpectedDataValue} + CODE local:39 } + +sendGroupCallEndSignal OPERATION ::= { --Timer l + ARGUMENT + SendGroupCallEndSignalArg + RESULT + SendGroupCallEndSignalRes + CODE local:40 } + +processGroupCallSignalling OPERATION ::= { --Timer s + ARGUMENT + ProcessGroupCallSignallingArg + CODE local:41 } + +forwardGroupCallSignalling OPERATION ::= { --Timer s + ARGUMENT + ForwardGroupCallSignallingArg + CODE local:42 } + +sendGroupCallInfo OPERATION ::= { --Timer m + ARGUMENT + SendGroupCallInfoArg + RESULT + SendGroupCallInfoRes + ERRORS { + systemFailure | + ongoingGroupCall | + unexpectedDataValue | + dataMissing | + teleserviceNotProvisioned | + unknownSubscriber} + CODE local:84 } + + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-LCS-DataTypes.asn b/epan/dissectors/asn1/gsm_map/MAP-LCS-DataTypes.asn new file mode 100644 index 00000000..35d93047 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-LCS-DataTypes.asn @@ -0,0 +1,714 @@ +-- MAP-LCS-DataTypes.asn +-- +-- Taken from 3GPP TS 29.002 V17.1.0 (2021-06) +-- +-- 17.7.13 Location service data types +-- + +MAP-LCS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-LCS-DataTypes (25) version20 (20)} + +DEFINITIONS +IMPLICIT TAGS +::= +BEGIN + +EXPORTS + RoutingInfoForLCS-Arg, + RoutingInfoForLCS-Res, + ProvideSubscriberLocation-Arg, + ProvideSubscriberLocation-Res, + SubscriberLocationReport-Arg, + SubscriberLocationReport-Res, +LocationType, +DeferredLocationEventType, +LCSClientName, +LCS-QoS, +Horizontal-Accuracy, +ResponseTime, +Ext-GeographicalInformation, +VelocityEstimate, +SupportedGADShapes, +Add-GeographicalInformation, +LCSRequestorID, +LCS-ReferenceNumber, +LCSCodeword, +AreaEventInfo, +ReportingPLMNList, +PeriodicLDRInfo, +SequenceNumber, +LCSClientType, +LCS-Priority, +OccurrenceInfo, +IntervalTime +; + +IMPORTS + AddressString, + ISDN-AddressString, + IMEI, + IMSI, + LMSI, + SubscriberIdentity, + AgeOfLocationInformation, + LCSClientExternalID, + LCSClientInternalID, +LCSServiceTypeID, +CellGlobalIdOrServiceAreaIdOrLAI, +PLMN-Id, + GSN-Address, + DiameterIdentity +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version20 (20)} + + ExtensionContainer, + SLR-ArgExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version20 (20)} + + USSD-DataCodingScheme, +USSD-String +FROM MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-SS-DataTypes (14) version20 (20)} + + APN, + SupportedLCS-CapabilitySets +FROM MAP-MS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-MS-DataTypes (11) version20 (20)} + + Additional-Number +FROM MAP-SM-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SM-DataTypes (16) version20 (20)} +; + + +RoutingInfoForLCS-Arg ::= SEQUENCE { + mlcNumber [0] ISDN-AddressString, + targetMS [1] SubscriberIdentity, + extensionContainer [2] ExtensionContainer OPTIONAL, + ...} + +RoutingInfoForLCS-Res ::= SEQUENCE { + targetMS [0] SubscriberIdentity, + lcsLocationInfo [1] LCSLocationInfo, + extensionContainer [2] ExtensionContainer OPTIONAL, + ..., + v-gmlc-Address [3] GSN-Address OPTIONAL, + h-gmlc-Address [4] GSN-Address OPTIONAL, + ppr-Address [5] GSN-Address OPTIONAL, + additional-v-gmlc-Address [6] GSN-Address OPTIONAL } + +LCSLocationInfo ::= SEQUENCE { + networkNode-Number ISDN-AddressString, + -- NetworkNode-number can be msc-number, sgsn-number or a dummy value of "0" + lmsi [0] LMSI OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ... , + gprsNodeIndicator [2] NULL OPTIONAL, + -- gprsNodeIndicator is set only if the SGSN number is sent as the Network Node Number + additional-Number [3] Additional-Number OPTIONAL, + supportedLCS-CapabilitySets [4] SupportedLCS-CapabilitySets OPTIONAL, + additional-LCS-CapabilitySets [5] SupportedLCS-CapabilitySets OPTIONAL, + mme-Name [6] DiameterIdentity OPTIONAL, + aaa-Server-Name [8] DiameterIdentity OPTIONAL, + sgsn-Name [9] DiameterIdentity OPTIONAL, + sgsn-Realm [10] DiameterIdentity OPTIONAL + } + +ProvideSubscriberLocation-Arg ::= SEQUENCE { + locationType LocationType, + mlc-Number ISDN-AddressString, + lcs-ClientID [0] LCS-ClientID OPTIONAL, + privacyOverride [1] NULL OPTIONAL, + imsi [2] IMSI OPTIONAL, + msisdn [3] ISDN-AddressString OPTIONAL, + lmsi [4] LMSI OPTIONAL, + imei [5] IMEI OPTIONAL, + lcs-Priority [6] LCS-Priority OPTIONAL, + lcs-QoS [7] LCS-QoS OPTIONAL, + extensionContainer [8] ExtensionContainer OPTIONAL, + ... , + supportedGADShapes [9] SupportedGADShapes OPTIONAL, + lcs-ReferenceNumber [10] LCS-ReferenceNumber OPTIONAL, + lcsServiceTypeID [11] LCSServiceTypeID OPTIONAL, + lcsCodeword [12] LCSCodeword OPTIONAL, + lcs-PrivacyCheck [13] LCS-PrivacyCheck OPTIONAL, + areaEventInfo [14] AreaEventInfo OPTIONAL, + h-gmlc-Address [15] GSN-Address OPTIONAL, + mo-lrShortCircuitIndicator [16] NULL OPTIONAL, + periodicLDRInfo [17] PeriodicLDRInfo OPTIONAL, + reportingPLMNList [18] ReportingPLMNList OPTIONAL } + + -- one of imsi or msisdn is mandatory + -- If a location estimate type indicates activate deferred location or cancel deferred + -- location, a lcs-Reference number shall be included. + +LocationType ::= SEQUENCE { + locationEstimateType [0] LocationEstimateType, + ..., + deferredLocationEventType [1] DeferredLocationEventType OPTIONAL } + +LocationEstimateType ::= ENUMERATED { + currentLocation (0), + currentOrLastKnownLocation (1), + initialLocation (2), + ..., + activateDeferredLocation (3), + cancelDeferredLocation (4) , + notificationVerificationOnly (5) } +-- exception handling: +-- a ProvideSubscriberLocation-Arg containing an unrecognized LocationEstimateType +-- shall be rejected by the receiver with a return error cause of unexpected data value + +DeferredLocationEventType ::= BIT STRING { + msAvailable (0) , + enteringIntoArea (1), + leavingFromArea (2), + beingInsideArea (3) , + periodicLDR (4) } (SIZE (1..16)) +-- beingInsideArea is always treated as oneTimeEvent regardless of the possible value +-- of occurrenceInfo inside areaEventInfo. +-- exception handling: +-- a ProvideSubscriberLocation-Arg containing other values than listed above in +-- DeferredLocationEventType shall be rejected by the receiver with a return error cause of +-- unexpected data value. + +LCS-ClientID ::= SEQUENCE { + lcsClientType [0] LCSClientType, + lcsClientExternalID [1] LCSClientExternalID OPTIONAL, + lcsClientDialedByMS [2] AddressString OPTIONAL, + lcsClientInternalID [3] LCSClientInternalID OPTIONAL, + lcsClientName [4] LCSClientName OPTIONAL, + ..., + lcsAPN [5] APN OPTIONAL, + lcsRequestorID [6] LCSRequestorID OPTIONAL } + +LCSClientType ::= ENUMERATED { + emergencyServices (0), + valueAddedServices (1), + plmnOperatorServices (2), + lawfulInterceptServices (3), + ... } + -- exception handling: + -- unrecognized values may be ignored if the LCS client uses the privacy override + -- otherwise, an unrecognized value shall be treated as unexpected data by a receiver + -- a return error shall then be returned if received in a MAP invoke + +LCSClientName ::= SEQUENCE { + dataCodingScheme [0] USSD-DataCodingScheme, + nameString [2] NameString, + ..., + lcs-FormatIndicator [3] LCS-FormatIndicator OPTIONAL } + +-- The USSD-DataCodingScheme shall indicate use of the default alphabet through the +-- following encoding +-- bit 7 6 5 4 3 2 1 0 +-- 0 0 0 0 1 1 1 1 + +NameString ::= USSD-String (SIZE (1..maxNameStringLength)) + +maxNameStringLength INTEGER ::= 63 + +LCSRequestorID ::= SEQUENCE { + dataCodingScheme [0] USSD-DataCodingScheme, + requestorIDString [1] RequestorIDString, + ..., + lcs-FormatIndicator [2] LCS-FormatIndicator OPTIONAL } + +RequestorIDString ::= USSD-String (SIZE (1..maxRequestorIDStringLength)) + +maxRequestorIDStringLength INTEGER ::= 63 + +LCS-FormatIndicator ::= ENUMERATED { + logicalName (0), + e-mailAddress (1), + msisdn (2), + url (3), + sipUrl (4), + ... } + +LCS-Priority ::= OCTET STRING (SIZE (1)) + -- 0 = highest priority + -- 1 = normal priority + -- all other values treated as 1 + +LCS-QoS ::= SEQUENCE { + horizontal-accuracy [0] Horizontal-Accuracy OPTIONAL, + verticalCoordinateRequest [1] NULL OPTIONAL, + vertical-accuracy [2] Vertical-Accuracy OPTIONAL, responseTime [3] ResponseTime OPTIONAL, + extensionContainer [4] ExtensionContainer OPTIONAL, + ..., + velocityRequest [5] NULL OPTIONAL +} + +Horizontal-Accuracy ::= OCTET STRING (SIZE (1)) + -- bit 8 = 0 + -- bits 7-1 = 7 bit Uncertainty Code defined in 3GPP TS 23.032. The horizontal location + -- error should be less than the error indicated by the uncertainty code with 67% + -- confidence. + +Vertical-Accuracy ::= OCTET STRING (SIZE (1)) + -- bit 8 = 0 + -- bits 7-1 = 7 bit Vertical Uncertainty Code defined in 3GPP TS 23.032. + -- The vertical location error should be less than the error indicated + -- by the uncertainty code with 67% confidence. + +ResponseTime ::= SEQUENCE { + responseTimeCategory ResponseTimeCategory, + ...} +-- note: an expandable SEQUENCE simplifies later addition of a numeric response time. + +ResponseTimeCategory ::= ENUMERATED { + lowdelay (0), + delaytolerant (1), + ... } +-- exception handling: +-- an unrecognized value shall be treated the same as value 1 (delaytolerant) + +SupportedGADShapes ::= BIT STRING { + ellipsoidPoint (0), + ellipsoidPointWithUncertaintyCircle (1), + ellipsoidPointWithUncertaintyEllipse (2), + polygon (3), + ellipsoidPointWithAltitude (4), + ellipsoidPointWithAltitudeAndUncertaintyElipsoid (5), + ellipsoidArc (6) } (SIZE (7..16)) +-- A node shall mark in the BIT STRING all Shapes defined in 3GPP TS 23.032 it supports. +-- exception handling: bits 7 to 15 shall be ignored if received. + +LCS-ReferenceNumber::= OCTET STRING (SIZE(1)) + +LCSCodeword ::= SEQUENCE { + dataCodingScheme [0] USSD-DataCodingScheme, + lcsCodewordString [1] LCSCodewordString, + ...} + +LCSCodewordString ::= USSD-String (SIZE (1..maxLCSCodewordStringLength)) + +maxLCSCodewordStringLength INTEGER ::= 20 + +LCS-PrivacyCheck ::= SEQUENCE { + callSessionUnrelated [0] PrivacyCheckRelatedAction, + callSessionRelated [1] PrivacyCheckRelatedAction OPTIONAL, + ...} + +PrivacyCheckRelatedAction ::= ENUMERATED { + allowedWithoutNotification (0), + allowedWithNotification (1), + allowedIfNoResponse (2), + restrictedIfNoResponse (3), + notAllowed (4), + ...} +-- exception handling: +-- a ProvideSubscriberLocation-Arg containing an unrecognized PrivacyCheckRelatedAction +-- shall be rejected by the receiver with a return error cause of unexpected data value + +AreaEventInfo ::= SEQUENCE { + areaDefinition [0] AreaDefinition, + occurrenceInfo [1] OccurrenceInfo OPTIONAL, + intervalTime [2] IntervalTime OPTIONAL, + ...} + +AreaDefinition ::= SEQUENCE { + areaList [0] AreaList, + ...} + +AreaList ::= SEQUENCE SIZE (1..maxNumOfAreas) OF Area + +maxNumOfAreas INTEGER ::= 10 + +Area ::= SEQUENCE { + areaType [0] AreaType, + areaIdentification [1] AreaIdentification, + ...} + +AreaType ::= ENUMERATED { + countryCode (0), + plmnId (1), + locationAreaId (2), + routingAreaId (3), + cellGlobalId (4), + ..., + utranCellId (5) } + +AreaIdentification ::= OCTET STRING (SIZE (2..7)) + -- The internal structure is defined as follows: + -- octet 1 bits 4321 Mobile Country Code 1st digit + -- bits 8765 Mobile Country Code 2nd digit + -- octet 2 bits 4321 Mobile Country Code 3rd digit + -- bits 8765 Mobile Network Code 3rd digit if 3 digit MNC included + -- or filler (1111) + -- octet 3 bits 4321 Mobile Network Code 1st digit + -- bits 8765 Mobile Network Code 2nd digit + -- octets 4 and 5 Location Area Code (LAC) for Local Area Id, + -- Routing Area Id and Cell Global Id + -- octet 6 Routing Area Code (RAC) for Routing Area Id + -- octets 6 and 7 Cell Identity (CI) for Cell Global Id + -- octets 4 until 7 Utran Cell Identity (UC-Id) for Utran Cell Id + +OccurrenceInfo ::= ENUMERATED { + oneTimeEvent (0), + multipleTimeEvent (1), + ...} + +IntervalTime ::= INTEGER (1..32767) + -- minimum interval time between area reports in seconds + +PeriodicLDRInfo ::= SEQUENCE { + reportingAmount ReportingAmount, + reportingInterval ReportingInterval, + ...} +-- reportingInterval x reportingAmount shall not exceed 8639999 (99 days, 23 hours, +-- 59 minutes and 59 seconds) for compatibility with OMA MLP and RLP + +ReportingAmount ::= INTEGER (1..maxReportingAmount) + +maxReportingAmount INTEGER ::= 8639999 + +ReportingInterval ::= INTEGER (1..maxReportingInterval) +-- ReportingInterval is in seconds + +maxReportingInterval INTEGER ::= 8639999 + +ReportingPLMNList::= SEQUENCE { + plmn-ListPrioritized [0] NULL OPTIONAL, + plmn-List [1] PLMNList, + ...} + +PLMNList::= SEQUENCE SIZE (1..maxNumOfReportingPLMN) OF + ReportingPLMN + +maxNumOfReportingPLMN INTEGER ::= 20 + +ReportingPLMN::= SEQUENCE { + plmn-Id [0] PLMN-Id, + ran-Technology [1] RAN-Technology OPTIONAL, + ran-PeriodicLocationSupport [2] NULL OPTIONAL, + ...} + +RAN-Technology ::= ENUMERATED { + gsm (0), + umts (1), + ...} + +ProvideSubscriberLocation-Res ::= SEQUENCE { + locationEstimate Ext-GeographicalInformation, + ageOfLocationEstimate [0] AgeOfLocationInformation OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ... , + add-LocationEstimate [2] Add-GeographicalInformation OPTIONAL, + deferredmt-lrResponseIndicator [3] NULL OPTIONAL, + geranPositioningData [4] PositioningDataInformation OPTIONAL, + utranPositioningData [5] UtranPositioningDataInfo OPTIONAL, + cellIdOrSai [6] CellGlobalIdOrServiceAreaIdOrLAI OPTIONAL, + sai-Present [7] NULL OPTIONAL, + accuracyFulfilmentIndicator [8] AccuracyFulfilmentIndicator OPTIONAL, + velocityEstimate [9] VelocityEstimate OPTIONAL, + mo-lrShortCircuitIndicator [10] NULL OPTIONAL, + geranGANSSpositioningData [11] GeranGANSSpositioningData OPTIONAL, + utranGANSSpositioningData [12] UtranGANSSpositioningData OPTIONAL, targetServingNodeForHandover [13] ServingNodeAddress OPTIONAL, + utranAdditionalPositioningData [14] UtranAdditionalPositioningData OPTIONAL, + utranBaroPressureMeas [15] UtranBaroPressureMeas OPTIONAL, + utranCivicAddress [16] UtranCivicAddress OPTIONAL } + +-- if deferredmt-lrResponseIndicator is set, locationEstimate is ignored. + +-- the add-LocationEstimate parameter shall not be sent to a node that did not indicate the +-- geographic shapes supported in the ProvideSubscriberLocation-Arg +-- The locationEstimate and the add-locationEstimate parameters shall not be sent if +-- the supportedGADShapes parameter has been received in ProvideSubscriberLocation-Arg +-- and the shape encoded in locationEstimate or add-LocationEstimate is not marked +-- as supported in supportedGADShapes. In such a case ProvideSubscriberLocation +-- shall be rejected with error FacilityNotSupported with additional indication +-- shapeOfLocationEstimateNotSupported. +-- sai-Present indicates that the cellIdOrSai parameter contains a Service Area Identity. + +AccuracyFulfilmentIndicator ::= ENUMERATED { + requestedAccuracyFulfilled (0), + requestedAccuracyNotFulfilled (1), + ... } + +Ext-GeographicalInformation ::= OCTET STRING (SIZE (1..maxExt-GeographicalInformation)) + -- Refers to geographical Information defined in 3GPP TS 23.032. + -- This is composed of 1 or more octets with an internal structure according to + -- 3GPP TS 23.032 + -- Octet 1: Type of shape, only the following shapes in 3GPP TS 23.032 are allowed: + -- (a) Ellipsoid point with uncertainty circle + -- (b) Ellipsoid point with uncertainty ellipse + -- (c) Ellipsoid point with altitude and uncertainty ellipsoid + -- (d) Ellipsoid Arc + -- (e) Ellipsoid Point + -- Any other value in octet 1 shall be treated as invalid + -- Octets 2 to 8 for case (a) – Ellipsoid point with uncertainty circle + -- Degrees of Latitude 3 octets + -- Degrees of Longitude 3 octets + -- Uncertainty code 1 octet + -- Octets 2 to 11 for case (b) – Ellipsoid point with uncertainty ellipse: + -- Degrees of Latitude 3 octets + -- Degrees of Longitude 3 octets + -- Uncertainty semi-major axis 1 octet + -- Uncertainty semi-minor axis 1 octet + -- Angle of major axis 1 octet + -- Confidence 1 octet + -- Octets 2 to 14 for case (c) – Ellipsoid point with altitude and uncertainty ellipsoid + -- Degrees of Latitude 3 octets + -- Degrees of Longitude 3 octets + -- Altitude 2 octets + -- Uncertainty semi-major axis 1 octet + -- Uncertainty semi-minor axis 1 octet + -- Angle of major axis 1 octet + -- Uncertainty altitude 1 octet + -- Confidence 1 octet + -- Octets 2 to 13 for case (d) – Ellipsoid Arc + -- Degrees of Latitude 3 octets + -- Degrees of Longitude 3 octets + -- Inner radius 2 octets + -- Uncertainty radius 1 octet + -- Offset angle 1 octet + -- Included angle 1 octet + -- Confidence 1 octet + -- Octets 2 to 7 for case (e) – Ellipsoid Point + -- Degrees of Latitude 3 octets + -- Degrees of Longitude 3 octets + + -- + -- An Ext-GeographicalInformation parameter comprising more than one octet and + -- containing any other shape or an incorrect number of octets or coding according + -- to 3GPP TS 23.032 shall be treated as invalid data by a receiver. + -- + -- An Ext-GeographicalInformation parameter comprising one octet shall be discarded + -- by the receiver if an Add-GeographicalInformation parameter is received + -- in the same message. + -- + -- An Ext-GeographicalInformation parameter comprising one octet shall be treated as + -- invalid data by the receiver if an Add-GeographicalInformation parameter is not + -- received in the same message. + +maxExt-GeographicalInformation INTEGER ::= 20 + -- the maximum length allows for further shapes in 3GPP TS 23.032 to be included in later + -- versions of 3GPP TS 29.002 + +VelocityEstimate ::= OCTET STRING (SIZE (4..7)) + -- Refers to Velocity description defined in 3GPP TS 23.032. + -- This is composed of 4 or more octets with an internal structure according to + -- 3GPP TS 23.032 + -- Octet 1: Type of velocity, only the following types in 3GPP TS 23.032 are allowed: + -- (a) Horizontal Velocity + -- (b) Horizontal with Vertical Velocity + -- (c) Horizontal Velocity with Uncertainty + -- (d) Horizontal with Vertical Velocity and Uncertainty + -- For types Horizontal with Vertical Velocity and Horizontal with Vertical Velocity + -- and Uncertainty, the direction of the Vertical Speed is also included in Octet 1 + -- Any other value in octet 1 shall be treated as invalid + -- Octets 2 to 4 for case (a) Horizontal velocity: + -- Bearing 1 octet + -- Horizontal Speed 2 octets + -- Octets 2 to 5 for case (b) – Horizontal with Vertical Velocity: + -- Bearing 1 octet + -- Horizontal Speed 2 octets + -- Vertical Speed 1 octet + -- Octets 2 to 5 for case (c) – Horizontal velocity with Uncertainty: + -- Bearing 1 octet + -- Horizontal Speed 2 octets + -- Uncertainty Speed 1 octet + -- Octets 2 to 7 for case (d) – Horizontal with Vertical Velocity and Uncertainty: + -- Bearing 1 octet + -- Horizontal Speed 2 octets + -- Vertical Speed 1 octet + -- Horizontal Uncertainty Speed 1 octet + -- Vertical Uncertainty Speed 1 octet + +PositioningDataInformation ::= OCTET STRING (SIZE (2..maxPositioningDataInformation)) + -- Refers to the Positioning Data defined in 3GPP TS 49.031. + -- This is composed of 2 or more octets with an internal structure according to + -- 3GPP TS 49.031. + +maxPositioningDataInformation INTEGER ::= 10 + -- + +UtranPositioningDataInfo ::= OCTET STRING (SIZE (3..maxUtranPositioningDataInfo)) + -- Refers to the Position Data defined in 3GPP TS 25.413. + -- This is composed of the positioningDataDiscriminator and the positioningDataSet + -- included in positionData as defined in 3GPP TS 25.413. + +maxUtranPositioningDataInfo INTEGER ::= 11 + -- + +GeranGANSSpositioningData ::= OCTET STRING (SIZE (2..maxGeranGANSSpositioningData)) + -- Refers to the GANSS Positioning Data defined in 3GPP TS 49.031. + -- This is composed of 2 or more octets with an internal structure according to + -- 3GPP TS 49.031. + +maxGeranGANSSpositioningData INTEGER ::= 10 + -- + +UtranGANSSpositioningData ::= OCTET STRING (SIZE (1..maxUtranGANSSpositioningData)) + -- Refers to the Position Data defined in 3GPP TS 25.413. + -- This is composed of the GANSS-PositioningDataSet only, included in PositionData + -- as defined in 3GPP TS 25.413. + +maxUtranGANSSpositioningData INTEGER ::= 9 + -- + +UtranAdditionalPositioningData ::= OCTET STRING (SIZE (1..maxUtranAdditionalPositioningData)) + -- Refers to the Position Data defined in 3GPP TS 25.413. + -- This is composed of the Additional-PositioningDataSet only, included in PositionData + -- as defined in 3GPP TS 25.413. + +maxUtranAdditionalPositioningData INTEGER ::= 8 + -- + +UtranBaroPressureMeas ::= INTEGER (30000..115000) + -- Refers to the barometric pressure measurement defined in 3GPP TS 25.413. + -- This is composed of the BarometricPressureMeasurement only as defined in 3GPP TS + -- 25.413. + +UtranCivicAddress ::= OCTET STRING + -- Refers to the civic address defined in 3GPP TS 25.413. + -- This is composed of the CivicAddress only as defined in 3GPP TS 25.413. + +Add-GeographicalInformation ::= OCTET STRING (SIZE (1..maxAdd-GeographicalInformation)) + -- Refers to geographical Information defined in 3GPP TS 23.032. + -- This is composed of 1 or more octets with an internal structure according to + -- 3GPP TS 23.032 + -- Octet 1: Type of shape, all the shapes defined in 3GPP TS 23.032 are allowed: + -- Octets 2 to n (where n is the total number of octets necessary to encode the shape + -- according to 3GPP TS 23.032) are used to encode the shape itself in accordance with the + -- encoding defined in 3GPP TS 23.032 + -- + -- An Add-GeographicalInformation parameter, whether valid or invalid, received + -- together with a valid Ext-GeographicalInformation parameter in the same message + -- shall be discarded. + -- + -- An Add-GeographicalInformation parameter containing any shape not defined in + -- 3GPP TS 23.032 or an incorrect number of octets or coding according to + -- 3GPP TS 23.032 shall be treated as invalid data by a receiver if not received + -- together with a valid Ext-GeographicalInformation parameter in the same message. + +maxAdd-GeographicalInformation INTEGER ::= 91 + -- the maximum length allows support for all the shapes currently defined in 3GPP TS 23.032 + +SubscriberLocationReport-Arg ::= SEQUENCE { + lcs-Event LCS-Event, + lcs-ClientID LCS-ClientID, + lcsLocationInfo LCSLocationInfo, + msisdn [0] ISDN-AddressString OPTIONAL, + imsi [1] IMSI OPTIONAL, + imei [2] IMEI OPTIONAL, + na-ESRD [3] ISDN-AddressString OPTIONAL, + na-ESRK [4] ISDN-AddressString OPTIONAL, + locationEstimate [5] Ext-GeographicalInformation OPTIONAL, + ageOfLocationEstimate [6] AgeOfLocationInformation OPTIONAL, + slr-ArgExtensionContainer [7] SLR-ArgExtensionContainer OPTIONAL, + ... , + add-LocationEstimate [8] Add-GeographicalInformation OPTIONAL, + deferredmt-lrData [9] Deferredmt-lrData OPTIONAL, + lcs-ReferenceNumber [10] LCS-ReferenceNumber OPTIONAL, + geranPositioningData [11] PositioningDataInformation OPTIONAL, + utranPositioningData [12] UtranPositioningDataInfo OPTIONAL, + cellIdOrSai [13] CellGlobalIdOrServiceAreaIdOrLAI OPTIONAL, + h-gmlc-Address [14] GSN-Address OPTIONAL, + lcsServiceTypeID [15] LCSServiceTypeID OPTIONAL, + sai-Present [17] NULL OPTIONAL, + pseudonymIndicator [18] NULL OPTIONAL, + accuracyFulfilmentIndicator [19] AccuracyFulfilmentIndicator OPTIONAL, + velocityEstimate [20] VelocityEstimate OPTIONAL, + sequenceNumber [21] SequenceNumber OPTIONAL, + periodicLDRInfo [22] PeriodicLDRInfo OPTIONAL, + mo-lrShortCircuitIndicator [23] NULL OPTIONAL, + geranGANSSpositioningData [24] GeranGANSSpositioningData OPTIONAL, + utranGANSSpositioningData [25] UtranGANSSpositioningData OPTIONAL, + targetServingNodeForHandover [26] ServingNodeAddress OPTIONAL, + utranAdditionalPositioningData [27] UtranAdditionalPositioningData OPTIONAL, + utranBaroPressureMeas [28] UtranBaroPressureMeas OPTIONAL, + utranCivicAddress [29] UtranCivicAddress OPTIONAL } + + -- one of msisdn or imsi is mandatory + -- a location estimate that is valid for the locationEstimate parameter should + -- be transferred in this parameter in preference to the add-LocationEstimate. + -- the deferredmt-lrData parameter shall be included if and only if the lcs-Event + -- indicates a deferredmt-lrResponse. + -- if the lcs-Event indicates a deferredmt-lrResponse then the locationEstimate + -- and the add-locationEstimate parameters shall not be sent if the + -- supportedGADShapes parameter had been received in ProvideSubscriberLocation-Arg + -- and the shape encoded in locationEstimate or add-LocationEstimate was not marked + -- as supported in supportedGADShapes. In such a case terminationCause + -- in deferredmt-lrData shall be present with value + -- shapeOfLocationEstimateNotSupported. + -- If a lcs event indicates deferred mt-lr response, the lcs-Reference number shall be + -- included. + -- sai-Present indicates that the cellIdOrSai parameter contains a Service Area Identity. + +Deferredmt-lrData ::= SEQUENCE { + deferredLocationEventType DeferredLocationEventType, + terminationCause [0] TerminationCause OPTIONAL, + lcsLocationInfo [1] LCSLocationInfo OPTIONAL, + ...} + -- lcsLocationInfo may be included only if a terminationCause is present + -- indicating mt-lrRestart. + +LCS-Event ::= ENUMERATED { + emergencyCallOrigination (0), + emergencyCallRelease (1), + mo-lr (2), + ..., + deferredmt-lrResponse (3) , + deferredmo-lrTTTPInitiation (4), + emergencyCallHandover (5) } + -- deferredmt-lrResponse is applicable to the delivery of a location estimate + -- for an LDR initiated earlier by either the network (via an MT-LR activate deferred + -- location) or the UE (via a deferred MO-LR TTTP initiation) + -- exception handling: + -- a SubscriberLocationReport-Arg containing an unrecognized LCS-Event + -- shall be rejected by a receiver with a return error cause of unexpected data value + +TerminationCause ::= ENUMERATED { + normal (0), + errorundefined (1), + internalTimeout (2), + congestion (3), + mt-lrRestart (4), + privacyViolation (5), + ..., + shapeOfLocationEstimateNotSupported (6) , + subscriberTermination (7), + uETermination (8), + networkTermination (9) } +-- mt-lrRestart shall be used to trigger the GMLC to restart the location procedure, +-- either because the sending node knows that the terminal has moved under coverage +-- of another MSC or SGSN (e.g. Send Identification received), or because the subscriber +-- has been deregistered due to a Cancel Location received from HLR. +-- +-- exception handling +-- an unrecognized value shall be treated the same as value 1 (errorundefined) + +SequenceNumber ::= INTEGER (1..maxReportingAmount) + +ServingNodeAddress ::= CHOICE { + msc-Number [0] ISDN-AddressString, + sgsn-Number [1] ISDN-AddressString, + mme-Number [2] DiameterIdentity } + +SubscriberLocationReport-Res ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ..., + na-ESRK [0] ISDN-AddressString OPTIONAL, + na-ESRD [1] ISDN-AddressString OPTIONAL, + h-gmlc-Address [2] GSN-Address OPTIONAL, + mo-lrShortCircuitIndicator [3] NULL OPTIONAL, + reportingPLMNList [4] ReportingPLMNList OPTIONAL, + lcs-ReferenceNumber [5] LCS-ReferenceNumber OPTIONAL } + +-- na-ESRK and na-ESRD are mutually exclusive +-- +-- exception handling +-- receipt of both na-ESRK and na-ESRD shall be treated the same as a return error + + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-LocationServiceOperations.asn b/epan/dissectors/asn1/gsm_map/MAP-LocationServiceOperations.asn new file mode 100644 index 00000000..2ef800ee --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-LocationServiceOperations.asn @@ -0,0 +1,106 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.6.8 Location service operations + +MAP-LocationServiceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-LocationServiceOperations (24) + version20 (20)} + +DEFINITIONS + +::= + +BEGIN + +EXPORTS + provideSubscriberLocation, +sendRoutingInfoForLCS, +subscriberLocationReport +; + +IMPORTS + OPERATION +FROM Remote-Operations-Information-Objects { +joint-iso-itu-t remote-operations(4) + informationObjects(5) version1(0)} + +systemFailure, + dataMissing, + unexpectedDataValue, + facilityNotSupported, + unknownSubscriber, + absentSubscriber, + unauthorizedRequestingNetwork, + unauthorizedLCSClient, + positionMethodFailure, + resourceLimitation, + unknownOrUnreachableLCSClient, + unidentifiedSubscriber, + illegalEquipment, + illegalSubscriber +FROM MAP-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-Errors (10) version20 (20)} + + RoutingInfoForLCS-Arg, + RoutingInfoForLCS-Res, + ProvideSubscriberLocation-Arg, + ProvideSubscriberLocation-Res, + SubscriberLocationReport-Arg, + SubscriberLocationReport-Res +FROM MAP-LCS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-LCS-DataTypes (25) version20 (20)} +; + +sendRoutingInfoForLCS OPERATION ::= { --Timer m + ARGUMENT + RoutingInfoForLCS-Arg + RESULT + RoutingInfoForLCS-Res + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + facilityNotSupported | + unknownSubscriber | + absentSubscriber | + unauthorizedRequestingNetwork } + CODE local:85 } + +provideSubscriberLocation OPERATION ::= { --Timer ml + ARGUMENT + ProvideSubscriberLocation-Arg + RESULT + ProvideSubscriberLocation-Res + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + facilityNotSupported | + unidentifiedSubscriber | + illegalSubscriber | + illegalEquipment | + absentSubscriber | + unauthorizedRequestingNetwork | + unauthorizedLCSClient | + positionMethodFailure } + CODE local:83 } + +subscriberLocationReport OPERATION ::= { --Timer m + ARGUMENT + SubscriberLocationReport-Arg + RESULT + SubscriberLocationReport-Res + ERRORS { + systemFailure | + dataMissing | + resourceLimitation | + unexpectedDataValue | + unknownSubscriber | + unauthorizedRequestingNetwork | + unknownOrUnreachableLCSClient} + CODE local:86 } + + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-MS-DataTypes.asn b/epan/dissectors/asn1/gsm_map/MAP-MS-DataTypes.asn new file mode 100644 index 00000000..18e73047 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-MS-DataTypes.asn @@ -0,0 +1,3494 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.7.1 Mobile Service data types + +MAP-MS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-MS-DataTypes (11) version20 (20)} + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + +EXPORTS + +-- WS modification: for Ericsson proprietary extensions + RequestedEquipmentInfo, + TripletList, + QuintupletList, +-- End WS modification + -- location registration types + UpdateLocationArg, + UpdateLocationRes, + CancelLocationArg, + CancelLocationRes, + PurgeMS-Arg, + PurgeMS-Res, + SendIdentificationArg, + SendIdentificationRes, + UpdateGprsLocationArg, + UpdateGprsLocationRes, + IST-SupportIndicator, + SupportedLCS-CapabilitySets, + UpdateVcsgLocationArg, + UpdateVcsgLocationRes, + CancelVcsgLocationArg, + CancelVcsgLocationRes, + + + -- handover types + ForwardAccessSignalling-Arg, + PrepareHO-Arg, + PrepareHO-Res, + PrepareSubsequentHO-Arg, + PrepareSubsequentHO-Res, + ProcessAccessSignalling-Arg, + SendEndSignal-Arg, + SendEndSignal-Res, + + -- authentication management types + SendAuthenticationInfoArg, + SendAuthenticationInfoRes, + AuthenticationFailureReportArg, +AuthenticationFailureReportRes, + + -- security management types + Kc, + Cksn, + + -- equipment management types + CheckIMEI-Arg, + CheckIMEI-Res, + + -- subscriber management types + InsertSubscriberDataArg, + InsertSubscriberDataRes, + LSAIdentity, + DeleteSubscriberDataArg, + DeleteSubscriberDataRes, + Ext-QoS-Subscribed, + Ext2-QoS-Subscribed, + Ext3-QoS-Subscribed, + Ext4-QoS-Subscribed, + SubscriberData, + ODB-Data, + SubscriberStatus, + ZoneCodeList, + maxNumOfZoneCodes, + O-CSI, +D-CSI, + O-BcsmCamelTDPCriteriaList, + T-BCSM-CAMEL-TDP-CriteriaList, + SS-CSI, + ServiceKey, + DefaultCallHandling, + DefaultSMS-Handling, + DefaultGPRS-Handling, + CamelCapabilityHandling, + BasicServiceCriteria, + SupportedCamelPhases, + OfferedCamel4CSIs, + OfferedCamel4Functionalities, + maxNumOfCamelTDPData, + CUG-Index, + CUG-Info, + CUG-Interlock, + InterCUG-Restrictions, + IntraCUG-Options, + NotificationToMSUser, + QoS-Subscribed, +IST-AlertTimerValue, + T-CSI, + T-BcsmTriggerDetectionPoint, +APN, +AdditionalInfo, + + -- fault recovery types + ResetArg, + RestoreDataArg, + RestoreDataRes, + +-- provide subscriber info types +GeographicalInformation, +MS-Classmark2, +GPRSMSClass, + + -- subscriber information enquiry types + ProvideSubscriberInfoArg, + ProvideSubscriberInfoRes, + SubscriberInfo, + LocationInformation, + LocationInformationGPRS, + SubscriberState, + GPRSChargingID, +MNPInfoRes, + RouteingNumber, + + -- any time information enquiry types + AnyTimeInterrogationArg, + AnyTimeInterrogationRes, + + -- any time information handling types + AnyTimeSubscriptionInterrogationArg, + AnyTimeSubscriptionInterrogationRes, + AnyTimeModificationArg, + AnyTimeModificationRes, + + -- subscriber data modification notification types + NoteSubscriberDataModifiedArg, + NoteSubscriberDataModifiedRes, + + -- gprs location information retrieval types + SendRoutingInfoForGprsArg, + SendRoutingInfoForGprsRes, + + -- failure reporting types + FailureReportArg, + FailureReportRes, + + -- gprs notification types + NoteMsPresentForGprsArg, + NoteMsPresentForGprsRes, + + -- Mobility Management types +NoteMM-EventArg, + NoteMM-EventRes, + NumberPortabilityStatus, + PagingArea, + + -- VGCS / VBS types types +GroupId, +Long-GroupId, +AdditionalSubscriptions + +; + +IMPORTS + maxNumOfSS, + SS-SubscriptionOption, + SS-List, + SS-ForBS-Code, + Password, + OverrideCategory, + CliRestrictionOption +FROM MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-DataTypes (14) version20 (20)} + + SS-Code +FROM MAP-SS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-Code (15) version20 (20)} + + Ext-BearerServiceCode +FROM MAP-BS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-BS-Code (20) version20 (20)} + + Ext-TeleserviceCode +FROM MAP-TS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-TS-Code (19) version20 (20)} + + AddressString, +ISDN-AddressString, + ISDN-SubaddressString, + FTN-AddressString, + AccessNetworkSignalInfo, + IMSI, + IMEI, + TMSI, + HLR-List, + LMSI, + Identity, + GlobalCellId, + CellGlobalIdOrServiceAreaIdOrLAI, + Ext-BasicServiceCode, + NAEA-PreferredCI, + EMLPP-Info, + MC-SS-Info, + SubscriberIdentity, + AgeOfLocationInformation, + LCSClientExternalID, + LCSClientInternalID, + Ext-SS-Status, + LCSServiceTypeID, + ASCI-CallReference, + TBCD-STRING, + LAIFixedLength, + PLMN-Id, +EMLPP-Priority, +GSN-Address, +DiameterIdentity, +Time, +E-UTRAN-CGI, +NR-CGI, +TA-Id, +NR-TA-Id, +RAIdentity, +NetworkNodeDiameterAddress +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version20 (20)} + + ExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version20 (20)} + + AbsentSubscriberDiagnosticSM +FROM MAP-ER-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ER-DataTypes (17) version20 (20)} + + TracePropagationList +FROM MAP-OM-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-OM-DataTypes (12) version20 (20)} + +; + +-- location registration types + +UpdateLocationArg ::= SEQUENCE { + imsi IMSI, + msc-Number [1] ISDN-AddressString, + vlr-Number ISDN-AddressString, + lmsi [10] LMSI OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ... , + vlr-Capability [6] VLR-Capability OPTIONAL, + informPreviousNetworkEntity [11] NULL OPTIONAL, + cs-LCS-NotSupportedByUE [12] NULL OPTIONAL, + v-gmlc-Address [2] GSN-Address OPTIONAL, + add-info [13] ADD-Info OPTIONAL, + pagingArea [14] PagingArea OPTIONAL, + skipSubscriberDataUpdate [15] NULL OPTIONAL, + -- The skipSubscriberDataUpdate parameter in the UpdateLocationArg and the ADD-Info + -- structures carry the same semantic. + restorationIndicator [16] NULL OPTIONAL, + eplmn-List [3] EPLMN-List OPTIONAL, + mme-DiameterAddress [4] NetworkNodeDiameterAddress OPTIONAL + } + +VLR-Capability ::= SEQUENCE{ + supportedCamelPhases [0] SupportedCamelPhases OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ... , + solsaSupportIndicator [2] NULL OPTIONAL, + istSupportIndicator [1] IST-SupportIndicator OPTIONAL, + superChargerSupportedInServingNetworkEntity [3] SuperChargerInfo OPTIONAL, + longFTN-Supported [4] NULL OPTIONAL, + supportedLCS-CapabilitySets [5] SupportedLCS-CapabilitySets OPTIONAL, + offeredCamel4CSIs [6] OfferedCamel4CSIs OPTIONAL, + supportedRAT-TypesIndicator [7] SupportedRAT-Types OPTIONAL, + longGroupID-Supported [8] NULL OPTIONAL, + mtRoamingForwardingSupported [9] NULL OPTIONAL, + msisdn-lessOperation-Supported [10] NULL OPTIONAL, + reset-ids-Supported [11] NULL OPTIONAL } + +SupportedRAT-Types::= BIT STRING { + utran (0), + geran (1), + gan (2), + i-hspa-evolution (3), + e-utran (4), + nb-iot (5)} (SIZE (2..8)) + -- exception handling: bits 6 to 7 shall be ignored if received and not understood + + + +SuperChargerInfo ::= CHOICE { + sendSubscriberData [0] NULL, + subscriberDataStored [1] AgeIndicator } + +AgeIndicator ::= OCTET STRING (SIZE (1..6)) + -- The internal structure of this parameter is implementation specific. + +IST-SupportIndicator ::= ENUMERATED { + basicISTSupported (0), + istCommandSupported (1), + ...} +-- exception handling: +-- reception of values > 1 shall be mapped to ' istCommandSupported ' + +SupportedLCS-CapabilitySets ::= BIT STRING { + lcsCapabilitySet1 (0), + lcsCapabilitySet2 (1), + lcsCapabilitySet3 (2), + lcsCapabilitySet4 (3) , + lcsCapabilitySet5 (4) } (SIZE (2..16)) +-- Core network signalling capability set1 indicates LCS Release98 or Release99 version. +-- Core network signalling capability set2 indicates LCS Release4. +-- Core network signalling capability set3 indicates LCS Release5. +-- Core network signalling capability set4 indicates LCS Release6. +-- Core network signalling capability set5 indicates LCS Release7 or later version. +-- A node shall mark in the BIT STRING all LCS capability sets it supports. +-- If no bit is set then the sending node does not support LCS. +-- If the parameter is not sent by an VLR then the VLR may support at most capability set1. +-- If the parameter is not sent by an SGSN then no support for LCS is assumed. +-- An SGSN is not allowed to indicate support of capability set1. +-- Other bits than listed above shall be discarded. + +UpdateLocationRes ::= SEQUENCE { + hlr-Number ISDN-AddressString, + extensionContainer ExtensionContainer OPTIONAL, + ..., + add-Capability NULL OPTIONAL, + pagingArea-Capability [0]NULL OPTIONAL } + +ADD-Info ::= SEQUENCE { + imeisv [0] IMEI, + skipSubscriberDataUpdate [1] NULL OPTIONAL, + -- The skipSubscriberDataUpdate parameter in the UpdateLocationArg and the ADD-Info + -- structures carry the same semantic. + ...} + + +PagingArea ::= SEQUENCE SIZE (1..5) OF LocationArea + + +LocationArea ::= CHOICE { + laiFixedLength [0] LAIFixedLength, + lac [1] LAC} + + +LAC ::= OCTET STRING (SIZE (2)) + -- Refers to Location Area Code of the Location Area Identification defined in + -- 3GPP TS 23.003 [17]. + -- Location Area Code according to 3GPP TS 24.008 [35] + +CancelLocationArg ::= [3] SEQUENCE { + identity Identity, + cancellationType CancellationType OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + typeOfUpdate [0] TypeOfUpdate OPTIONAL, + mtrf-SupportedAndAuthorized [1] NULL OPTIONAL, + mtrf-SupportedAndNotAuthorized [2] NULL OPTIONAL, + newMSC-Number [3] ISDN-AddressString OPTIONAL, + newVLR-Number [4] ISDN-AddressString OPTIONAL, + new-lmsi [5] LMSI OPTIONAL, + reattach-Required [6] NULL OPTIONAL + } + --mtrf-SupportedAndAuthorized and mtrf-SupportedAndNotAuthorized shall not + -- both be present + +TypeOfUpdate ::= ENUMERATED { + sgsn-change (0), + mme-change (1), + ...} + -- TypeOfUpdate shall be absent if CancellationType is different from updateProcedure + -- and initialAttachProcedure + +CancellationType ::= ENUMERATED { + updateProcedure (0), + subscriptionWithdraw (1), + ..., + initialAttachProcedure (2)} + -- The HLR shall not send values other than listed above + +CancelLocationRes ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +PurgeMS-Arg ::= [3] SEQUENCE { + imsi IMSI, + vlr-Number [0] ISDN-AddressString OPTIONAL, + sgsn-Number [1] ISDN-AddressString OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + locationInformation [2] LocationInformation OPTIONAL, + locationInformationGPRS [3] LocationInformationGPRS OPTIONAL, + locationInformationEPS [4] LocationInformationEPS OPTIONAL } + +PurgeMS-Res ::= SEQUENCE { + freezeTMSI [0] NULL OPTIONAL, + freezeP-TMSI [1] NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + freezeM-TMSI [2] NULL OPTIONAL } + +SendIdentificationArg ::= SEQUENCE { + tmsi TMSI, + numberOfRequestedVectors NumberOfRequestedVectors OPTIONAL, + -- within a dialogue numberOfRequestedVectors shall be present in + -- the first service request and shall not be present in subsequent service requests. + -- If received in a subsequent service request it shall be discarded. + segmentationProhibited NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + msc-Number ISDN-AddressString OPTIONAL, + previous-LAI [0] LAIFixedLength OPTIONAL, + hopCounter [1] HopCounter OPTIONAL, + mtRoamingForwardingSupported [2] NULL OPTIONAL, + newVLR-Number [3] ISDN-AddressString OPTIONAL, + new-lmsi [4] LMSI OPTIONAL } + +HopCounter ::= INTEGER (0..3) + +SendIdentificationRes ::= [3] SEQUENCE { + imsi IMSI OPTIONAL, + -- IMSI shall be present in the first (or only) service response of a dialogue. + -- If multiple service requests are present in a dialogue then IMSI + -- shall not be present in any service response other than the first one. + authenticationSetList AuthenticationSetList OPTIONAL, + currentSecurityContext [2]CurrentSecurityContext OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ..., + lastUsedLtePLMN-Id [4] PLMN-Id OPTIONAL, + mtCallPendingFlag [5] NULL OPTIONAL } + +-- authentication management types + +AuthenticationSetList ::= CHOICE { + tripletList [0] TripletList, + quintupletList [1] QuintupletList } + +TripletList ::= SEQUENCE SIZE (1..5) OF + AuthenticationTriplet + +QuintupletList ::= SEQUENCE SIZE (1..5) OF + AuthenticationQuintuplet + +AuthenticationTriplet ::= SEQUENCE { + rand RAND, + sres SRES, + kc Kc, + ...} + +AuthenticationQuintuplet ::= SEQUENCE { + rand RAND, + xres XRES, + ck CK, + ik IK, + autn AUTN, + ...} + +CurrentSecurityContext ::= CHOICE { + gsm-SecurityContextData [0] GSM-SecurityContextData, + umts-SecurityContextData [1] UMTS-SecurityContextData } + +GSM-SecurityContextData ::= SEQUENCE { + kc Kc, + cksn Cksn, + ... } + +UMTS-SecurityContextData ::= SEQUENCE { + ck CK, + ik IK, + ksi KSI, + ... } + +RAND ::= OCTET STRING (SIZE (16)) + +SRES ::= OCTET STRING (SIZE (4)) + +Kc ::= OCTET STRING (SIZE (8)) + +XRES ::= OCTET STRING (SIZE (4..16)) + +CK ::= OCTET STRING (SIZE (16)) + +IK ::= OCTET STRING (SIZE (16)) + +AUTN ::= OCTET STRING (SIZE (16)) + +AUTS ::= OCTET STRING (SIZE (14)) + +Cksn ::= OCTET STRING (SIZE (1)) + -- The internal structure is defined in 3GPP TS 24.008 + +KSI ::= OCTET STRING (SIZE (1)) + -- The internal structure is defined in 3GPP TS 24.008 + +AuthenticationFailureReportArg ::= SEQUENCE { + imsi IMSI, + failureCause FailureCause, + extensionContainer ExtensionContainer OPTIONAL, + ... , + re-attempt BOOLEAN OPTIONAL, + accessType AccessType OPTIONAL, + rand RAND OPTIONAL, + vlr-Number [0] ISDN-AddressString OPTIONAL, + sgsn-Number [1] ISDN-AddressString OPTIONAL } + +AccessType ::= ENUMERATED { + call (0), + emergencyCall (1), + locationUpdating (2), + supplementaryService (3), + shortMessage (4), + gprsAttach (5), + routingAreaUpdating (6), + serviceRequest (7), + pdpContextActivation (8), + pdpContextDeactivation (9), + ..., + gprsDetach (10)} + -- exception handling: + -- received values greater than 10 shall be ignored. + +AuthenticationFailureReportRes ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +FailureCause ::= ENUMERATED { + wrongUserResponse (0), + wrongNetworkSignature (1)} + +-- gprs location registration types + +UpdateGprsLocationArg ::= SEQUENCE { + imsi IMSI, + sgsn-Number ISDN-AddressString, + sgsn-Address GSN-Address, + extensionContainer ExtensionContainer OPTIONAL, + ... , + sgsn-Capability [0] SGSN-Capability OPTIONAL, + informPreviousNetworkEntity [1] NULL OPTIONAL, + ps-LCS-NotSupportedByUE [2] NULL OPTIONAL, + v-gmlc-Address [3] GSN-Address OPTIONAL, + add-info [4] ADD-Info OPTIONAL, + eps-info [5] EPS-Info OPTIONAL, + servingNodeTypeIndicator [6] NULL OPTIONAL, + skipSubscriberDataUpdate [7] NULL OPTIONAL, + usedRAT-Type [8] Used-RAT-Type OPTIONAL, + gprsSubscriptionDataNotNeeded [9] NULL OPTIONAL, + nodeTypeIndicator [10] NULL OPTIONAL, + areaRestricted [11] NULL OPTIONAL, + ue-reachableIndicator [12] NULL OPTIONAL, + epsSubscriptionDataNotNeeded [13] NULL OPTIONAL, + ue-srvcc-Capability [14] UE-SRVCC-Capability OPTIONAL, + eplmn-List [15] EPLMN-List OPTIONAL, + mmeNumberforMTSMS [16] ISDN-AddressString OPTIONAL, + smsRegisterRequest [17] SMSRegisterRequest OPTIONAL, + sms-Only [18] NULL OPTIONAL, + removalofMMERegistrationforSMS [22] NULL OPTIONAL, + sgsn-Name [19] DiameterIdentity OPTIONAL, + sgsn-Realm [20] DiameterIdentity OPTIONAL, + lgd-supportIndicator [21] NULL OPTIONAL, + adjacentPLMN-List [23] AdjacentPLMN-List OPTIONAL } + +SMSRegisterRequest::= ENUMERATED { + sms-registration-required (0), + sms-registration-not-preferred (1), + no-preference (2), + ...} + +Used-RAT-Type::= ENUMERATED { + utran (0), + geran (1), + gan (2), + i-hspa-evolution (3), + e-utran (4), + ..., + nb-iot (5)} + -- The value e-utran indicates wide-band e-utran + +EPS-Info ::= CHOICE{ + pdn-gw-update [0] PDN-GW-Update, + isr-Information [1] ISR-Information } + +PDN-GW-Update ::= SEQUENCE{ + apn [0] APN OPTIONAL, + pdn-gw-Identity [1] PDN-GW-Identity OPTIONAL, + contextId [2] ContextId OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ... } +-- The pdn-gw-update IE shall include the pdn-gw-Identity, and the apn or/and the contextID. +-- The HSS shall ignore the eps-info IE if it includes a pdn-gw-update IE which does not +-- include pdn-gw-Identity. +-- The pdn-gw-Identity is defined as OPTIONAL for backward compatility reason with +-- outdated earlier versions of this specification. + + +ISR-Information::= BIT STRING { + updateLocation (0), + cancelSGSN (1), + initialAttachIndicator (2)} (SIZE (3..8)) + -- exception handling: reception of unknown bit assignments in the + -- ISR-Information data type shall be discarded by the receiver + +SGSN-Capability ::= SEQUENCE{ + solsaSupportIndicator NULL OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ... , + superChargerSupportedInServingNetworkEntity [2] SuperChargerInfo OPTIONAL , + gprsEnhancementsSupportIndicator [3] NULL OPTIONAL, + supportedCamelPhases [4] SupportedCamelPhases OPTIONAL, + supportedLCS-CapabilitySets [5] SupportedLCS-CapabilitySets OPTIONAL, + offeredCamel4CSIs [6] OfferedCamel4CSIs OPTIONAL, + smsCallBarringSupportIndicator [7] NULL OPTIONAL, supportedRAT-TypesIndicator [8] SupportedRAT-Types OPTIONAL, + supportedFeatures [9] SupportedFeatures OPTIONAL, + t-adsDataRetrieval [10] NULL OPTIONAL, + homogeneousSupportOfIMSVoiceOverPSSessions [11] BOOLEAN OPTIONAL, + -- "true" indicates homogeneous support, "false" indicates homogeneous non-support + -- in the complete SGSN or MME area + cancellationTypeInitialAttach [12] NULL OPTIONAL, + msisdn-lessOperation-Supported [14] NULL OPTIONAL, + updateofHomogeneousSupportOfIMSVoiceOverPSSessions [15] NULL OPTIONAL, + reset-ids-Supported [16] NULL OPTIONAL, + ext-SupportedFeatures [17] Ext-SupportedFeatures OPTIONAL + } + -- the supportedFeatures , t-adsDataRetrieval, + -- homogeneousSupportOfIMSVoiceOverPSSessions + -- /updateofHomogeneousSupportOfIMSVoiceOverPSSessions and + -- ext-SupportedFeatures are also applied to the MME/IWF + +SupportedFeatures::= BIT STRING { + odb-all-apn (0), + odb-HPLMN-APN (1), + odb-VPLMN-APN (2), + odb-all-og (3), + odb-all-international-og (4), + odb-all-int-og-not-to-HPLMN-country (5), + odb-all-interzonal-og (6), + odb-all-interzonal-og-not-to-HPLMN-country (7), + odb-all-interzonal-og-and-internat-og-not-to-HPLMN-country (8), + regSub (9), + trace (10), + lcs-all-PrivExcep (11), + lcs-universal (12), + lcs-CallSessionRelated (13), + lcs-CallSessionUnrelated (14), + lcs-PLMN-operator (15), + lcs-ServiceType (16), + lcs-all-MOLR-SS (17), + lcs-basicSelfLocation (18), + lcs-autonomousSelfLocation (19), + lcs-transferToThirdParty (20), + sm-mo-pp (21), + barring-OutgoingCalls (22), + baoc (23), + boic (24), + boicExHC (25), + localTimeZoneRetrieval (26), + additionalMsisdn (27), + smsInMME (28), + smsInSGSN (29), + ue-Reachability-Notification (30), + state-Location-Information-Retrieval (31), + partialPurge (32), + gddInSGSN (33), + sgsnCAMELCapability (34), + pcscf-Restoration (35), + dedicatedCoreNetworks (36), + non-IP-PDN-Type-APNs (37), + non-IP-PDP-Type-APNs (38), + nrAsSecondaryRAT (39) } (SIZE (26..40)) + -- for the definition and usage of the above features see the 3GPP TS 29.272 [144]. + -- Additional supported features are encoded in Ext-SupportedFeatures bit string. + + +Ext-SupportedFeatures ::= BIT STRING { + unlicensedSpectrumAsSecondaryRAT (0) } (SIZE (1..40)) + +UE-SRVCC-Capability::= ENUMERATED { + ue-srvcc-not-supported (0), + ue-srvcc-supported (1), + ...} + +UpdateGprsLocationRes ::= SEQUENCE { + hlr-Number ISDN-AddressString, + extensionContainer ExtensionContainer OPTIONAL, + ..., + add-Capability NULL OPTIONAL, + sgsn-mmeSeparationSupported [0] NULL OPTIONAL, + mmeRegisteredforSMS [1] NULL OPTIONAL } + +EPLMN-List ::= SEQUENCE SIZE (1..50) OF + PLMN-Id + +AdjacentPLMN-List ::= SEQUENCE SIZE (1..50) OF + PLMN-Id + + +-- handover types + +ForwardAccessSignalling-Arg ::= [3] SEQUENCE { + an-APDU AccessNetworkSignalInfo, + integrityProtectionInfo [0] IntegrityProtectionInformation OPTIONAL, + encryptionInfo [1] EncryptionInformation OPTIONAL, + keyStatus [2] KeyStatus OPTIONAL, + allowedGSM-Algorithms [4] AllowedGSM-Algorithms OPTIONAL, + allowedUMTS-Algorithms [5] AllowedUMTS-Algorithms OPTIONAL, + radioResourceInformation [6] RadioResourceInformation OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ..., + radioResourceList [7] RadioResourceList OPTIONAL, + bssmap-ServiceHandover [9] BSSMAP-ServiceHandover OPTIONAL, + ranap-ServiceHandover [8] RANAP-ServiceHandover OPTIONAL, + bssmap-ServiceHandoverList [10] BSSMAP-ServiceHandoverList OPTIONAL, + currentlyUsedCodec [11] Codec OPTIONAL, + iuSupportedCodecsList [12] SupportedCodecsList OPTIONAL, + rab-ConfigurationIndicator [13] NULL OPTIONAL, + iuSelectedCodec [14] Codec OPTIONAL, + alternativeChannelType [15] RadioResourceInformation OPTIONAL, + tracePropagationList [17] TracePropagationList OPTIONAL, + aoipSupportedCodecsListAnchor [18] AoIPCodecsList OPTIONAL, + aoipSelectedCodecTarget [19] AoIPCodec OPTIONAL, + uesbi-Iu [20] UESBI-Iu OPTIONAL, + imeisv [21] IMEI OPTIONAL } + +AllowedGSM-Algorithms ::= OCTET STRING (SIZE (1)) + -- internal structure is coded as Algorithm identifier octet from + -- Permitted Algorithms defined in 3GPP TS 48.008 + -- A node shall mark all GSM algorithms that are allowed in MSC-B + +AllowedUMTS-Algorithms ::= SEQUENCE { + integrityProtectionAlgorithms [0] PermittedIntegrityProtectionAlgorithms OPTIONAL, + encryptionAlgorithms [1] PermittedEncryptionAlgorithms OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ...} + +PermittedIntegrityProtectionAlgorithms ::= + OCTET STRING (SIZE (1..maxPermittedIntegrityProtectionAlgorithmsLength)) + -- Octets contain a complete PermittedIntegrityProtectionAlgorithms data type + -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme + -- mandated by 3GPP TS 25.413. + -- Padding bits are included, if needed, in the least significant bits of the + -- last octet of the octet string. + + +maxPermittedIntegrityProtectionAlgorithmsLength INTEGER ::= 9 + +PermittedEncryptionAlgorithms ::= + OCTET STRING (SIZE (1..maxPermittedEncryptionAlgorithmsLength)) + -- Octets contain a complete PermittedEncryptionAlgorithms data type + -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme + -- mandated by 3GPP TS 25.413 + -- Padding bits are included, if needed, in the least significant bits of the + -- last octet of the octet string. + + +maxPermittedEncryptionAlgorithmsLength INTEGER ::= 9 + +KeyStatus ::= ENUMERATED { + old (0), + new (1), + ...} + -- exception handling: + -- received values in range 2-31 shall be treated as "old" + -- received values greater than 31 shall be treated as "new" + +PrepareHO-Arg ::= [3] SEQUENCE { + targetCellId [0] GlobalCellId OPTIONAL, + ho-NumberNotRequired NULL OPTIONAL, + targetRNCId [1] RNCId OPTIONAL, + an-APDU [2] AccessNetworkSignalInfo OPTIONAL, + multipleBearerRequested [3] NULL OPTIONAL, + imsi [4] IMSI OPTIONAL, + integrityProtectionInfo [5] IntegrityProtectionInformation OPTIONAL, + encryptionInfo [6] EncryptionInformation OPTIONAL, + radioResourceInformation [7] RadioResourceInformation OPTIONAL, + allowedGSM-Algorithms [9] AllowedGSM-Algorithms OPTIONAL, + allowedUMTS-Algorithms [10] AllowedUMTS-Algorithms OPTIONAL, + radioResourceList [11] RadioResourceList OPTIONAL, + extensionContainer [8] ExtensionContainer OPTIONAL, + ... , + rab-Id [12] RAB-Id OPTIONAL, + bssmap-ServiceHandover [13] BSSMAP-ServiceHandover OPTIONAL, + ranap-ServiceHandover [14] RANAP-ServiceHandover OPTIONAL, + bssmap-ServiceHandoverList [15] BSSMAP-ServiceHandoverList OPTIONAL, + asciCallReference [20] ASCI-CallReference OPTIONAL, + geran-classmark [16] GERAN-Classmark OPTIONAL, + iuCurrentlyUsedCodec [17] Codec OPTIONAL, + iuSupportedCodecsList [18] SupportedCodecsList OPTIONAL, + rab-ConfigurationIndicator [19] NULL OPTIONAL, + uesbi-Iu [21] UESBI-Iu OPTIONAL, + imeisv [22] IMEI OPTIONAL, + alternativeChannelType [23] RadioResourceInformation OPTIONAL, + tracePropagationList [25] TracePropagationList OPTIONAL, + aoipSupportedCodecsListAnchor [26] AoIPCodecsList OPTIONAL, + regionalSubscriptionData [27] ZoneCodeList OPTIONAL, + lclsGlobalCallReference [28] LCLS-GlobalCallReference OPTIONAL, + lcls-Negotiation [29] LCLS-Negotiation OPTIONAL, + lcls-Configuration-Preference [30] LCLS-ConfigurationPreference OPTIONAL, + csg-SubscriptionDataList [31] CSG-SubscriptionDataList OPTIONAL + } + +LCLS-GlobalCallReference ::= OCTET STRING (SIZE (13..15)) + -- Octets are coded as specified in 3GPP TS 29.205 [146] + + +LCLS-Negotiation::= BIT STRING { + permission-indicator-not-allowed-bit (0), + permission-indicator-spare-bit (1)} (SIZE (2..8)) + --for definition and allowed combination of bits 0 and 1 see 3GPP TS 29.205 + -- exception handling: bits 2 to 7 shall be ignored if received and not understood + + +LCLS-ConfigurationPreference::= BIT STRING { + forward-data-sending-indicator (0), + backward-data-sending-indicator (1), + forward-data-reception-indicator (2), + backward-data-reception-indicator (3)} (SIZE (4..8)) + -- exception handling: bits 4 to 7 shall be ignored if received and not understood + + +BSSMAP-ServiceHandoverList ::= SEQUENCE SIZE (1.. maxNumOfServiceHandovers) OF + BSSMAP-ServiceHandoverInfo + +BSSMAP-ServiceHandoverInfo ::= SEQUENCE { + bssmap-ServiceHandover BSSMAP-ServiceHandover, + rab-Id RAB-Id, + -- RAB Identity is needed to relate the service handovers with the radio access bearers. + ...} + +maxNumOfServiceHandovers INTEGER ::= 7 + +BSSMAP-ServiceHandover ::= OCTET STRING (SIZE (1)) + -- Octets are coded according the Service Handover information element in + -- 3GPP TS 48.008. + +RANAP-ServiceHandover ::= OCTET STRING (SIZE (1)) + -- Octet contains a complete Service-Handover data type + -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme + -- mandated by 3GPP TS 25.413 + -- Padding bits are included in the least significant bits. + + +RadioResourceList ::= SEQUENCE SIZE (1.. maxNumOfRadioResources) OF + RadioResource + +RadioResource ::= SEQUENCE { + radioResourceInformation RadioResourceInformation, + rab-Id RAB-Id, + -- RAB Identity is needed to relate the radio resources with the radio access bearers. + ...} + +maxNumOfRadioResources INTEGER ::= 7 + +PrepareHO-Res ::= [3] SEQUENCE { + handoverNumber [0] ISDN-AddressString OPTIONAL, + relocationNumberList [1] RelocationNumberList OPTIONAL, + an-APDU [2] AccessNetworkSignalInfo OPTIONAL, + multicallBearerInfo [3] MulticallBearerInfo OPTIONAL, + multipleBearerNotSupported NULL OPTIONAL, + selectedUMTS-Algorithms [5] SelectedUMTS-Algorithms OPTIONAL, + chosenRadioResourceInformation [6] ChosenRadioResourceInformation OPTIONAL, + extensionContainer [4] ExtensionContainer OPTIONAL, + ..., + iuSelectedCodec [7] Codec OPTIONAL, + iuAvailableCodecsList [8] CodecList OPTIONAL, + aoipSelectedCodecTarget [9] AoIPCodec OPTIONAL, + aoipAvailableCodecsListMap [10] AoIPCodecsList OPTIONAL } + +SelectedUMTS-Algorithms ::= SEQUENCE { + integrityProtectionAlgorithm [0] ChosenIntegrityProtectionAlgorithm OPTIONAL, + encryptionAlgorithm [1] ChosenEncryptionAlgorithm OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ...} + +ChosenIntegrityProtectionAlgorithm ::= OCTET STRING (SIZE (1)) + -- Octet contains a complete IntegrityProtectionAlgorithm data type + -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme + -- mandated by 3GPP TS 25.413 + -- Padding bits are included in the least significant bits. + +ChosenEncryptionAlgorithm ::= OCTET STRING (SIZE (1)) + -- Octet contains a complete EncryptionAlgorithm data type + -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme + -- mandated by 3GPP TS 25.413 + -- Padding bits are included in the least significant bits. + +ChosenRadioResourceInformation ::= SEQUENCE { + chosenChannelInfo [0] ChosenChannelInfo OPTIONAL, + chosenSpeechVersion [1] ChosenSpeechVersion OPTIONAL, + ...} + +ChosenChannelInfo ::= OCTET STRING (SIZE (1)) + -- Octets are coded according the Chosen Channel information element in 3GPP TS 48.008 + +ChosenSpeechVersion ::= OCTET STRING (SIZE (1)) + -- Octets are coded according the Speech Version (chosen) information element in 3GPP TS + -- 48.008 + +PrepareSubsequentHO-Arg ::= [3] SEQUENCE { + targetCellId [0] GlobalCellId OPTIONAL, + targetMSC-Number [1] ISDN-AddressString, + targetRNCId [2] RNCId OPTIONAL, + an-APDU [3] AccessNetworkSignalInfo OPTIONAL, + selectedRab-Id [4] RAB-Id OPTIONAL, + extensionContainer [5] ExtensionContainer OPTIONAL, + ..., + geran-classmark [6] GERAN-Classmark OPTIONAL, + rab-ConfigurationIndicator [7] NULL OPTIONAL } + +PrepareSubsequentHO-Res ::= [3] SEQUENCE { + an-APDU AccessNetworkSignalInfo, + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +ProcessAccessSignalling-Arg ::= [3] SEQUENCE { + an-APDU AccessNetworkSignalInfo, + selectedUMTS-Algorithms [1] SelectedUMTS-Algorithms OPTIONAL, + selectedGSM-Algorithm [2] SelectedGSM-Algorithm OPTIONAL, + chosenRadioResourceInformation [3] ChosenRadioResourceInformation OPTIONAL, + selectedRab-Id [4] RAB-Id OPTIONAL, + extensionContainer [0] ExtensionContainer OPTIONAL, + ..., + iUSelectedCodec [5] Codec OPTIONAL, + iuAvailableCodecsList [6] CodecList OPTIONAL, + aoipSelectedCodecTarget [7] AoIPCodec OPTIONAL, + aoipAvailableCodecsListMap [8] AoIPCodecsList OPTIONAL } + +AoIPCodecsList ::= SEQUENCE { + codec1 [1] AoIPCodec, + codec2 [2] AoIPCodec OPTIONAL, + codec3 [3] AoIPCodec OPTIONAL, + codec4 [4] AoIPCodec OPTIONAL, + codec5 [5] AoIPCodec OPTIONAL, + codec6 [6] AoIPCodec OPTIONAL, + codec7 [7] AoIPCodec OPTIONAL, + codec8 [8] AoIPCodec OPTIONAL, + extensionContainer [9] ExtensionContainer OPTIONAL, + ...} + -- Codecs are sent in priority order where codec1 has highest priority + +AoIPCodec ::= OCTET STRING (SIZE (1..3)) + + -- The internal structure is defined as follows: + -- octet 1 Coded as Speech Codec Elements in 3GPP TS 48.008 + -- with the exception that FI, PI, PT and TF bits shall + -- be set to 0 + -- octets 2,3 Optional; in case of AMR codec types it defines + -- the supported codec configurations as defined in + -- 3GPP TS 48.008 + +SupportedCodecsList ::= SEQUENCE { + utranCodecList [0] CodecList OPTIONAL, + geranCodecList [1] CodecList OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ...} + +CodecList ::= SEQUENCE { + codec1 [1] Codec, + codec2 [2] Codec OPTIONAL, + codec3 [3] Codec OPTIONAL, + codec4 [4] Codec OPTIONAL, + codec5 [5] Codec OPTIONAL, + codec6 [6] Codec OPTIONAL, + codec7 [7] Codec OPTIONAL, + codec8 [8] Codec OPTIONAL, + extensionContainer [9] ExtensionContainer OPTIONAL, + ...} + -- Codecs are sent in priority order where codec1 has highest priority + +Codec ::= OCTET STRING (SIZE (1..4)) + + -- The internal structure is defined as follows: + -- octet 1 Coded as Codec Identification code in 3GPP TS 26.103 + -- octets 2,3,4 Parameters for the Codec as defined in 3GPP TS + -- 26.103, if available, length depending on the codec + +GERAN-Classmark ::= OCTET STRING (SIZE (2..87)) + -- Octets are coded according the GERAN Classmark information element in 3GPP TS 48.008 + +SelectedGSM-Algorithm ::= OCTET STRING (SIZE (1)) + -- internal structure is coded as Algorithm identifier octet from Chosen Encryption + -- Algorithm defined in 3GPP TS 48.008 + -- A node shall mark only the selected GSM algorithm + +SendEndSignal-Arg ::= [3] SEQUENCE { + an-APDU AccessNetworkSignalInfo, + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +SendEndSignal-Res ::= SEQUENCE { + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +RNCId ::= OCTET STRING (SIZE (7)) + -- The internal structure is defined as follows: + -- octet 1 bits 4321 Mobile Country Code 1st digit + -- bits 8765 Mobile Country Code 2nd digit + -- octet 2 bits 4321 Mobile Country Code 3rd digit + -- bits 8765 Mobile Network Code 3rd digit + -- or filler (1111) for 2 digit MNCs + -- octet 3 bits 4321 Mobile Network Code 1st digit + -- bits 8765 Mobile Network Code 2nd digit + -- octets 4 and 5 Location Area Code according to 3GPP TS 24.008 + -- octets 6 and 7 RNC Id or Extended RNC Id value according to + -- 3GPP TS 25.413 + +RelocationNumberList ::= SEQUENCE SIZE (1..maxNumOfRelocationNumber) OF + RelocationNumber + +MulticallBearerInfo ::= INTEGER (1..maxNumOfRelocationNumber) + +RelocationNumber ::= SEQUENCE { + handoverNumber ISDN-AddressString, + rab-Id RAB-Id, + -- RAB Identity is needed to relate the calls with the radio access bearers. + ...} + +RAB-Id ::= INTEGER (1..maxNrOfRABs) + +maxNrOfRABs INTEGER ::= 255 + +maxNumOfRelocationNumber INTEGER ::= 7 + +RadioResourceInformation ::= OCTET STRING (SIZE (3..13)) + -- Octets are coded according the Channel Type information element in 3GPP TS 48.008 + +IntegrityProtectionInformation ::= OCTET STRING (SIZE (18..maxNumOfIntegrityInfo)) + -- Octets contain a complete IntegrityProtectionInformation data type + -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme + -- mandated by 3GPP TS 25.413 + -- Padding bits are included, if needed, in the least significant bits of the + -- last octet of the octet string. + +maxNumOfIntegrityInfo INTEGER ::= 100 + +EncryptionInformation ::= OCTET STRING (SIZE (18..maxNumOfEncryptionInfo)) + -- Octets contain a complete EncryptionInformation data type + -- as defined in 3GPP TS 25.413, encoded according to the encoding scheme + -- mandated by 3GPP TS 25.413 + -- Padding bits are included, if needed, in the least significant bits of the + -- last octet of the octet string. + +maxNumOfEncryptionInfo INTEGER ::= 100 + +-- authentication management types + +SendAuthenticationInfoArg ::= SEQUENCE { + imsi [0] IMSI, + numberOfRequestedVectors NumberOfRequestedVectors, + segmentationProhibited NULL OPTIONAL, + immediateResponsePreferred [1] NULL OPTIONAL, + re-synchronisationInfo Re-synchronisationInfo OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ..., + requestingNodeType [3] RequestingNodeType OPTIONAL, + requestingPLMN-Id [4] PLMN-Id OPTIONAL, + numberOfRequestedAdditional-Vectors [5] NumberOfRequestedVectors OPTIONAL, + additionalVectorsAreForEPS [6] NULL OPTIONAL, + ueUsageTypeRequestIndication [7] NULL OPTIONAL } + + +NumberOfRequestedVectors ::= INTEGER (1..5) + +Re-synchronisationInfo ::= SEQUENCE { + rand RAND, + auts AUTS, + ...} + +SendAuthenticationInfoRes ::= [3] SEQUENCE { + authenticationSetList AuthenticationSetList OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + eps-AuthenticationSetList [2] EPS-AuthenticationSetList OPTIONAL, + ueUsageType [3] UE-UsageType OPTIONAL } + +EPS-AuthenticationSetList ::= SEQUENCE SIZE (1..5) OF + EPC-AV + +UE-UsageType::= OCTET STRING (SIZE (4)) + -- octets are coded as defined in 3GPP TS 29.272 [144] + +EPC-AV ::= SEQUENCE { + rand RAND, + xres XRES, + autn AUTN, + kasme KASME, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +KASME ::= OCTET STRING (SIZE (32)) + +RequestingNodeType ::= ENUMERATED { + vlr (0), + sgsn (1), + ..., + s-cscf (2), + bsf (3), + gan-aaa-server (4), + wlan-aaa-server (5), + mme (16), + mme-sgsn (17) + } + -- the values 2, 3, 4 and 5 shall not be used on the MAP-D or Gr interfaces + -- exception handling: + -- received values in the range (6-15) shall be treated as "vlr" + -- received values greater than 17 shall be treated as "sgsn" + +-- equipment management types + +CheckIMEI-Arg ::= SEQUENCE { + imei IMEI, + requestedEquipmentInfo RequestedEquipmentInfo, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +CheckIMEI-Res ::= SEQUENCE { + equipmentStatus EquipmentStatus OPTIONAL, + bmuef UESBI-Iu OPTIONAL, + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +RequestedEquipmentInfo::= BIT STRING { + equipmentStatus (0), + bmuef (1)} (SIZE (2..8)) + -- exception handling: reception of unknown bit assignments in the + -- RequestedEquipmentInfo data type shall be discarded by the receiver + +UESBI-Iu ::= SEQUENCE { + uesbi-IuA [0] UESBI-IuA OPTIONAL, + uesbi-IuB [1] UESBI-IuB OPTIONAL, + ...} + +UESBI-IuA ::= BIT STRING (SIZE(1..128)) +-- See 3GPP TS 25.413 + +UESBI-IuB ::= BIT STRING (SIZE(1..128)) +-- See 3GPP TS 25.413 + +EquipmentStatus ::= ENUMERATED { + permittedListed (0), + prohibitedListed (1), + trackingListed (2)} + +-- subscriber management types + +InsertSubscriberDataArg ::= SEQUENCE { + imsi [0] IMSI OPTIONAL, + COMPONENTS OF SubscriberData, + extensionContainer [14] ExtensionContainer OPTIONAL, + ... , + naea-PreferredCI [15] NAEA-PreferredCI OPTIONAL, + -- naea-PreferredCI is included at the discretion of the HLR operator. + gprsSubscriptionData [16] GPRSSubscriptionData OPTIONAL, + roamingRestrictedInSgsnDueToUnsupportedFeature [23] NULL + OPTIONAL, + networkAccessMode [24] NetworkAccessMode OPTIONAL, + lsaInformation [25] LSAInformation OPTIONAL, + lmu-Indicator [21] NULL OPTIONAL, + lcsInformation [22] LCSInformation OPTIONAL, + istAlertTimer [26] IST-AlertTimerValue OPTIONAL, + superChargerSupportedInHLR [27] AgeIndicator OPTIONAL, + mc-SS-Info [28] MC-SS-Info OPTIONAL, + cs-AllocationRetentionPriority [29] CS-AllocationRetentionPriority OPTIONAL, + sgsn-CAMEL-SubscriptionInfo [17] SGSN-CAMEL-SubscriptionInfo OPTIONAL, + chargingCharacteristics [18] ChargingCharacteristics OPTIONAL, + accessRestrictionData [19] AccessRestrictionData OPTIONAL, + ics-Indicator [20] BOOLEAN OPTIONAL, + eps-SubscriptionData [31] EPS-SubscriptionData OPTIONAL, + csg-SubscriptionDataList [32] CSG-SubscriptionDataList OPTIONAL, + ue-ReachabilityRequestIndicator [33] NULL OPTIONAL, + sgsn-Number [34] ISDN-AddressString OPTIONAL, + mme-Name [35] DiameterIdentity OPTIONAL, + subscribedPeriodicRAUTAUtimer [36] SubscribedPeriodicRAUTAUtimer OPTIONAL, + vplmnLIPAAllowed [37] NULL OPTIONAL, + mdtUserConsent [38] BOOLEAN OPTIONAL, + subscribedPeriodicLAUtimer [39] SubscribedPeriodicLAUtimer OPTIONAL, + vplmn-Csg-SubscriptionDataList [40] VPLMN-CSG-SubscriptionDataList OPTIONAL, + additionalMSISDN [41] ISDN-AddressString OPTIONAL, + psAndSMS-OnlyServiceProvision [42] NULL OPTIONAL, + smsInSGSNAllowed [43] NULL OPTIONAL, + cs-to-ps-SRVCC-Allowed-Indicator [44] NULL OPTIONAL, + pcscf-Restoration-Request [45] NULL OPTIONAL, + adjacentAccessRestrictionDataList [46] AdjacentAccessRestrictionDataList OPTIONAL, + imsi-Group-Id-List [47] IMSI-GroupIdList OPTIONAL, + ueUsageType [48] UE-UsageType OPTIONAL, + userPlaneIntegrityProtectionIndicator [49] NULL OPTIONAL, + dl-Buffering-Suggested-Packet-Count [50] DL-Buffering-Suggested-Packet-Count OPTIONAL, + reset-Id-List [51] Reset-Id-List OPTIONAL, + eDRX-Cycle-Length-List [52] EDRX-Cycle-Length-List OPTIONAL, + ext-AccessRestrictionData [53] Ext-AccessRestrictionData OPTIONAL, + iab-Operation-Allowed-Indicator [54] NULL OPTIONAL } + -- If the Network Access Mode parameter is sent, it shall be present only in + -- the first sequence if seqmentation is used + +EDRX-Cycle-Length-List ::= SEQUENCE SIZE (1..8) OF + EDRX-Cycle-Length + +EDRX-Cycle-Length ::= SEQUENCE { + rat-Type [0] Used-RAT-Type, + eDRX-Cycle-Length-Value [1] EDRX-Cycle-Length-Value, + ...} + -- The eDRX-Cycle-Length contains the subscribed eDRX-Cycle-Length applicable to a + -- a specific RAT Type. + + +EDRX-Cycle-Length-Value ::= OCTET STRING (SIZE (1)) + -- The EDRX-Cycle-Length-Value shall be encoded as specified in clause 7.3.216 of + -- 3GPP TS 29.272 [144]. + + +Reset-Id-List ::= SEQUENCE SIZE (1..50) OF + Reset-Id + +Reset-Id ::= OCTET STRING (SIZE (1..4)) + -- Reset-Ids shall be unique within the HPLMN. + + +DL-Buffering-Suggested-Packet-Count ::= INTEGER (-1..2147483647) + -- values are defined in 3GPP TS 29.272 [144] + + +Group-Service-ID ::= INTEGER (0..4294967295) + -- values are defined in 3GPP TS 29.272 [144] + + +Local-GroupID ::= OCTET STRING (SIZE (1..10)) + -- Refers to Local group ID defined by an operator identified by the PLMN-ID. + -- for details see 3GPP TS 29.272 [144] + +IMSI-GroupIdList ::= SEQUENCE SIZE (1..50) OF + IMSI-GroupId + +IMSI-GroupId ::= SEQUENCE { + group-Service-Id [0] Group-Service-ID, + plmnId [1] PLMN-Id, + local-Group-ID [2] Local-GroupID, + ...} + +SubscribedPeriodicRAUTAUtimer ::= INTEGER (0..4294967295) + -- This parameter carries the subscribed periodic TAU/RAU timer value in seconds as + -- specified in 3GPP TS 24.008 [35]. + +SubscribedPeriodicLAUtimer ::= INTEGER (0..4294967295) + -- This parameter carries the subscribed periodic LAU timer value in seconds as + -- specified in 3GPP TS 24.008 [35]. + +CSG-SubscriptionDataList ::= SEQUENCE SIZE (1..50) OF + CSG-SubscriptionData + +CSG-SubscriptionData ::= SEQUENCE { + csg-Id CSG-Id, + expirationDate Time OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + lipa-AllowedAPNList [0] LIPA-AllowedAPNList OPTIONAL, + plmn-Id [1] PLMN-Id OPTIONAL +} + +VPLMN-CSG-SubscriptionDataList ::= SEQUENCE SIZE (1..50) OF + CSG-SubscriptionData + +CSG-Id ::= BIT STRING (SIZE (27)) + -- coded according to 3GPP TS 23.003 [17]. + +LIPA-AllowedAPNList ::= SEQUENCE SIZE (1..maxNumOfLIPAAllowedAPN) OF + APN + +maxNumOfLIPAAllowedAPN INTEGER ::= 50 + + +EPS-SubscriptionData ::= SEQUENCE { + apn-oi-Replacement [0] APN-OI-Replacement OPTIONAL, + -- this apn-oi-Replacement refers to the UE level apn-oi-Replacement. + rfsp-id [2] RFSP-ID OPTIONAL, + ambr [3] AMBR OPTIONAL, + apn-ConfigurationProfile [4] APN-ConfigurationProfile OPTIONAL, + stn-sr [6] ISDN-AddressString OPTIONAL, + extensionContainer [5] ExtensionContainer OPTIONAL, + ..., + mps-CSPriority [7] NULL OPTIONAL, + mps-EPSPriority [8] NULL OPTIONAL, + subscribed-vsrvcc [9] NULL OPTIONAL } + -- mps-CSPriority by its presence indicates that the UE is subscribed to the eMLPP in + -- the CS domain, referring to the 3GPP TS 29.272 [144] for details. + -- mps-EPSPriority by its presence indicates that the UE is subscribed to the MPS in + -- the EPS domain, referring to the 3GPP TS 29.272 [144] for details. + -- + -- subscribed-vsrvcc by its presence indicates that the UE is subscribed to the vSRVCC in + -- the EPS domain, referring to the 3GPP TS 29.272 [144] for details. + +APN-OI-Replacement ::= OCTET STRING (SIZE (9..100)) + -- Octets are coded as APN Operator Identifier according to TS 3GPP TS 23.003 [17] + +RFSP-ID ::= INTEGER (1..256) + +APN-ConfigurationProfile ::= SEQUENCE { + defaultContext ContextId, + completeDataListIncluded NULL OPTIONAL, + -- If segmentation is used, completeDataListIncluded may only be present in the + -- first segment of APN-ConfigurationProfile. + epsDataList [1] EPS-DataList, + extensionContainer [2] ExtensionContainer OPTIONAL, + ... , + additionalDefaultContext [3] ContextId OPTIONAL + -- for details see the 3GPP TS 29.272 [144]. + } + +EPS-DataList ::= SEQUENCE SIZE (1..maxNumOfAPN-Configurations) OF + APN-Configuration + + +maxNumOfAPN-Configurations INTEGER ::= 50 + + +APN-Configuration ::= SEQUENCE { + contextId [0] ContextId, + pdn-Type [1] PDN-Type, + servedPartyIP-IPv4-Address [2] PDP-Address OPTIONAL, + apn [3] APN, + eps-qos-Subscribed [4] EPS-QoS-Subscribed, + pdn-gw-Identity [5] PDN-GW-Identity OPTIONAL, + pdn-gw-AllocationType [6] PDN-GW-AllocationType OPTIONAL, + vplmnAddressAllowed [7] NULL OPTIONAL, + chargingCharacteristics [8] ChargingCharacteristics OPTIONAL, + ambr [9] AMBR OPTIONAL, + specificAPNInfoList [10] SpecificAPNInfoList OPTIONAL, extensionContainer [11] ExtensionContainer OPTIONAL, + servedPartyIP-IPv6-Address [12] PDP-Address OPTIONAL, + ..., + apn-oi-Replacement [13] APN-OI-Replacement OPTIONAL, + -- this apn-oi-Replacement refers to the APN level apn-oi-Replacement. + sipto-Permission [14] SIPTO-Permission OPTIONAL, + lipa-Permission [15] LIPA-Permission OPTIONAL, + restoration-Priority [16] Restoration-Priority OPTIONAL, + sipto-local-network-Permission [17] SIPTO-Local-Network-Permission OPTIONAL, + wlan-offloadability [18] WLAN-Offloadability OPTIONAL, + non-IP-PDN-Type-Indicator [19] NULL OPTIONAL, + nIDD-Mechanism [20] NIDD-Mechanism OPTIONAL, + sCEF-ID [21] FQDN OPTIONAL, + pdn-ConnectionContinuity [22] PDN-ConnectionContinuity OPTIONAL + -- absence of pdn-ConnectionContinuity indicates that the handling is left to + -- local VPLMN policy + } + +PDN-ConnectionContinuity ::= ENUMERATED { + maintainPDN-Connection (0), + disconnectPDN-ConnectionWithReactivationRequest (1), + disconnectPDN-ConnectionWithoutReactivationRequest (2) + } + +NIDD-Mechanism ::= ENUMERATED { + sGi-based-data-delivery (0), + sCEF-based-data-delivery (1) + -- The default value, when this information element is not present, is + -- sGi-based-data-delivery (0) + } + +PDN-Type ::= OCTET STRING (SIZE (1)) + -- Octet is coded as follows: + -- Bits + -- 3 2 1 + -- 0 0 1 IPv4 + -- 0 1 0 IPv6 + -- 0 1 1 IPv4v6 + -- 1 0 0 IPv4_or_IPv6 + -- Bits 8-4 shall be coded as zero. + -- for details see 3GPP TS 29.272 [144] + +EPS-QoS-Subscribed ::= SEQUENCE { + qos-Class-Identifier [0] QoS-Class-Identifier, + allocation-Retention-Priority [1] Allocation-Retention-Priority, + extensionContainer [2] ExtensionContainer OPTIONAL, + ... } + +AMBR ::= SEQUENCE { + max-RequestedBandwidth-UL [0] Bandwidth, + max-RequestedBandwidth-DL [1] Bandwidth, + extensionContainer [2] ExtensionContainer OPTIONAL, + ..., + extended-Max-RequestedBandwidth-UL [3] BandwidthExt OPTIONAL, + extended-Max-RequestedBandwidth-DL [4] BandwidthExt OPTIONAL + -- extended-Max-RequestedBandwidth-UL/DL shall be populated according to the + -- description of the corresponding parameters in 3GPP TS 29.272 [144] +} + + +SpecificAPNInfoList ::= SEQUENCE SIZE (1..maxNumOfSpecificAPNInfos) OF + SpecificAPNInfo + +maxNumOfSpecificAPNInfos INTEGER ::= 50 + +SpecificAPNInfo ::= SEQUENCE { + apn [0] APN, + pdn-gw-Identity [1] PDN-GW-Identity, + extensionContainer [2] ExtensionContainer OPTIONAL, + ... } + +Bandwidth ::= INTEGER + -- bits per second + +BandwidthExt ::= INTEGER + -- kilobits per second + +QoS-Class-Identifier ::= INTEGER (1..9) + -- values are defined in 3GPP TS 29.212 + + + +Allocation-Retention-Priority ::= SEQUENCE { + priority-level [0] INTEGER, + pre-emption-capability [1] BOOLEAN OPTIONAL, + pre-emption-vulnerability [2] BOOLEAN OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ... } + +PDN-GW-Identity ::= SEQUENCE { + pdn-gw-ipv4-Address [0] PDP-Address OPTIONAL, + pdn-gw-ipv6-Address [1] PDP-Address OPTIONAL, + pdn-gw-name [2] FQDN OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ... } + +FQDN ::= OCTET STRING (SIZE (9..255)) + + +PDN-GW-AllocationType ::= ENUMERATED { + static (0), + dynamic (1)} + + +WLAN-Offloadability ::= SEQUENCE { + wlan-offloadability-EUTRAN [0] WLAN-Offloadability-Indication OPTIONAL, + wlan-offloadability-UTRAN [1] WLAN-Offloadability-Indication OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ... } + +WLAN-Offloadability-Indication ::= ENUMERATED { + notAllowed (0), + allowed (1)} + + + +AccessRestrictionData ::= BIT STRING { + utranNotAllowed (0), + geranNotAllowed (1), + ganNotAllowed (2), + i-hspa-evolutionNotAllowed (3), + wb-e-utranNotAllowed (4), + ho-toNon3GPP-AccessNotAllowed (5), + nb-iotNotAllowed (6), + enhancedCoverageNotAllowed (7) } (SIZE (2..8)) + -- exception handling: + -- The VLR shall ignore the access restriction data related to an access type not + -- supported by the node. + -- The handling of the access restriction data by the SGSN is described in clause + -- 5.3.19 of TS 23.060, in clause 7.5.3 of TS 29.060 and clause 7.3.6 of TS 29.274. + -- Additional access restrictions are encoded in Ext-AccessRestrictionData bit string. + + +Ext-AccessRestrictionData ::= BIT STRING { + nrAsSecondaryRATNotAllowed (0), + unlicensedSpectrumAsSecondaryRATNotAllowed (1) } (SIZE (1..32)) + +AdjacentAccessRestrictionDataList ::= SEQUENCE SIZE (1..50) OF + AdjacentAccessRestrictionData + +AdjacentAccessRestrictionData ::= SEQUENCE { + plmnId [0] PLMN-Id, + accessRestrictionData [1] AccessRestrictionData, + ... , + ext-AccessRestrictionData [2] Ext-AccessRestrictionData OPTIONAL } + +CS-AllocationRetentionPriority ::= OCTET STRING (SIZE (1)) + -- This data type encodes each priority level defined in TS 23.107 as the binary value + -- of the priority level. + +IST-AlertTimerValue ::= INTEGER (15..255) + +LCSInformation ::= SEQUENCE { + gmlc-List [0] GMLC-List OPTIONAL, + lcs-PrivacyExceptionList [1] LCS-PrivacyExceptionList OPTIONAL, + molr-List [2] MOLR-List OPTIONAL, + ..., + add-lcs-PrivacyExceptionList [3] LCS-PrivacyExceptionList OPTIONAL } + -- add-lcs-PrivacyExceptionList may be sent only if lcs-PrivacyExceptionList is + -- present and contains four instances of LCS-PrivacyClass. If the mentioned condition + -- is not satisfied the receiving node shall discard add-lcs-PrivacyExceptionList. + -- If an LCS-PrivacyClass is received both in lcs-PrivacyExceptionList and in + -- add-lcs-PrivacyExceptionList with the same SS-Code, then the error unexpected + -- data value shall be returned. + +GMLC-List ::= SEQUENCE SIZE (1..maxNumOfGMLC) OF + ISDN-AddressString + -- if segmentation is used, the complete GMLC-List shall be sent in one segment + +maxNumOfGMLC INTEGER ::= 5 + +NetworkAccessMode ::= ENUMERATED { + packetAndCircuit (0), + onlyCircuit (1), + onlyPacket (2), + ...} + -- if unknown values are received in NetworkAccessMode + -- they shall be discarded. + +GPRSDataList ::= SEQUENCE SIZE (1..maxNumOfPDP-Contexts) OF + PDP-Context + +maxNumOfPDP-Contexts INTEGER ::= 50 + +PDP-Context ::= SEQUENCE { + pdp-ContextId ContextId, + pdp-Type [16] PDP-Type, + pdp-Address [17] PDP-Address OPTIONAL, + qos-Subscribed [18] QoS-Subscribed, + vplmnAddressAllowed [19] NULL OPTIONAL, + apn [20] APN, + extensionContainer [21] ExtensionContainer OPTIONAL, + ... , + ext-QoS-Subscribed [0] Ext-QoS-Subscribed OPTIONAL, + pdp-ChargingCharacteristics [1] ChargingCharacteristics OPTIONAL, + ext2-QoS-Subscribed [2] Ext2-QoS-Subscribed OPTIONAL, + -- ext2-QoS-Subscribed may be present only if ext-QoS-Subscribed is present. + ext3-QoS-Subscribed [3] Ext3-QoS-Subscribed OPTIONAL, + -- ext3-QoS-Subscribed may be present only if ext2-QoS-Subscribed is present. + ext4-QoS-Subscribed [4] Ext4-QoS-Subscribed OPTIONAL, + -- ext4-QoS-Subscribed may be present only if ext3-QoS-Subscribed is present. + apn-oi-Replacement [5] APN-OI-Replacement OPTIONAL, + -- this apn-oi-Replacement refers to the APN level apn-oi-Replacement and has + -- higher priority than UE level apn-oi-Replacement. + ext-pdp-Type [6] Ext-PDP-Type OPTIONAL, + -- contains the value IPv4v6 defined in 3GPP TS 29.060 [105], if the PDP can be + -- accessed by dual-stack UEs + ext-pdp-Address [7] PDP-Address OPTIONAL, + -- contains an additional IP address in case of dual-stack static IP address assignment + -- for the UE. + -- it may contain an IPv4 or an IPv6 address/prefix, and it may be present + -- only if pdp-Address is present; if both are present, each parameter shall + -- contain a different type of address (IPv4 or IPv6). + ambr [10] AMBR OPTIONAL, + -- this ambr contains the AMBR associated to the APN included in the + -- PDP-Context (APN-AMBR). + sipto-Permission [8] SIPTO-Permission OPTIONAL, + lipa-Permission [9] LIPA-Permission OPTIONAL, + restoration-Priority [11] Restoration-Priority OPTIONAL, + sipto-local-network-Permission [12] SIPTO-Local-Network-Permission OPTIONAL, + nIDD-Mechanism [13] NIDD-Mechanism OPTIONAL, + sCEF-ID [14] FQDN OPTIONAL + } + +Restoration-Priority ::= OCTET STRING (SIZE (1)) + -- Octet 1: + -- Restoration Priority. This octet encodes the Restoration Priority, + -- as the binary value of the Restoration-Priority described in 3GPP TS 29.272 [144]. + +SIPTO-Permission ::= ENUMERATED { + siptoAboveRanAllowed (0), + siptoAboveRanNotAllowed (1) + } + +SIPTO-Local-Network-Permission ::= ENUMERATED { + siptoAtLocalNetworkAllowed (0), + siptoAtLocalNetworkNotAllowed (1) + } + +LIPA-Permission ::= ENUMERATED { + lipaProhibited (0), + lipaOnly (1), + lipaConditional (2) + } + +ContextId ::= INTEGER (1..maxNumOfPDP-Contexts) + +GPRSSubscriptionData ::= SEQUENCE { + completeDataListIncluded NULL OPTIONAL, + -- If segmentation is used, completeDataListIncluded may only be present in the + -- first segment of GPRSSubscriptionData. + gprsDataList [1] GPRSDataList, + extensionContainer [2] ExtensionContainer OPTIONAL, + ..., + apn-oi-Replacement [3] APN-OI-Replacement OPTIONAL + -- this apn-oi-Replacement refers to the UE level apn-oi-Replacement. + } + +SGSN-CAMEL-SubscriptionInfo ::= SEQUENCE { + gprs-CSI [0] GPRS-CSI OPTIONAL, + mo-sms-CSI [1] SMS-CSI OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ..., + mt-sms-CSI [3] SMS-CSI OPTIONAL, + mt-smsCAMELTDP-CriteriaList [4] MT-smsCAMELTDP-CriteriaList OPTIONAL, + mg-csi [5] MG-CSI OPTIONAL + } + +GPRS-CSI ::= SEQUENCE { + gprs-CamelTDPDataList [0] GPRS-CamelTDPDataList OPTIONAL, + camelCapabilityHandling [1] CamelCapabilityHandling OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + notificationToCSE [3] NULL OPTIONAL, + csi-Active [4] NULL OPTIONAL, + ...} +-- notificationToCSE and csi-Active shall not be present when GPRS-CSI is sent to SGSN. +-- They may only be included in ATSI/ATM ack/NSDC message. +-- GPRS-CamelTDPData and camelCapabilityHandling shall be present in +-- the GPRS-CSI sequence. +-- If GPRS-CSI is segmented, gprs-CamelTDPDataList and camelCapabilityHandling shall be +-- present in the first segment + +GPRS-CamelTDPDataList ::= SEQUENCE SIZE (1..maxNumOfCamelTDPData) OF + GPRS-CamelTDPData +-- GPRS-CamelTDPDataList shall not contain more than one instance of +-- GPRS-CamelTDPData containing the same value for gprs-TriggerDetectionPoint. + +GPRS-CamelTDPData ::= SEQUENCE { + gprs-TriggerDetectionPoint [0] GPRS-TriggerDetectionPoint, + serviceKey [1] ServiceKey, + gsmSCF-Address [2] ISDN-AddressString, + defaultSessionHandling [3] DefaultGPRS-Handling, + extensionContainer [4] ExtensionContainer OPTIONAL, + ... + } + +DefaultGPRS-Handling ::= ENUMERATED { + continueTransaction (0) , + releaseTransaction (1) , + ...} +-- exception handling: +-- reception of values in range 2-31 shall be treated as "continueTransaction" +-- reception of values greater than 31 shall be treated as "releaseTransaction" + +GPRS-TriggerDetectionPoint ::= ENUMERATED { + attach (1), + attachChangeOfPosition (2), + pdp-ContextEstablishment (11), + pdp-ContextEstablishmentAcknowledgement (12), + pdp-ContextChangeOfPosition (14), + ... } +-- exception handling: +-- For GPRS-CamelTDPData sequences containing this parameter with any +-- other value than the ones listed the receiver shall ignore the whole +-- GPRS-CamelTDPDatasequence. + +APN ::= OCTET STRING (SIZE (2..63)) + -- Octets are coded according to TS 3GPP TS 23.003 [17] + +PDP-Type ::= OCTET STRING (SIZE (2)) + -- Octets are coded according to TS 3GPP TS 29.060 [105] + -- Only the values PPP, IPv4, IPv6 and Non-IP are allowed for this parameter. + +Ext-PDP-Type ::= OCTET STRING (SIZE (2)) + -- Octets are coded, similarly to PDP-Type, according to TS 3GPP TS 29.060 [105]. + -- Only the value IPv4v6 is allowed for this parameter. + +PDP-Address ::= OCTET STRING (SIZE (1..16)) + -- Octets are coded according to TS 3GPP TS 29.060 [105] + + -- The possible size values are: + -- 1-7 octets X.25 address type + -- 4 octets IPv4 address type + -- 16 octets Ipv6 address type + +QoS-Subscribed ::= OCTET STRING (SIZE (3)) + -- Octets are coded according to TS 3GPP TS 24.008 [35] Quality of Service Octets + -- 3-5. + +Ext-QoS-Subscribed ::= OCTET STRING (SIZE (1..9)) + -- OCTET 1: + -- Allocation/Retention Priority (This octet encodes each priority level defined in + -- 23.107 as the binary value of the priority level, declaration in 29.060) + -- Octets 2-9 are coded according to 3GPP TS 24.008 [35] Quality of Service Octets + -- 6-13. + +Ext2-QoS-Subscribed ::= OCTET STRING (SIZE (1..3)) + -- Octets 1-3 are coded according to 3GPP TS 24.008 [35] Quality of Service Octets 14-16. + -- If Quality of Service information is structured with 14 octet length, then + -- Octet 1 is coded according to 3GPP TS 24.008 [35] Quality of Service Octet 14. + +Ext3-QoS-Subscribed ::= OCTET STRING (SIZE (1..2)) + -- Octets 1-2 are coded according to 3GPP TS 24.008 [35] Quality of Service Octets 17-18. + +Ext4-QoS-Subscribed ::= OCTET STRING (SIZE (1)) + -- Octet 1: + -- Evolved Allocation/Retention Priority. This octet encodes the Priority Level (PL), + -- the Preemption Capability (PCI) and Preemption Vulnerability (PVI) values, as + -- described in 3GPP TS 29.060 [105]. + +ChargingCharacteristics ::= OCTET STRING (SIZE (2)) + -- Octets are coded according to 3GPP TS 32.215. + +LSAOnlyAccessIndicator ::= ENUMERATED { + accessOutsideLSAsAllowed (0), + accessOutsideLSAsRestricted (1)} + +LSADataList ::= SEQUENCE SIZE (1..maxNumOfLSAs) OF + LSAData + +maxNumOfLSAs INTEGER ::= 20 + +LSAData ::= SEQUENCE { + lsaIdentity [0] LSAIdentity, + lsaAttributes [1] LSAAttributes, + lsaActiveModeIndicator [2] NULL OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +LSAInformation ::= SEQUENCE { + completeDataListIncluded NULL OPTIONAL, + + -- If segmentation is used, completeDataListIncluded may only be present in the + -- first segment. + lsaOnlyAccessIndicator [1] LSAOnlyAccessIndicator OPTIONAL, + lsaDataList [2] LSADataList OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +LSAIdentity ::= OCTET STRING (SIZE (3)) + -- Octets are coded according to TS 3GPP TS 23.003 [17] + +LSAAttributes ::= OCTET STRING (SIZE (1)) + -- Octets are coded according to TS 3GPP TS 48.008 [49] + +SubscriberData ::= SEQUENCE { + msisdn [1] ISDN-AddressString OPTIONAL, + category [2] Category OPTIONAL, + subscriberStatus [3] SubscriberStatus OPTIONAL, + bearerServiceList [4] BearerServiceList OPTIONAL, + -- The exception handling for reception of unsupported / not allocated + -- bearerServiceCodes is defined in clause 8.8.1 + teleserviceList [6] TeleserviceList OPTIONAL, + -- The exception handling for reception of unsupported / not allocated + -- teleserviceCodes is defined in clause 8.8.1 + provisionedSS [7] Ext-SS-InfoList OPTIONAL, + odb-Data [8] ODB-Data OPTIONAL, + roamingRestrictionDueToUnsupportedFeature [9] NULL OPTIONAL, + regionalSubscriptionData [10] ZoneCodeList OPTIONAL, + vbsSubscriptionData [11] VBSDataList OPTIONAL, + vgcsSubscriptionData [12] VGCSDataList OPTIONAL, + vlrCamelSubscriptionInfo [13] VlrCamelSubscriptionInfo OPTIONAL + } + +Category ::= OCTET STRING (SIZE (1)) + -- The internal structure is defined in ITU-T Rec Q.763. + +SubscriberStatus ::= ENUMERATED { + serviceGranted (0), + operatorDeterminedBarring (1)} + +BearerServiceList ::= SEQUENCE SIZE (1..maxNumOfBearerServices) OF + Ext-BearerServiceCode + +maxNumOfBearerServices INTEGER ::= 50 + +TeleserviceList ::= SEQUENCE SIZE (1..maxNumOfTeleservices) OF + Ext-TeleserviceCode + +maxNumOfTeleservices INTEGER ::= 20 + +ODB-Data ::= SEQUENCE { + odb-GeneralData ODB-GeneralData, + odb-HPLMN-Data ODB-HPLMN-Data OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +ODB-GeneralData ::= BIT STRING { + allOG-CallsBarred (0), + internationalOGCallsBarred (1), + internationalOGCallsNotToHPLMN-CountryBarred (2), + interzonalOGCallsBarred (6), + interzonalOGCallsNotToHPLMN-CountryBarred (7), + interzonalOGCallsAndInternationalOGCallsNotToHPLMN-CountryBarred (8), + premiumRateInformationOGCallsBarred (3), + premiumRateEntertainementOGCallsBarred (4), + ss-AccessBarred (5), + allECT-Barred (9), + chargeableECT-Barred (10), + internationalECT-Barred (11), + interzonalECT-Barred (12), + doublyChargeableECT-Barred (13), + multipleECT-Barred (14), + allPacketOrientedServicesBarred (15), + roamerAccessToHPLMN-AP-Barred (16), + roamerAccessToVPLMN-AP-Barred (17), + roamingOutsidePLMNOG-CallsBarred (18), + allIC-CallsBarred (19), + roamingOutsidePLMNIC-CallsBarred (20), + roamingOutsidePLMNICountryIC-CallsBarred (21), + roamingOutsidePLMN-Barred (22), + roamingOutsidePLMN-CountryBarred (23), + registrationAllCF-Barred (24), + registrationCFNotToHPLMN-Barred (25), + registrationInterzonalCF-Barred (26), + registrationInterzonalCFNotToHPLMN-Barred (27), + registrationInternationalCF-Barred (28)} (SIZE (15..32)) + -- exception handling: reception of unknown bit assignments in the + -- ODB-GeneralData type shall be treated like unsupported ODB-GeneralData + -- When the ODB-GeneralData type is removed from the HLR for a given subscriber, + -- in NoteSubscriberDataModified operation sent toward the gsmSCF + -- all bits shall be set to "O". + +ODB-HPLMN-Data ::= BIT STRING { + plmn-SpecificBarringType1 (0), + plmn-SpecificBarringType2 (1), + plmn-SpecificBarringType3 (2), + plmn-SpecificBarringType4 (3)} (SIZE (4..32)) + -- exception handling: reception of unknown bit assignments in the + -- ODB-HPLMN-Data type shall be treated like unsupported ODB-HPLMN-Data + -- When the ODB-HPLMN-Data type is removed from the HLR for a given subscriber, + -- in NoteSubscriberDataModified operation sent toward the gsmSCF + -- all bits shall be set to "O". + +Ext-SS-InfoList ::= SEQUENCE SIZE (1..maxNumOfSS) OF + Ext-SS-Info + +Ext-SS-Info ::= CHOICE { + forwardingInfo [0] Ext-ForwInfo, + callBarringInfo [1] Ext-CallBarInfo, + cug-Info [2] CUG-Info, + ss-Data [3] Ext-SS-Data, + emlpp-Info [4] EMLPP-Info} + +Ext-ForwInfo ::= SEQUENCE { + ss-Code SS-Code, + forwardingFeatureList Ext-ForwFeatureList, + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +Ext-ForwFeatureList ::= SEQUENCE SIZE (1..maxNumOfExt-BasicServiceGroups) OF + Ext-ForwFeature + +Ext-ForwFeature ::= SEQUENCE { + basicService Ext-BasicServiceCode OPTIONAL, + ss-Status [4] Ext-SS-Status, + forwardedToNumber [5] ISDN-AddressString OPTIONAL, + -- When this data type is sent from an HLR which supports CAMEL Phase 2 + -- to a VLR that supports CAMEL Phase 2 the VLR shall not check the + -- format of the number + forwardedToSubaddress [8] ISDN-SubaddressString OPTIONAL, + forwardingOptions [6] Ext-ForwOptions OPTIONAL, + noReplyConditionTime [7] Ext-NoRepCondTime OPTIONAL, + extensionContainer [9] ExtensionContainer OPTIONAL, + ..., + longForwardedToNumber [10] FTN-AddressString OPTIONAL } + +Ext-ForwOptions ::= OCTET STRING (SIZE (1..5)) + + -- OCTET 1: + + -- bit 8: notification to forwarding party + -- 0 no notification + -- 1 notification + + -- bit 7: redirecting presentation + -- 0 no presentation + -- 1 presentation + + -- bit 6: notification to calling party + -- 0 no notification + -- 1 notification + + -- bit 5: 0 (unused) + + -- bits 43: forwarding reason + -- 00 ms not reachable + -- 01 ms busy + -- 10 no reply + -- 11 unconditional + + -- bits 21: 00 (unused) + + -- OCTETS 2-5: reserved for future use. They shall be discarded if + -- received and not understood. + +Ext-NoRepCondTime ::= INTEGER (1..100) + -- Only values 5-30 are used. + -- Values in the ranges 1-4 and 31-100 are reserved for future use + -- If received: + -- values 1-4 shall be mapped on to value 5 + -- values 31-100 shall be mapped on to value 30 + +Ext-CallBarInfo ::= SEQUENCE { + ss-Code SS-Code, + callBarringFeatureList Ext-CallBarFeatureList, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +Ext-CallBarFeatureList ::= SEQUENCE SIZE (1..maxNumOfExt-BasicServiceGroups) OF + Ext-CallBarringFeature + +Ext-CallBarringFeature ::= SEQUENCE { + basicService Ext-BasicServiceCode OPTIONAL, + ss-Status [4] Ext-SS-Status, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +CUG-Info ::= SEQUENCE { + cug-SubscriptionList CUG-SubscriptionList, + cug-FeatureList CUG-FeatureList OPTIONAL, + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +CUG-SubscriptionList ::= SEQUENCE SIZE (0..maxNumOfCUG) OF + CUG-Subscription + +CUG-Subscription ::= SEQUENCE { + cug-Index CUG-Index, + cug-Interlock CUG-Interlock, + intraCUG-Options IntraCUG-Options, + basicServiceGroupList Ext-BasicServiceGroupList OPTIONAL, + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +CUG-Index ::= INTEGER (0..32767) + -- The internal structure is defined in ETS 300 138. + +CUG-Interlock ::= OCTET STRING (SIZE (4)) + +IntraCUG-Options ::= ENUMERATED { + noCUG-Restrictions (0), + cugIC-CallBarred (1), + cugOG-CallBarred (2)} + +maxNumOfCUG INTEGER ::= 10 + +CUG-FeatureList ::= SEQUENCE SIZE (1..maxNumOfExt-BasicServiceGroups) OF + CUG-Feature + +Ext-BasicServiceGroupList ::= SEQUENCE SIZE (1..maxNumOfExt-BasicServiceGroups) OF + Ext-BasicServiceCode + +maxNumOfExt-BasicServiceGroups INTEGER ::= 32 + +CUG-Feature ::= SEQUENCE { + basicService Ext-BasicServiceCode OPTIONAL, + preferentialCUG-Indicator CUG-Index OPTIONAL, + interCUG-Restrictions InterCUG-Restrictions, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +InterCUG-Restrictions ::= OCTET STRING (SIZE (1)) + + -- bits 876543: 000000 (unused) + -- Exception handling: + -- bits 876543 shall be ignored if received and not understood + + -- bits 21 + -- 00 CUG only facilities + -- 01 CUG with outgoing access + -- 10 CUG with incoming access + -- 11 CUG with both outgoing and incoming access + +Ext-SS-Data ::= SEQUENCE { + ss-Code SS-Code, + ss-Status [4] Ext-SS-Status, + ss-SubscriptionOption SS-SubscriptionOption OPTIONAL, + basicServiceGroupList Ext-BasicServiceGroupList OPTIONAL, + extensionContainer [5] ExtensionContainer OPTIONAL, + ...} + +LCS-PrivacyExceptionList ::= SEQUENCE SIZE (1..maxNumOfPrivacyClass) OF + LCS-PrivacyClass + +maxNumOfPrivacyClass INTEGER ::= 4 + +LCS-PrivacyClass ::= SEQUENCE { + ss-Code SS-Code, + ss-Status Ext-SS-Status, + notificationToMSUser [0] NotificationToMSUser OPTIONAL, + -- notificationToMSUser may be sent only for SS-codes callSessionRelated + -- and callSessionUnrelated. If not received for SS-codes callSessionRelated + -- and callSessionUnrelated, + -- the default values according to 3GPP TS 23.271 shall be assumed. + externalClientList [1] ExternalClientList OPTIONAL, + -- externalClientList may be sent only for SS-code callSessionUnrelated to a + -- visited node that does not support LCS Release 4 or later versions. + -- externalClientList may be sent only for SS-codes callSessionUnrelated and + -- callSessionRelated to a visited node that supports LCS Release 4 or later versions. + plmnClientList [2] PLMNClientList OPTIONAL, + -- plmnClientList may be sent only for SS-code plmnoperator. + extensionContainer [3] ExtensionContainer OPTIONAL, + ..., + ext-externalClientList [4] Ext-ExternalClientList OPTIONAL, + -- Ext-externalClientList may be sent only if the visited node supports LCS Release 4 or + -- later versions, the user did specify more than 5 clients, and White Book SCCP is used. + serviceTypeList [5] ServiceTypeList OPTIONAL + -- serviceTypeList may be sent only for SS-code serviceType and if the visited node + -- supports LCS Release 5 or later versions. + -- + -- if segmentation is used, the complete LCS-PrivacyClass shall be sent in one segment +} + +ExternalClientList ::= SEQUENCE SIZE (0..maxNumOfExternalClient) OF + ExternalClient + +maxNumOfExternalClient INTEGER ::= 5 + +PLMNClientList ::= SEQUENCE SIZE (1..maxNumOfPLMNClient) OF + LCSClientInternalID + +maxNumOfPLMNClient INTEGER ::= 5 + +Ext-ExternalClientList ::= SEQUENCE SIZE (1..maxNumOfExt-ExternalClient) OF + ExternalClient + +maxNumOfExt-ExternalClient INTEGER ::= 35 + +ExternalClient ::= SEQUENCE { + clientIdentity LCSClientExternalID, + gmlc-Restriction [0] GMLC-Restriction OPTIONAL, + notificationToMSUser [1] NotificationToMSUser OPTIONAL, + -- If notificationToMSUser is not received, the default value according to + -- 3GPP TS 23.271 shall be assumed. + extensionContainer [2] ExtensionContainer OPTIONAL, + ... } + +GMLC-Restriction ::= ENUMERATED { + gmlc-List (0), + home-Country (1) , + ... } +-- exception handling: +-- At reception of any other value than the ones listed the receiver shall ignore +-- GMLC-Restriction. + +NotificationToMSUser ::= ENUMERATED { + notifyLocationAllowed (0), + notifyAndVerify-LocationAllowedIfNoResponse (1), + notifyAndVerify-LocationNotAllowedIfNoResponse (2), + ..., + locationNotAllowed (3) } +-- exception handling: +-- At reception of any other value than the ones listed the receiver shall ignore +-- NotificationToMSUser. + +ServiceTypeList ::= SEQUENCE SIZE (1..maxNumOfServiceType) OF + ServiceType + +maxNumOfServiceType INTEGER ::= 32 + +ServiceType ::= SEQUENCE { + serviceTypeIdentity LCSServiceTypeID, + gmlc-Restriction [0] GMLC-Restriction OPTIONAL, + notificationToMSUser [1] NotificationToMSUser OPTIONAL, + -- If notificationToMSUser is not received, the default value according to + -- 3GPP TS 23.271 shall be assumed. + extensionContainer [2] ExtensionContainer OPTIONAL, + ... } + +MOLR-List ::= SEQUENCE SIZE (1..maxNumOfMOLR-Class) OF + MOLR-Class + +maxNumOfMOLR-Class INTEGER ::= 3 + +MOLR-Class ::= SEQUENCE { + ss-Code SS-Code, + ss-Status Ext-SS-Status, + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +ZoneCodeList ::= SEQUENCE SIZE (1..maxNumOfZoneCodes) + OF ZoneCode + +ZoneCode ::= OCTET STRING (SIZE (2)) + -- internal structure is defined in TS 3GPP TS 23.003 [17] + +maxNumOfZoneCodes INTEGER ::= 10 + +InsertSubscriberDataRes ::= SEQUENCE { + teleserviceList [1] TeleserviceList OPTIONAL, + bearerServiceList [2] BearerServiceList OPTIONAL, + ss-List [3] SS-List OPTIONAL, + odb-GeneralData [4] ODB-GeneralData OPTIONAL, + regionalSubscriptionResponse [5] RegionalSubscriptionResponse OPTIONAL, + supportedCamelPhases [6] SupportedCamelPhases OPTIONAL, + extensionContainer [7] ExtensionContainer OPTIONAL, + ... , + offeredCamel4CSIs [8] OfferedCamel4CSIs OPTIONAL, + supportedFeatures [9] SupportedFeatures OPTIONAL, + ext-SupportedFeatures [10] Ext-SupportedFeatures OPTIONAL } + +RegionalSubscriptionResponse ::= ENUMERATED { + networkNode-AreaRestricted (0), + tooManyZoneCodes (1), + zoneCodesConflict (2), + regionalSubscNotSupported (3)} + +DeleteSubscriberDataArg ::= SEQUENCE { + imsi [0] IMSI, + basicServiceList [1] BasicServiceList OPTIONAL, + -- The exception handling for reception of unsupported/not allocated + -- basicServiceCodes is defined in clause 6.8.2 + ss-List [2] SS-List OPTIONAL, + roamingRestrictionDueToUnsupportedFeature [4] NULL OPTIONAL, + regionalSubscriptionIdentifier [5] ZoneCode OPTIONAL, + vbsGroupIndication [7] NULL OPTIONAL, + vgcsGroupIndication [8] NULL OPTIONAL, + camelSubscriptionInfoWithdraw [9] NULL OPTIONAL, + extensionContainer [6] ExtensionContainer OPTIONAL, + ..., + gprsSubscriptionDataWithdraw [10] GPRSSubscriptionDataWithdraw OPTIONAL, + roamingRestrictedInSgsnDueToUnsuppportedFeature [11] NULL OPTIONAL, + lsaInformationWithdraw [12] LSAInformationWithdraw OPTIONAL, + gmlc-ListWithdraw [13] NULL OPTIONAL, + istInformationWithdraw [14] NULL OPTIONAL, + specificCSI-Withdraw [15] SpecificCSI-Withdraw OPTIONAL, + chargingCharacteristicsWithdraw [16] NULL OPTIONAL, + stn-srWithdraw [17] NULL OPTIONAL, + epsSubscriptionDataWithdraw [18] EPS-SubscriptionDataWithdraw OPTIONAL, + apn-oi-replacementWithdraw [19] NULL OPTIONAL, + csg-SubscriptionDeleted [20] NULL OPTIONAL, + subscribedPeriodicTAU-RAU-TimerWithdraw [22] NULL OPTIONAL, + subscribedPeriodicLAU-TimerWithdraw [23] NULL OPTIONAL, + subscribed-vsrvccWithdraw [21] NULL OPTIONAL, + vplmn-Csg-SubscriptionDeleted [24] NULL OPTIONAL, + additionalMSISDN-Withdraw [25] NULL OPTIONAL, + cs-to-ps-SRVCC-Withdraw [26] NULL OPTIONAL, + imsiGroupIdList-Withdraw [27] NULL OPTIONAL, + userPlaneIntegrityProtectionWithdraw [28] NULL OPTIONAL, + dl-Buffering-Suggested-Packet-Count-Withdraw [29] NULL OPTIONAL, + ue-UsageTypeWithdraw [30] NULL OPTIONAL, + reset-idsWithdraw [31] NULL OPTIONAL, + iab-OperationWithdraw [32] NULL OPTIONAL } + +SpecificCSI-Withdraw ::= BIT STRING { + o-csi (0), + ss-csi (1), + tif-csi (2), + d-csi (3), + vt-csi (4), + mo-sms-csi (5), + m-csi (6), + gprs-csi (7), + t-csi (8), + mt-sms-csi (9), + mg-csi (10), + o-IM-CSI (11), + d-IM-CSI (12), + vt-IM-CSI (13) } (SIZE(8..32)) +-- exception handling: +-- bits 11 to 31 shall be ignored if received by a non-IP Multimedia Core Network entity. +-- bits 0-10 and 14-31 shall be ignored if received by an IP Multimedia Core Network entity. +-- bits 11-13 are only applicable in an IP Multimedia Core Network. +-- Bit 8 and bits 11-13 are only applicable for the NoteSubscriberDataModified operation. + +GPRSSubscriptionDataWithdraw ::= CHOICE { + allGPRSData NULL, + contextIdList ContextIdList} + +EPS-SubscriptionDataWithdraw ::= CHOICE { + allEPS-Data NULL, + contextIdList ContextIdList} + +ContextIdList ::= SEQUENCE SIZE (1..maxNumOfPDP-Contexts) OF + ContextId + +LSAInformationWithdraw ::= CHOICE { + allLSAData NULL, + lsaIdentityList LSAIdentityList } + +LSAIdentityList ::= SEQUENCE SIZE (1..maxNumOfLSAs) OF + LSAIdentity + +BasicServiceList ::= SEQUENCE SIZE (1..maxNumOfBasicServices) OF + Ext-BasicServiceCode + +maxNumOfBasicServices INTEGER ::= 70 + +DeleteSubscriberDataRes ::= SEQUENCE { + regionalSubscriptionResponse [0] RegionalSubscriptionResponse OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +VlrCamelSubscriptionInfo ::= SEQUENCE { + o-CSI [0] O-CSI OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ..., + ss-CSI [2] SS-CSI OPTIONAL, + o-BcsmCamelTDP-CriteriaList [4] O-BcsmCamelTDPCriteriaList OPTIONAL, + tif-CSI [3] NULL OPTIONAL, + m-CSI [5] M-CSI OPTIONAL, + mo-sms-CSI [6] SMS-CSI OPTIONAL, + vt-CSI [7] T-CSI OPTIONAL, + t-BCSM-CAMEL-TDP-CriteriaList [8] T-BCSM-CAMEL-TDP-CriteriaList OPTIONAL, + d-CSI [9] D-CSI OPTIONAL, + mt-sms-CSI [10] SMS-CSI OPTIONAL, + mt-smsCAMELTDP-CriteriaList [11] MT-smsCAMELTDP-CriteriaList OPTIONAL + } + +MT-smsCAMELTDP-CriteriaList ::= SEQUENCE SIZE (1.. maxNumOfCamelTDPData) OF + MT-smsCAMELTDP-Criteria + +MT-smsCAMELTDP-Criteria ::= SEQUENCE { + sms-TriggerDetectionPoint SMS-TriggerDetectionPoint, + tpdu-TypeCriterion [0] TPDU-TypeCriterion OPTIONAL, + ... } + +TPDU-TypeCriterion ::= SEQUENCE SIZE (1..maxNumOfTPDUTypes) OF + MT-SMS-TPDU-Type + + +maxNumOfTPDUTypes INTEGER ::= 5 + +MT-SMS-TPDU-Type ::= ENUMERATED { + sms-DELIVER (0), + sms-SUBMIT-REPORT (1), + sms-STATUS-REPORT (2), + ... } + +-- exception handling: +-- For TPDU-TypeCriterion sequences containing this parameter with any +-- other value than the ones listed above the receiver shall ignore +-- the whole TPDU-TypeCriterion sequence. +-- In CAMEL phase 4, sms-SUBMIT-REPORT shall not be used and a received TPDU-TypeCriterion +-- sequence containing sms-SUBMIT-REPORT shall be wholly ignored. + +D-CSI ::= SEQUENCE { + dp-AnalysedInfoCriteriaList [0] DP-AnalysedInfoCriteriaList OPTIONAL, + camelCapabilityHandling [1] CamelCapabilityHandling OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + notificationToCSE [3] NULL OPTIONAL, + csi-Active [4] NULL OPTIONAL, + ...} +-- notificationToCSE and csi-Active shall not be present when D-CSI is sent to VLR/GMSC. +-- They may only be included in ATSI/ATM ack/NSDC message. +-- DP-AnalysedInfoCriteria and camelCapabilityHandling shall be present in +-- the D-CSI sequence. +-- If D-CSI is segmented, then the first segment shall contain dp-AnalysedInfoCriteriaList +-- and camelCapabilityHandling. Subsequent segments shall not contain +-- camelCapabilityHandling, but may contain dp-AnalysedInfoCriteriaList. + +DP-AnalysedInfoCriteriaList ::= SEQUENCE SIZE (1..maxNumOfDP-AnalysedInfoCriteria) OF + DP-AnalysedInfoCriterium + +maxNumOfDP-AnalysedInfoCriteria INTEGER ::= 10 + +DP-AnalysedInfoCriterium ::= SEQUENCE { + dialledNumber ISDN-AddressString, + serviceKey ServiceKey, + gsmSCF-Address ISDN-AddressString, + defaultCallHandling DefaultCallHandling, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +SS-CSI ::= SEQUENCE { + ss-CamelData SS-CamelData, + extensionContainer ExtensionContainer OPTIONAL, + ..., + notificationToCSE [0] NULL OPTIONAL, + csi-Active [1] NULL OPTIONAL +-- notificationToCSE and csi-Active shall not be present when SS-CSI is sent to VLR. +-- They may only be included in ATSI/ATM ack/NSDC message. +} + +SS-CamelData ::= SEQUENCE { + ss-EventList SS-EventList, + gsmSCF-Address ISDN-AddressString, + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +SS-EventList ::= SEQUENCE SIZE (1..maxNumOfCamelSSEvents) OF SS-Code + -- Actions for the following SS-Code values are defined in CAMEL Phase 3: + -- ect SS-Code ::= '00110001'B + -- multiPTY SS-Code ::= '01010001'B + -- cd SS-Code ::= '00100100'B + -- ccbs SS-Code ::= '01000100'B + -- all other SS codes shall be ignored + -- When SS-CSI is sent to the VLR, it shall not contain a marking for ccbs. + -- If the VLR receives SS-CSI containing a marking for ccbs, the VLR shall discard the + -- ccbs marking in SS-CSI. + +maxNumOfCamelSSEvents INTEGER ::= 10 + +O-CSI ::= SEQUENCE { + o-BcsmCamelTDPDataList O-BcsmCamelTDPDataList, + extensionContainer ExtensionContainer OPTIONAL, + ..., + camelCapabilityHandling [0] CamelCapabilityHandling OPTIONAL, + notificationToCSE [1] NULL OPTIONAL, + csiActive [2] NULL OPTIONAL} +-- notificationtoCSE and csiActive shall not be present when O-CSI is sent to VLR/GMSC. +-- They may only be included in ATSI/ATM ack/NSDC message. +-- O-CSI shall not be segmented. + +O-BcsmCamelTDPDataList ::= SEQUENCE SIZE (1..maxNumOfCamelTDPData) OF + O-BcsmCamelTDPData + -- O-BcsmCamelTDPDataList shall not contain more than one instance of + -- O-BcsmCamelTDPData containing the same value for o-BcsmTriggerDetectionPoint. + -- For CAMEL Phase 2, this means that only one instance of O-BcsmCamelTDPData is allowed + -- with o-BcsmTriggerDetectionPoint being equal to DP2. + +maxNumOfCamelTDPData INTEGER ::= 10 + +O-BcsmCamelTDPData ::= SEQUENCE { + o-BcsmTriggerDetectionPoint O-BcsmTriggerDetectionPoint, + serviceKey ServiceKey, + gsmSCF-Address [0] ISDN-AddressString, + defaultCallHandling [1] DefaultCallHandling, + extensionContainer [2] ExtensionContainer OPTIONAL, + ... + } + +ServiceKey ::= INTEGER (0..2147483647) + +O-BcsmTriggerDetectionPoint ::= ENUMERATED { + collectedInfo (2), + ..., + routeSelectFailure (4) } + -- exception handling: + -- For O-BcsmCamelTDPData sequences containing this parameter with any + -- other value than the ones listed the receiver shall ignore the whole + -- O-BcsmCamelTDPDatasequence. + -- For O-BcsmCamelTDP-Criteria sequences containing this parameter with any + -- other value than the ones listed the receiver shall ignore the whole + -- O-BcsmCamelTDP-Criteria sequence. + +O-BcsmCamelTDPCriteriaList ::= SEQUENCE SIZE (1..maxNumOfCamelTDPData) OF + O-BcsmCamelTDP-Criteria + +T-BCSM-CAMEL-TDP-CriteriaList ::= SEQUENCE SIZE (1..maxNumOfCamelTDPData) OF + T-BCSM-CAMEL-TDP-Criteria + +O-BcsmCamelTDP-Criteria ::= SEQUENCE { + o-BcsmTriggerDetectionPoint O-BcsmTriggerDetectionPoint, + destinationNumberCriteria [0] DestinationNumberCriteria OPTIONAL, + basicServiceCriteria [1] BasicServiceCriteria OPTIONAL, + callTypeCriteria [2] CallTypeCriteria OPTIONAL, + ..., + o-CauseValueCriteria [3] O-CauseValueCriteria OPTIONAL, + extensionContainer [4] ExtensionContainer OPTIONAL } + +T-BCSM-CAMEL-TDP-Criteria ::= SEQUENCE { + t-BCSM-TriggerDetectionPoint T-BcsmTriggerDetectionPoint, + basicServiceCriteria [0] BasicServiceCriteria OPTIONAL, + t-CauseValueCriteria [1] T-CauseValueCriteria OPTIONAL, + ... } + +DestinationNumberCriteria ::= SEQUENCE { + matchType [0] MatchType, + destinationNumberList [1] DestinationNumberList OPTIONAL, + destinationNumberLengthList [2] DestinationNumberLengthList OPTIONAL, + -- one or both of destinationNumberList and destinationNumberLengthList + -- shall be present + ...} + +DestinationNumberList ::= SEQUENCE SIZE (1..maxNumOfCamelDestinationNumbers) OF + ISDN-AddressString + -- The receiving entity shall not check the format of a number in + -- the dialled number list + +DestinationNumberLengthList ::= SEQUENCE SIZE (1..maxNumOfCamelDestinationNumberLengths) OF + INTEGER(1..maxNumOfISDN-AddressDigits) + +BasicServiceCriteria ::= SEQUENCE SIZE(1..maxNumOfCamelBasicServiceCriteria) OF + Ext-BasicServiceCode + +maxNumOfISDN-AddressDigits INTEGER ::= 15 + +maxNumOfCamelDestinationNumbers INTEGER ::= 10 + +maxNumOfCamelDestinationNumberLengths INTEGER ::= 3 + +maxNumOfCamelBasicServiceCriteria INTEGER ::= 5 + +CallTypeCriteria ::= ENUMERATED { + forwarded (0), + notForwarded (1)} + +MatchType ::= ENUMERATED { + inhibiting (0), + enabling (1)} + +O-CauseValueCriteria ::= SEQUENCE SIZE(1..maxNumOfCAMEL-O-CauseValueCriteria) OF + CauseValue + +T-CauseValueCriteria ::= SEQUENCE SIZE(1..maxNumOfCAMEL-T-CauseValueCriteria) OF + CauseValue + +maxNumOfCAMEL-O-CauseValueCriteria INTEGER ::= 5 + +maxNumOfCAMEL-T-CauseValueCriteria INTEGER ::= 5 + +CauseValue ::= OCTET STRING (SIZE(1)) +-- Type extracted from Cause parameter in ITU-T Recommendation Q.763. +-- For the use of cause value refer to ITU-T Recommendation Q.850. + +DefaultCallHandling ::= ENUMERATED { + continueCall (0) , + releaseCall (1) , + ...} + -- exception handling: + -- reception of values in range 2-31 shall be treated as "continueCall" + -- reception of values greater than 31 shall be treated as "releaseCall" + +CamelCapabilityHandling ::= INTEGER(1..16) + -- value 1 = CAMEL phase 1, + -- value 2 = CAMEL phase 2, + -- value 3 = CAMEL Phase 3, + -- value 4 = CAMEL phase 4: + -- reception of values greater than 4 shall be treated as CAMEL phase 4. + +SupportedCamelPhases ::= BIT STRING { + phase1 (0), + phase2 (1), + phase3 (2), + phase4 (3)} (SIZE (1..16)) +-- A node shall mark in the BIT STRING all CAMEL Phases it supports. +-- Other values than listed above shall be discarded. + +OfferedCamel4CSIs ::= BIT STRING { + o-csi (0), + d-csi (1), + vt-csi (2), + t-csi (3), + mt-sms-csi (4), + mg-csi (5), + psi-enhancements (6) +} (SIZE (7..16)) +-- A node supporting Camel phase 4 shall mark in the BIT STRING all Camel4 CSIs +-- it offers. +-- Other values than listed above shall be discarded. + +OfferedCamel4Functionalities ::= BIT STRING { + initiateCallAttempt (0), + splitLeg (1), + moveLeg (2), + disconnectLeg (3), + entityReleased (4), + dfc-WithArgument (5), + playTone (6), + dtmf-MidCall (7), + chargingIndicator (8), + alertingDP (9), + locationAtAlerting (10), + changeOfPositionDP (11), + or-Interactions (12), + warningToneEnhancements (13), + cf-Enhancements (14), + subscribedEnhancedDialledServices (15), + servingNetworkEnhancedDialledServices (16), + criteriaForChangeOfPositionDP (17), + serviceChangeDP (18), + collectInformation (19) +} (SIZE (15..64)) +-- A node supporting Camel phase 4 shall mark in the BIT STRING all CAMEL4 +-- functionalities it offers. +-- Other values than listed above shall be discarded. + +SMS-CSI ::= SEQUENCE { + sms-CAMEL-TDP-DataList [0] SMS-CAMEL-TDP-DataList OPTIONAL, + camelCapabilityHandling [1] CamelCapabilityHandling OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + notificationToCSE [3] NULL OPTIONAL, + csi-Active [4] NULL OPTIONAL, + ...} +-- notificationToCSE and csi-Active shall not be present +-- when MO-SMS-CSI or MT-SMS-CSI is sent to VLR or SGSN. +-- They may only be included in ATSI/ATM ack/NSDC message. +-- SMS-CAMEL-TDP-Data and camelCapabilityHandling shall be present in +-- the SMS-CSI sequence. +-- If SMS-CSI is segmented, sms-CAMEL-TDP-DataList and camelCapabilityHandling shall be +-- present in the first segment + +SMS-CAMEL-TDP-DataList ::= SEQUENCE SIZE (1..maxNumOfCamelTDPData) OF + SMS-CAMEL-TDP-Data +-- SMS-CAMEL-TDP-DataList shall not contain more than one instance of +-- SMS-CAMEL-TDP-Data containing the same value for sms-TriggerDetectionPoint. + +SMS-CAMEL-TDP-Data ::= SEQUENCE { + sms-TriggerDetectionPoint [0] SMS-TriggerDetectionPoint, + serviceKey [1] ServiceKey, + gsmSCF-Address [2] ISDN-AddressString, + defaultSMS-Handling [3] DefaultSMS-Handling, + extensionContainer [4] ExtensionContainer OPTIONAL, + ... + } + +SMS-TriggerDetectionPoint ::= ENUMERATED { + sms-CollectedInfo (1), + ..., + sms-DeliveryRequest (2) + } +-- exception handling: +-- For SMS-CAMEL-TDP-Data and MT-smsCAMELTDP-Criteria sequences containing this +-- parameter with any other value than the ones listed the receiver shall ignore +-- the whole sequence. +-- +-- If this parameter is received with any other value than sms-CollectedInfo +-- in an SMS-CAMEL-TDP-Data sequence contained in mo-sms-CSI, then the receiver shall +-- ignore the whole SMS-CAMEL-TDP-Data sequence. +-- +-- If this parameter is received with any other value than sms-DeliveryRequest +-- in an SMS-CAMEL-TDP-Data sequence contained in mt-sms-CSI then the receiver shall +-- ignore the whole SMS-CAMEL-TDP-Data sequence. +-- +-- If this parameter is received with any other value than sms-DeliveryRequest +-- in an MT-smsCAMELTDP-Criteria sequence then the receiver shall +-- ignore the whole MT-smsCAMELTDP-Criteria sequence. + +DefaultSMS-Handling ::= ENUMERATED { + continueTransaction (0) , + releaseTransaction (1) , + ...} +-- exception handling: +-- reception of values in range 2-31 shall be treated as "continueTransaction" +-- reception of values greater than 31 shall be treated as "releaseTransaction" + +M-CSI ::= SEQUENCE { + mobilityTriggers MobilityTriggers, + serviceKey ServiceKey, + gsmSCF-Address [0] ISDN-AddressString, + extensionContainer [1] ExtensionContainer OPTIONAL, + notificationToCSE [2] NULL OPTIONAL, + csi-Active [3] NULL OPTIONAL, + ...} +-- notificationToCSE and csi-Active shall not be present when M-CSI is sent to VLR. +-- They may only be included in ATSI/ATM ack/NSDC message. + +MG-CSI ::= SEQUENCE { + mobilityTriggers MobilityTriggers, + serviceKey ServiceKey, + gsmSCF-Address [0] ISDN-AddressString, + extensionContainer [1] ExtensionContainer OPTIONAL, + notificationToCSE [2] NULL OPTIONAL, + csi-Active [3] NULL OPTIONAL, + ...} +-- notificationToCSE and csi-Active shall not be present when MG-CSI is sent to SGSN. +-- They may only be included in ATSI/ATM ack/NSDC message. + +MobilityTriggers ::= SEQUENCE SIZE (1..maxNumOfMobilityTriggers) OF + MM-Code + +maxNumOfMobilityTriggers INTEGER ::= 10 + +MM-Code ::= OCTET STRING (SIZE (1)) +-- This type is used to indicate a Mobility Management event. +-- Actions for the following MM-Code values are defined in CAMEL Phase 4: +-- +-- CS domain MM events: +-- Location-update-in-same-VLR MM-Code ::= '00000000'B +-- Location-update-to-other-VLR MM-Code ::= '00000001'B +-- IMSI-Attach MM-Code ::= '00000010'B +-- MS-initiated-IMSI-Detach MM-Code ::= '00000011'B +-- Network-initiated-IMSI-Detach MM-Code ::= '00000100'B +-- +-- PS domain MM events: +-- Routeing-Area-update-in-same-SGSN MM-Code ::= '10000000'B +-- Routeing-Area-update-to-other-SGSN-update-from-new-SGSN +-- MM-Code ::= '10000001'B +-- Routeing-Area-update-to-other-SGSN-disconnect-by-detach +-- MM-Code ::= '10000010'B +-- GPRS-Attach MM-Code ::= '10000011'B +-- MS-initiated-GPRS-Detach MM-Code ::= '10000100'B +-- Network-initiated-GPRS-Detach MM-Code ::= '10000101'B +-- Network-initiated-transfer-to-MS-not-reachable-for-paging +-- MM-Code ::= '10000110'B +-- +-- If the MSC receives any other MM-code than the ones listed above for the +-- CS domain, then the MSC shall ignore that MM-code. +-- If the SGSN receives any other MM-code than the ones listed above for the +-- PS domain, then the SGSN shall ignore that MM-code. + +T-CSI ::= SEQUENCE { + t-BcsmCamelTDPDataList T-BcsmCamelTDPDataList, + extensionContainer ExtensionContainer OPTIONAL, + ..., + camelCapabilityHandling [0] CamelCapabilityHandling OPTIONAL, + notificationToCSE [1] NULL OPTIONAL, + csi-Active [2] NULL OPTIONAL} +-- notificationToCSE and csi-Active shall not be present when VT-CSI/T-CSI is sent +-- to VLR/GMSC. +-- They may only be included in ATSI/ATM ack/NSDC message. +-- T-CSI shall not be segmented. + +T-BcsmCamelTDPDataList ::= SEQUENCE SIZE (1..maxNumOfCamelTDPData) OF + T-BcsmCamelTDPData + --- T-BcsmCamelTDPDataList shall not contain more than one instance of + --- T-BcsmCamelTDPData containing the same value for t-BcsmTriggerDetectionPoint. + --- For CAMEL Phase 2, this means that only one instance of T-BcsmCamelTDPData is allowed + --- with t-BcsmTriggerDetectionPoint being equal to DP12. + --- For CAMEL Phase 3, more TDP's are allowed. + +T-BcsmCamelTDPData ::= SEQUENCE { + t-BcsmTriggerDetectionPoint T-BcsmTriggerDetectionPoint, + serviceKey ServiceKey, + gsmSCF-Address [0] ISDN-AddressString, + defaultCallHandling [1] DefaultCallHandling, + extensionContainer [2] ExtensionContainer OPTIONAL, + ...} + +T-BcsmTriggerDetectionPoint ::= ENUMERATED { + termAttemptAuthorized (12), + ... , + tBusy (13), + tNoAnswer (14)} + -- exception handling: + -- For T-BcsmCamelTDPData sequences containing this parameter with any other + -- value than the ones listed above, the receiver shall ignore the whole + -- T-BcsmCamelTDPData sequence. + +-- gprs location information retrieval types + +SendRoutingInfoForGprsArg ::= SEQUENCE { + imsi [0] IMSI, + ggsn-Address [1] GSN-Address OPTIONAL, + ggsn-Number [2] ISDN-AddressString, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +SendRoutingInfoForGprsRes ::= SEQUENCE { + sgsn-Address [0] GSN-Address, + ggsn-Address [1] GSN-Address OPTIONAL, + mobileNotReachableReason [2] AbsentSubscriberDiagnosticSM OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +-- failure report types + +FailureReportArg ::= SEQUENCE { + imsi [0] IMSI, + ggsn-Number [1] ISDN-AddressString , + ggsn-Address [2] GSN-Address OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +FailureReportRes ::= SEQUENCE { + ggsn-Address [0] GSN-Address OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ...} + +-- gprs notification types + +NoteMsPresentForGprsArg ::= SEQUENCE { + imsi [0] IMSI, + sgsn-Address [1] GSN-Address, + ggsn-Address [2] GSN-Address OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +NoteMsPresentForGprsRes ::= SEQUENCE { + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +-- fault recovery types + +ResetArg ::= SEQUENCE { + sendingNodenumber SendingNode-Number, + hlr-List HLR-List OPTIONAL, + -- The hlr-List parameter shall only be applicable for a restart of the HSS/HLR. + extensionContainer [0] ExtensionContainer OPTIONAL, + ..., + reset-Id-List [1] Reset-Id-List OPTIONAL, + subscriptionData [2] InsertSubscriberDataArg OPTIONAL, + subscriptionDataDeletion [3] DeleteSubscriberDataArg OPTIONAL} + +SendingNode-Number ::= CHOICE { + hlr-Number ISDN-AddressString, + css-Number [1] ISDN-AddressString} + +RestoreDataArg ::= SEQUENCE { + imsi IMSI, + lmsi LMSI OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ... , + vlr-Capability [6] VLR-Capability OPTIONAL, + restorationIndicator [7] NULL OPTIONAL + } + +RestoreDataRes ::= SEQUENCE { + hlr-Number ISDN-AddressString, + msNotReachable NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +-- VBS/VGCS types +VBSDataList ::= SEQUENCE SIZE (1..maxNumOfVBSGroupIds) OF + VoiceBroadcastData + +VGCSDataList ::= SEQUENCE SIZE (1..maxNumOfVGCSGroupIds) OF + VoiceGroupCallData + +maxNumOfVBSGroupIds INTEGER ::= 50 + +maxNumOfVGCSGroupIds INTEGER ::= 50 + +VoiceGroupCallData ::= SEQUENCE { + groupId GroupId, + -- groupId shall be filled with six TBCD fillers (1111)if the longGroupId is present + extensionContainer ExtensionContainer OPTIONAL, + ..., + additionalSubscriptions AdditionalSubscriptions OPTIONAL, + additionalInfo [0] AdditionalInfo OPTIONAL, + longGroupId [1] Long-GroupId OPTIONAL } + + -- VoiceGroupCallData containing a longGroupId shall not be sent to VLRs that did not + -- indicate support of long Group IDs within the Update Location or Restore Data + -- request message + +AdditionalInfo ::= BIT STRING (SIZE (1..136)) +-- Refers to Additional Info as specified in 3GPP TS 43.068 + +AdditionalSubscriptions ::= BIT STRING { + privilegedUplinkRequest (0), + emergencyUplinkRequest (1), + emergencyReset (2)} (SIZE (3..8)) +-- Other bits than listed above shall be discarded. + +VoiceBroadcastData ::= SEQUENCE { + groupid GroupId, + -- groupId shall be filled with six TBCD fillers (1111)if the longGroupId is present + broadcastInitEntitlement NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + longGroupId [0] Long-GroupId OPTIONAL } + +-- VoiceBroadcastData containing a longGroupId shall not be sent to VLRs that did not +-- indicate support of long Group IDs within the Update Location or Restore Data + -- request message + +GroupId ::= TBCD-STRING (SIZE (3)) + -- When Group-Id is less than six characters in length, the TBCD filler (1111) + -- is used to fill unused half octets. + -- Refers to the Group Identification as specified in 3GPP TS 23.003 + -- and 3GPP TS 43.068/ 43.069 + +Long-GroupId ::= TBCD-STRING (SIZE (4)) + -- When Long-Group-Id is less than eight characters in length, the TBCD filler (1111) + -- is used to fill unused half octets. + -- Refers to the Group Identification as specified in 3GPP TS 23.003 + -- and 3GPP TS 43.068/ 43.069 + + +-- provide subscriber info types + +ProvideSubscriberInfoArg ::= SEQUENCE { + imsi [0] IMSI, + lmsi [1] LMSI OPTIONAL, + requestedInfo [2] RequestedInfo, + extensionContainer [3] ExtensionContainer OPTIONAL, + ..., + callPriority [4] EMLPP-Priority OPTIONAL + } + +ProvideSubscriberInfoRes ::= SEQUENCE { + subscriberInfo SubscriberInfo, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +SubscriberInfo ::= SEQUENCE { + locationInformation [0] LocationInformation OPTIONAL, + subscriberState [1] SubscriberState OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ... , + locationInformationGPRS [3] LocationInformationGPRS OPTIONAL, + ps-SubscriberState [4] PS-SubscriberState OPTIONAL, + imei [5] IMEI OPTIONAL, + ms-Classmark2 [6] MS-Classmark2 OPTIONAL, + gprs-MS-Class [7] GPRSMSClass OPTIONAL, + mnpInfoRes [8] MNPInfoRes OPTIONAL, + imsVoiceOverPS-SessionsIndication [9] IMS-VoiceOverPS-SessionsInd OPTIONAL, + lastUE-ActivityTime [10] Time OPTIONAL, + lastRAT-Type [11] Used-RAT-Type OPTIONAL, + eps-SubscriberState [12] PS-SubscriberState OPTIONAL, + locationInformationEPS [13] LocationInformationEPS OPTIONAL, + timeZone [14] TimeZone OPTIONAL, + daylightSavingTime [15] DaylightSavingTime OPTIONAL, + locationInformation5GS [16] LocationInformation5GS OPTIONAL } + +-- If the HLR receives locationInformation, subscriberState or ms-Classmark2 from an SGSN or +-- MME (via an IWF), it shall discard them. +-- If the HLR receives locationInformationGPRS, ps-SubscriberState, gprs-MS-Class or +-- locationInformationEPS (outside the locationInformation IE) from a VLR, it shall +-- discard them. +-- If the HLR receives parameters which it has not requested, it shall discard them. +-- The locationInformation5GS IE should be absent if UE did not access via 5GS and IM-SSF. + +IMS-VoiceOverPS-SessionsInd ::= ENUMERATED { + imsVoiceOverPS-SessionsNotSupported (0), + imsVoiceOverPS-SessionsSupported (1), + unknown (2) + } +-- "unknown" shall not be used within ProvideSubscriberInfoRes + +TimeZone ::= OCTET STRING (SIZE (2..3)) +-- Refer to the 3GPP TS 29.272 [144] for details. + +DaylightSavingTime ::= ENUMERATED { + noAdjustment (0), + plusOneHourAdjustment (1), + plusTwoHoursAdjustment (2) + } +-- Refer to the 3GPP TS 29.272 [144] for details. + +MNPInfoRes ::= SEQUENCE { + routeingNumber [0] RouteingNumber OPTIONAL, + imsi [1] IMSI OPTIONAL, + msisdn [2] ISDN-AddressString OPTIONAL, + numberPortabilityStatus [3] NumberPortabilityStatus OPTIONAL, + extensionContainer [4] ExtensionContainer OPTIONAL, + ... } +-- The IMSI parameter contains a generic IMSI, i.e. it is not tied necessarily to the +-- Subscriber. MCC and MNC values in this IMSI shall point to the Subscription Network of +-- the Subscriber. See 3GPP TS 23.066 [108]. + +RouteingNumber ::= TBCD-STRING (SIZE (1..5)) + + +NumberPortabilityStatus ::= ENUMERATED { + notKnownToBePorted (0), + ownNumberPortedOut (1), + foreignNumberPortedToForeignNetwork (2), + ..., + ownNumberNotPortedOut (4), + foreignNumberPortedIn (5) + } + -- exception handling: + -- reception of other values than the ones listed the receiver shall ignore the + -- whole NumberPortabilityStatus; + -- ownNumberNotPortedOut or foreignNumberPortedIn may only be included in Any Time + -- Interrogation message. + +MS-Classmark2 ::= OCTET STRING (SIZE (3)) + -- This parameter carries the value part of the MS Classmark 2 IE defined in + -- 3GPP TS 24.008 [35]. + +GPRSMSClass ::= SEQUENCE { + mSNetworkCapability [0] MSNetworkCapability, + mSRadioAccessCapability [1] MSRadioAccessCapability OPTIONAL + } + +MSNetworkCapability ::= OCTET STRING (SIZE (1..8)) + -- This parameter carries the value part of the MS Network Capability IE defined in + -- 3GPP TS 24.008 [35]. + +MSRadioAccessCapability ::= OCTET STRING (SIZE (1..50)) + -- This parameter carries the value part of the MS Radio Access Capability IE defined in + -- 3GPP TS 24.008 [35]. + +RequestedInfo ::= SEQUENCE { + locationInformation [0] NULL OPTIONAL, + subscriberState [1] NULL OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ..., + currentLocation [3] NULL OPTIONAL, + requestedDomain [4] DomainType OPTIONAL, + imei [6] NULL OPTIONAL, + ms-classmark [5] NULL OPTIONAL, + mnpRequestedInfo [7] NULL OPTIONAL, + locationInformationEPS-Supported [11] NULL OPTIONAL, + t-adsData [8] NULL OPTIONAL, + requestedNodes [9] RequestedNodes OPTIONAL, + servingNodeIndication [10] NULL OPTIONAL, + localTimeZoneRequest [12] NULL OPTIONAL + } + +-- currentLocation and locationInformationEPS-Supported shall be absent if +-- locationInformation is absent +-- t-adsData shall be absent in messages sent to the VLR +-- requestedNodes shall be absent if requestedDomain is "cs-Domain" +-- servingNodeIndication shall be absent if locationInformation is absent; +-- servingNodeIndication shall be absent if current location is present; +-- servingNodeIndication indicates by its presence that only the serving node's +-- address (MME-Name or SGSN-Number or VLR-Number) is requested. + +DomainType ::= ENUMERATED { + cs-Domain (0), + ps-Domain (1), + ...} +-- exception handling: +-- reception of values > 1 shall be mapped to 'cs-Domain' + +RequestedNodes ::= BIT STRING { + mme (0), + sgsn (1)} (SIZE (1..8)) +-- Other bits than listed above shall be discarded. + +LocationInformation ::= SEQUENCE { + ageOfLocationInformation AgeOfLocationInformation OPTIONAL, + geographicalInformation [0] GeographicalInformation OPTIONAL, + vlr-number [1] ISDN-AddressString OPTIONAL, + locationNumber [2] LocationNumber OPTIONAL, + cellGlobalIdOrServiceAreaIdOrLAI [3] CellGlobalIdOrServiceAreaIdOrLAI OPTIONAL, + extensionContainer [4] ExtensionContainer OPTIONAL, + ... , + selectedLSA-Id [5] LSAIdentity OPTIONAL, + msc-Number [6] ISDN-AddressString OPTIONAL, + geodeticInformation [7] GeodeticInformation OPTIONAL, + currentLocationRetrieved [8] NULL OPTIONAL, + sai-Present [9] NULL OPTIONAL, + locationInformationEPS [10] LocationInformationEPS OPTIONAL, + userCSGInformation [11] UserCSGInformation OPTIONAL } +-- sai-Present indicates that the cellGlobalIdOrServiceAreaIdOrLAI parameter contains +-- a Service Area Identity. +-- currentLocationRetrieved shall be present +-- if the location information were retrieved after a successfull paging. +-- if the locationinformationEPS IE is present then the cellGlobalIdOrServiceAreaIdOrLAI IE, +-- the ageOfLocationInformation IE, the geographicalInformation IE, the geodeticInformation IE +-- and the currentLocationRetrieved IE (outside the locationInformationEPS IE) shall be +-- absent. As an exception, both the cellGlobalIdOrServiceAreaIdOrLAI IE including an LAI and +-- the locationinformationEPS IE may be present in a MAP-NOTE-MM-EVENT. +-- UserCSGInformation contains the CSG ID, Access mode, and the CSG Membership Indication in +-- the case the Access mode is Hybrid Mode. +-- The locationInformationEPS IE should be absent if locationInformationEPS-Supported was not +-- received in the RequestedInfo IE. + +LocationInformationEPS ::= SEQUENCE { + e-utranCellGlobalIdentity [0] E-UTRAN-CGI OPTIONAL, + trackingAreaIdentity [1] TA-Id OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + geographicalInformation [3] GeographicalInformation OPTIONAL, + geodeticInformation [4] GeodeticInformation OPTIONAL, + currentLocationRetrieved [5] NULL OPTIONAL, + ageOfLocationInformation [6] AgeOfLocationInformation OPTIONAL, + ..., + mme-Name [7] DiameterIdentity OPTIONAL } +-- currentLocationRetrieved shall be present if the location information +-- was retrieved after successful paging. + + +LocationInformationGPRS ::= SEQUENCE { + cellGlobalIdOrServiceAreaIdOrLAI [0] CellGlobalIdOrServiceAreaIdOrLAI OPTIONAL, + routeingAreaIdentity [1] RAIdentity OPTIONAL, + geographicalInformation [2] GeographicalInformation OPTIONAL, + sgsn-Number [3] ISDN-AddressString OPTIONAL, + selectedLSAIdentity [4] LSAIdentity OPTIONAL, + extensionContainer [5] ExtensionContainer OPTIONAL, + ..., + sai-Present [6] NULL OPTIONAL, + geodeticInformation [7] GeodeticInformation OPTIONAL, + currentLocationRetrieved [8] NULL OPTIONAL, + ageOfLocationInformation [9] AgeOfLocationInformation OPTIONAL, + userCSGInformation [10] UserCSGInformation OPTIONAL } +-- sai-Present indicates that the cellGlobalIdOrServiceAreaIdOrLAI parameter contains +-- a Service Area Identity. +-- currentLocationRetrieved shall be present if the location information +-- was retrieved after successful paging. +-- UserCSGInformation contains the CSG ID, Access mode, and the CSG Membership Indication in +-- the case the Access mode is Hybrid Mode. + + +LocationInformation5GS ::= SEQUENCE { + nrCellGlobalIdentity [0] NR-CGI OPTIONAL, + e-utranCellGlobalIdentity [1] E-UTRAN-CGI OPTIONAL, + geographicalInformation [2] GeographicalInformation OPTIONAL, + geodeticInformation [3] GeodeticInformation OPTIONAL, + amf-address [4] FQDN OPTIONAL, + trackingAreaIdentity [5] TA-Id OPTIONAL, + currentLocationRetrieved [6] NULL OPTIONAL, + ageOfLocationInformation [7] AgeOfLocationInformation OPTIONAL, + vplmnId [8] PLMN-Id OPTIONAL, + localtimeZone [9] TimeZone OPTIONAL, + rat-Type [10] Used-RAT-Type OPTIONAL, + extensionContainer [11] ExtensionContainer OPTIONAL, + ..., + nrTrackingAreaIdentity [12] NR-TA-Id OPTIONAL + } +-- currentLocationRetrieved shall be present if the location information +-- was retrieved after successful paging. + + +UserCSGInformation ::= SEQUENCE { + csg-Id [0] CSG-Id, + extensionContainer [1] ExtensionContainer OPTIONAL, + ..., + accessMode [2] OCTET STRING (SIZE(1)) OPTIONAL, + cmi [3] OCTET STRING (SIZE(1)) OPTIONAL } +-- The encoding of the accessMode and cmi parameters are as defined in 3GPP TS 29.060 [105]. + +GeographicalInformation ::= OCTET STRING (SIZE (8)) +-- Refers to geographical Information defined in 3GPP TS 23.032. +-- Only the description of an ellipsoid point with uncertainty circle +-- as specified in 3GPP TS 23.032 is allowed to be used +-- The internal structure according to 3GPP TS 23.032 is as follows: +-- Type of shape (ellipsoid point with uncertainty circle) 1 octet +-- Degrees of Latitude 3 octets +-- Degrees of Longitude 3 octets +-- Uncertainty code 1 octet + +GeodeticInformation ::= OCTET STRING (SIZE (10)) +-- Refers to Calling Geodetic Location defined in Q.763 (1999). +-- Only the description of an ellipsoid point with uncertainty circle +-- as specified in Q.763 (1999) is allowed to be used +-- The internal structure according to Q.763 (1999) is as follows: +-- Screening and presentation indicators 1 octet +-- Type of shape (ellipsoid point with uncertainty circle) 1 octet +-- Degrees of Latitude 3 octets +-- Degrees of Longitude 3 octets +-- Uncertainty code 1 octet +-- Confidence 1 octet + +LocationNumber ::= OCTET STRING (SIZE (2..10)) + -- the internal structure is defined in ITU-T Rec Q.763 + +SubscriberState ::= CHOICE { + assumedIdle [0] NULL, + camelBusy [1] NULL, + netDetNotReachable NotReachableReason, + notProvidedFromVLR [2] NULL} + +PS-SubscriberState ::= CHOICE { + notProvidedFromSGSNorMME [0] NULL, + ps-Detached [1] NULL, + ps-AttachedNotReachableForPaging [2] NULL, + ps-AttachedReachableForPaging [3] NULL, + ps-PDP-ActiveNotReachableForPaging [4] PDP-ContextInfoList, + ps-PDP-ActiveReachableForPaging [5] PDP-ContextInfoList, + netDetNotReachable NotReachableReason } + +PDP-ContextInfoList ::= SEQUENCE SIZE (1..maxNumOfPDP-Contexts) OF + PDP-ContextInfo + +PDP-ContextInfo ::= SEQUENCE { + pdp-ContextIdentifier [0] ContextId, + pdp-ContextActive [1] NULL OPTIONAL, + pdp-Type [2] PDP-Type, + pdp-Address [3] PDP-Address OPTIONAL, + apn-Subscribed [4] APN OPTIONAL, + apn-InUse [5] APN OPTIONAL, + nsapi [6] NSAPI OPTIONAL, + transactionId [7] TransactionId OPTIONAL, + teid-ForGnAndGp [8] TEID OPTIONAL, + teid-ForIu [9] TEID OPTIONAL, + ggsn-Address [10] GSN-Address OPTIONAL, + qos-Subscribed [11] Ext-QoS-Subscribed OPTIONAL, + qos-Requested [12] Ext-QoS-Subscribed OPTIONAL, + qos-Negotiated [13] Ext-QoS-Subscribed OPTIONAL, + chargingId [14] GPRSChargingID OPTIONAL, + chargingCharacteristics [15] ChargingCharacteristics OPTIONAL, + rnc-Address [16] GSN-Address OPTIONAL, + extensionContainer [17] ExtensionContainer OPTIONAL, + ..., + qos2-Subscribed [18] Ext2-QoS-Subscribed OPTIONAL, + -- qos2-Subscribed may be present only if qos-Subscribed is present. + qos2-Requested [19] Ext2-QoS-Subscribed OPTIONAL, + -- qos2-Requested may be present only if qos-Requested is present. + qos2-Negotiated [20] Ext2-QoS-Subscribed OPTIONAL, + -- qos2-Negotiated may be present only if qos-Negotiated is present. + qos3-Subscribed [21] Ext3-QoS-Subscribed OPTIONAL, + -- qos3-Subscribed may be present only if qos2-Subscribed is present. + qos3-Requested [22] Ext3-QoS-Subscribed OPTIONAL, + -- qos3-Requested may be present only if qos2-Requested is present. + qos3-Negotiated [23] Ext3-QoS-Subscribed OPTIONAL, + -- qos3-Negotiated may be present only if qos2-Negotiated is present. + qos4-Subscribed [25] Ext4-QoS-Subscribed OPTIONAL, + -- qos4-Subscribed may be present only if qos3-Subscribed is present. + qos4-Requested [26] Ext4-QoS-Subscribed OPTIONAL, + -- qos4-Requested may be present only if qos3-Requested is present. + qos4-Negotiated [27] Ext4-QoS-Subscribed OPTIONAL, + -- qos4-Negotiated may be present only if qos3-Negotiated is present. + ext-pdp-Type [28] Ext-PDP-Type OPTIONAL, + -- contains the value IPv4v6 defined in 3GPP TS 29.060 [105], if the PDP can be + -- accessed by dual-stack UEs. + ext-pdp-Address [29] PDP-Address OPTIONAL + -- contains an additional IP address in case of dual-stack static IP address assignment + -- for the UE. + -- it may contain an IPv4 or an IPv6 address/prefix, and it may be present + -- only if pdp-Address is present; if both are present, each parameter shall + -- contain a different type of address (IPv4 or IPv6). + +} + +NSAPI ::= INTEGER (0..15) +-- This type is used to indicate the Network layer Service Access Point + +TransactionId ::= OCTET STRING (SIZE (1..2)) +-- This type carries the value part of the transaction identifier which is used in the +-- session management messages on the access interface. The encoding is defined in +-- 3GPP TS 24.008 + +TEID ::= OCTET STRING (SIZE (4)) +-- This type carries the value part of the Tunnel Endpoint Identifier which is used to +-- distinguish between different tunnels between the same pair of entities which communicate +-- using the GPRS Tunnelling Protocol The encoding is defined in 3GPP TS 29.060. + +GPRSChargingID ::= OCTET STRING (SIZE (4)) +-- The Charging ID is a unique four octet value generated by the GGSN when +-- a PDP Context is activated. A Charging ID is generated for each activated context. +-- The encoding is defined in 3GPP TS 29.060. + +NotReachableReason ::= ENUMERATED { + msPurged (0), + imsiDetached (1), + restrictedArea (2), + notRegistered (3)} + +-- any time interrogation info types + +AnyTimeInterrogationArg ::= SEQUENCE { + subscriberIdentity [0] SubscriberIdentity, + requestedInfo [1] RequestedInfo, + gsmSCF-Address [3] ISDN-AddressString, + extensionContainer [2] ExtensionContainer OPTIONAL, + ...} + +AnyTimeInterrogationRes ::= SEQUENCE { + subscriberInfo SubscriberInfo, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +-- any time information handling types + +AnyTimeSubscriptionInterrogationArg ::= SEQUENCE { + subscriberIdentity [0] SubscriberIdentity, + requestedSubscriptionInfo [1] RequestedSubscriptionInfo, + gsmSCF-Address [2] ISDN-AddressString, + extensionContainer [3] ExtensionContainer OPTIONAL, + longFTN-Supported [4] NULL OPTIONAL, + ...} + +AnyTimeSubscriptionInterrogationRes ::= SEQUENCE { + callForwardingData [1] CallForwardingData OPTIONAL, + callBarringData [2] CallBarringData OPTIONAL, + odb-Info [3] ODB-Info OPTIONAL, + camel-SubscriptionInfo [4] CAMEL-SubscriptionInfo OPTIONAL, + supportedVLR-CAMEL-Phases [5] SupportedCamelPhases OPTIONAL, + supportedSGSN-CAMEL-Phases [6] SupportedCamelPhases OPTIONAL, + extensionContainer [7] ExtensionContainer OPTIONAL, + ... , + offeredCamel4CSIsInVLR [8] OfferedCamel4CSIs OPTIONAL, + offeredCamel4CSIsInSGSN [9] OfferedCamel4CSIs OPTIONAL, + msisdn-BS-List [10] MSISDN-BS-List OPTIONAL, + csg-SubscriptionDataList [11] CSG-SubscriptionDataList OPTIONAL, + cw-Data [12] CallWaitingData OPTIONAL, + ch-Data [13] CallHoldData OPTIONAL, + clip-Data [14] ClipData OPTIONAL, + clir-Data [15] ClirData OPTIONAL, + ect-data [16] EctData OPTIONAL } + +CallWaitingData ::= SEQUENCE { + cwFeatureList [1] Ext-CwFeatureList, + notificationToCSE [2] NULL OPTIONAL, + ... } + +Ext-CwFeatureList ::= SEQUENCE SIZE (1..maxNumOfExt-BasicServiceGroups) OF + Ext-CwFeature + +Ext-CwFeature ::= SEQUENCE { + basicService [1] Ext-BasicServiceCode, + ss-Status [2] Ext-SS-Status, + ... } + +ClipData ::= SEQUENCE { + ss-Status [1] Ext-SS-Status, + overrideCategory [2] OverrideCategory, + notificationToCSE [3] NULL OPTIONAL, + ... } + +ClirData ::= SEQUENCE { + ss-Status [1] Ext-SS-Status, + cliRestrictionOption [2] CliRestrictionOption OPTIONAL, + notificationToCSE [3] NULL OPTIONAL, + ... } + +CallHoldData ::= SEQUENCE { + ss-Status [1] Ext-SS-Status, + notificationToCSE [2] NULL OPTIONAL, + ... } + +EctData ::= SEQUENCE { + ss-Status [1] Ext-SS-Status, + notificationToCSE [2] NULL OPTIONAL, + ... } + +RequestedSubscriptionInfo ::= SEQUENCE { + requestedSS-Info [1] SS-ForBS-Code OPTIONAL, + odb [2] NULL OPTIONAL, + requestedCAMEL-SubscriptionInfo [3] RequestedCAMEL-SubscriptionInfo OPTIONAL, + supportedVLR-CAMEL-Phases [4] NULL OPTIONAL, + supportedSGSN-CAMEL-Phases [5] NULL OPTIONAL, + extensionContainer [6] ExtensionContainer OPTIONAL, + ..., + additionalRequestedCAMEL-SubscriptionInfo + [7] AdditionalRequestedCAMEL-SubscriptionInfo + OPTIONAL, + msisdn-BS-List [8] NULL OPTIONAL, + csg-SubscriptionDataRequested [9] NULL OPTIONAL, + cw-Info [10] NULL OPTIONAL, + clip-Info [11] NULL OPTIONAL, + clir-Info [12] NULL OPTIONAL, + hold-Info [13] NULL OPTIONAL, + ect-Info [14] NULL OPTIONAL } + +MSISDN-BS-List ::= SEQUENCE SIZE (1..maxNumOfMSISDN) OF + MSISDN-BS + +maxNumOfMSISDN INTEGER ::= 50 + + +MSISDN-BS ::= SEQUENCE { + msisdn ISDN-AddressString, + basicServiceList [0] BasicServiceList OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ...} + +RequestedCAMEL-SubscriptionInfo ::= ENUMERATED { + o-CSI (0), + t-CSI (1), + vt-CSI (2), + tif-CSI (3), + gprs-CSI (4), + mo-sms-CSI (5), + ss-CSI (6), + m-CSI (7), + d-csi (8)} + +AdditionalRequestedCAMEL-SubscriptionInfo ::= ENUMERATED { + mt-sms-CSI (0), + mg-csi (1), + o-IM-CSI (2), + d-IM-CSI (3), + vt-IM-CSI (4), + ...} +-- exception handling: unknown values shall be discarded by the receiver. + +CallForwardingData ::= SEQUENCE { + forwardingFeatureList Ext-ForwFeatureList, + notificationToCSE NULL OPTIONAL, + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +CallBarringData ::= SEQUENCE { + callBarringFeatureList Ext-CallBarFeatureList, + password Password OPTIONAL, + wrongPasswordAttemptsCounter WrongPasswordAttemptsCounter OPTIONAL, + notificationToCSE NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +WrongPasswordAttemptsCounter ::= INTEGER (0..4) + +ODB-Info ::= SEQUENCE { + odb-Data ODB-Data, + notificationToCSE NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +CAMEL-SubscriptionInfo ::= SEQUENCE { + o-CSI [0] O-CSI OPTIONAL, + o-BcsmCamelTDP-CriteriaList [1] O-BcsmCamelTDPCriteriaList OPTIONAL, + d-CSI [2] D-CSI OPTIONAL, + t-CSI [3] T-CSI OPTIONAL, + t-BCSM-CAMEL-TDP-CriteriaList [4] T-BCSM-CAMEL-TDP-CriteriaList OPTIONAL, + vt-CSI [5] T-CSI OPTIONAL, + vt-BCSM-CAMEL-TDP-CriteriaList [6] T-BCSM-CAMEL-TDP-CriteriaList OPTIONAL, + tif-CSI [7] NULL OPTIONAL, + tif-CSI-NotificationToCSE [8] NULL OPTIONAL, + gprs-CSI [9] GPRS-CSI OPTIONAL, + mo-sms-CSI [10] SMS-CSI OPTIONAL, + ss-CSI [11] SS-CSI OPTIONAL, + m-CSI [12] M-CSI OPTIONAL, + extensionContainer [13] ExtensionContainer OPTIONAL, + ..., + specificCSIDeletedList [14] SpecificCSI-Withdraw OPTIONAL, + mt-sms-CSI [15] SMS-CSI OPTIONAL, + mt-smsCAMELTDP-CriteriaList [16] MT-smsCAMELTDP-CriteriaList OPTIONAL, + mg-csi [17] MG-CSI OPTIONAL, + o-IM-CSI [18] O-CSI OPTIONAL, + o-IM-BcsmCamelTDP-CriteriaList [19] O-BcsmCamelTDPCriteriaList OPTIONAL, + d-IM-CSI [20] D-CSI OPTIONAL, + vt-IM-CSI [21] T-CSI OPTIONAL, + vt-IM-BCSM-CAMEL-TDP-CriteriaList [22] T-BCSM-CAMEL-TDP-CriteriaList OPTIONAL + } + +AnyTimeModificationArg ::= SEQUENCE { + subscriberIdentity [0] SubscriberIdentity, + gsmSCF-Address [1] ISDN-AddressString, + modificationRequestFor-CF-Info [2] ModificationRequestFor-CF-Info OPTIONAL, + modificationRequestFor-CB-Info [3] ModificationRequestFor-CB-Info OPTIONAL, + modificationRequestFor-CSI [4] ModificationRequestFor-CSI OPTIONAL, + extensionContainer [5] ExtensionContainer OPTIONAL, + longFTN-Supported [6] NULL OPTIONAL, + ..., + modificationRequestFor-ODB-data [7] ModificationRequestFor-ODB-data OPTIONAL, + modificationRequestFor-IP-SM-GW-Data [8] ModificationRequestFor-IP-SM-GW-Data OPTIONAL, + activationRequestForUE-reachability [9] RequestedServingNode OPTIONAL, + modificationRequestFor-CSG [10] ModificationRequestFor-CSG OPTIONAL, + modificationRequestFor-CW-Data [11] ModificationRequestFor-CW-Info OPTIONAL, + modificationRequestFor-CLIP-Data [12] ModificationRequestFor-CLIP-Info OPTIONAL, + modificationRequestFor-CLIR-Data [13] ModificationRequestFor-CLIR-Info OPTIONAL, + modificationRequestFor-HOLD-Data [14] ModificationRequestFor-CH-Info OPTIONAL, + modificationRequestFor-ECT-Data [15] ModificationRequestFor-ECT-Info OPTIONAL } + +ModificationRequestFor-CW-Info ::= SEQUENCE { + basicService [0] Ext-BasicServiceCode OPTIONAL, + ss-Status [1] Ext-SS-Status OPTIONAL, + modifyNotificationToCSE [2] ModificationInstruction OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +ModificationRequestFor-CH-Info ::= SEQUENCE { + ss-Status [0] Ext-SS-Status OPTIONAL, + modifyNotificationToCSE [1] ModificationInstruction OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ...} + +ModificationRequestFor-ECT-Info ::= SEQUENCE { + ss-Status [0] Ext-SS-Status OPTIONAL, + modifyNotificationToCSE [1] ModificationInstruction OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ...} + +ModificationRequestFor-CLIR-Info ::= SEQUENCE { + ss-Status [0] Ext-SS-Status OPTIONAL, + cliRestrictionOption [1] CliRestrictionOption OPTIONAL, + modifyNotificationToCSE [2] ModificationInstruction OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +ModificationRequestFor-CLIP-Info ::= SEQUENCE { + ss-Status [0] Ext-SS-Status OPTIONAL, + overrideCategory [1] OverrideCategory OPTIONAL, + modifyNotificationToCSE [2] ModificationInstruction OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + + +ModificationRequestFor-CSG ::= SEQUENCE { + modifyNotificationToCSE [0] ModificationInstruction OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ...} + +RequestedServingNode ::= BIT STRING { + mmeAndSgsn (0)} (SIZE (1..8)) + +ServingNode ::= BIT STRING { + mme (0), + sgsn (1)} (SIZE (2..8)) +-- Other bits than listed above shall be discarded. + +AnyTimeModificationRes ::= SEQUENCE { + ss-InfoFor-CSE [0] Ext-SS-InfoFor-CSE OPTIONAL, + camel-SubscriptionInfo [1] CAMEL-SubscriptionInfo OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ..., + odb-Info [3] ODB-Info OPTIONAL, + cw-Data [4] CallWaitingData OPTIONAL, + ch-Data [5] CallHoldData OPTIONAL, + clip-Data [6] ClipData OPTIONAL, + clir-Data [7] ClirData OPTIONAL, + ect-data [8] EctData OPTIONAL, + serviceCentreAddress [9] AddressString OPTIONAL + } + +ModificationRequestFor-CF-Info ::= SEQUENCE { + ss-Code [0] SS-Code, + basicService [1] Ext-BasicServiceCode OPTIONAL, + ss-Status [2] Ext-SS-Status OPTIONAL, + forwardedToNumber [3] AddressString OPTIONAL, + forwardedToSubaddress [4] ISDN-SubaddressString OPTIONAL, + noReplyConditionTime [5] Ext-NoRepCondTime OPTIONAL, + modifyNotificationToCSE [6] ModificationInstruction OPTIONAL, + extensionContainer [7] ExtensionContainer OPTIONAL, + ...} + +ModificationRequestFor-CB-Info ::= SEQUENCE { + ss-Code [0] SS-Code, + basicService [1] Ext-BasicServiceCode OPTIONAL, + ss-Status [2] Ext-SS-Status OPTIONAL, + password [3] Password OPTIONAL, + wrongPasswordAttemptsCounter [4] WrongPasswordAttemptsCounter OPTIONAL, + modifyNotificationToCSE [5] ModificationInstruction OPTIONAL, + extensionContainer [6] ExtensionContainer OPTIONAL, + ...} + +ModificationRequestFor-ODB-data ::= SEQUENCE { + odb-data [0] ODB-Data OPTIONAL, + modifyNotificationToCSE [1] ModificationInstruction OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ...} + +ModificationRequestFor-CSI ::= SEQUENCE { + requestedCamel-SubscriptionInfo [0] RequestedCAMEL-SubscriptionInfo, + modifyNotificationToCSE [1] ModificationInstruction OPTIONAL, + modifyCSI-State [2] ModificationInstruction OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ..., + additionalRequestedCAMEL-SubscriptionInfo + [4] AdditionalRequestedCAMEL-SubscriptionInfo + OPTIONAL } +-- requestedCamel-SubscriptionInfo shall be discarded if +-- additionalRequestedCAMEL-SubscriptionInfo is received + +ModificationRequestFor-IP-SM-GW-Data ::= SEQUENCE { + modifyRegistrationStatus [0] ModificationInstruction OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ..., + ip-sm-gw-DiameterAddress [2] NetworkNodeDiameterAddress OPTIONAL + -- ip-sm-gw-DiameterAddress may be present when ModificationInstruction is "activate" + } + +ModificationInstruction ::= ENUMERATED { + deactivate (0), + activate (1)} + +-- subscriber data modification notification types + +NoteSubscriberDataModifiedArg ::= SEQUENCE { + imsi IMSI, + msisdn ISDN-AddressString, + forwardingInfoFor-CSE [0] Ext-ForwardingInfoFor-CSE OPTIONAL, + callBarringInfoFor-CSE [1] Ext-CallBarringInfoFor-CSE OPTIONAL, + odb-Info [2] ODB-Info OPTIONAL, + camel-SubscriptionInfo [3] CAMEL-SubscriptionInfo OPTIONAL, + allInformationSent [4] NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + ue-reachable [5] ServingNode OPTIONAL, + csg-SubscriptionDataList [6] CSG-SubscriptionDataList OPTIONAL, + cw-Data [7] CallWaitingData OPTIONAL, + ch-Data [8] CallHoldData OPTIONAL, + clip-Data [9] ClipData OPTIONAL, + clir-Data [10] ClirData OPTIONAL, + ect-data [11] EctData OPTIONAL } + +NoteSubscriberDataModifiedRes ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +-- mobility management event notificatioon info types + +NoteMM-EventArg::= SEQUENCE { + serviceKey ServiceKey, + eventMet [0] MM-Code, + imsi [1] IMSI, + msisdn [2] ISDN-AddressString, + locationInformation [3] LocationInformation OPTIONAL, + supportedCAMELPhases [5] SupportedCamelPhases OPTIONAL, + extensionContainer [6] ExtensionContainer OPTIONAL, + ..., + locationInformationGPRS [7] LocationInformationGPRS OPTIONAL, + offeredCamel4Functionalities [8] OfferedCamel4Functionalities OPTIONAL +} + +NoteMM-EventRes ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +Ext-SS-InfoFor-CSE ::= CHOICE { + forwardingInfoFor-CSE [0] Ext-ForwardingInfoFor-CSE, + callBarringInfoFor-CSE [1] Ext-CallBarringInfoFor-CSE + } + +Ext-ForwardingInfoFor-CSE ::= SEQUENCE { + ss-Code [0] SS-Code, + forwardingFeatureList [1] Ext-ForwFeatureList, + notificationToCSE [2] NULL OPTIONAL, + extensionContainer [3] ExtensionContainer OPTIONAL, + ...} + +Ext-CallBarringInfoFor-CSE ::= SEQUENCE { + ss-Code [0] SS-Code, + callBarringFeatureList [1] Ext-CallBarFeatureList, + password [2] Password OPTIONAL, + wrongPasswordAttemptsCounter [3] WrongPasswordAttemptsCounter OPTIONAL, + notificationToCSE [4] NULL OPTIONAL, + extensionContainer [5] ExtensionContainer OPTIONAL, + ...} + +-- vcsg location registration types + +UpdateVcsgLocationArg ::= SEQUENCE { + imsi IMSI, + msisdn [2] ISDN-AddressString OPTIONAL, + vlr-Number [0] ISDN-AddressString OPTIONAL, + sgsn-Number [1] ISDN-AddressString OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ... } + +UpdateVcsgLocationRes ::= SEQUENCE { + temporaryEmptySubscriptiondataIndicator NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ... } + +CancelVcsgLocationArg ::= SEQUENCE { + identity Identity, + extensionContainer ExtensionContainer OPTIONAL, + ... + } + +CancelVcsgLocationRes ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ... } + + +END + diff --git a/epan/dissectors/asn1/gsm_map/MAP-MobileServiceOperations.asn b/epan/dissectors/asn1/gsm_map/MAP-MobileServiceOperations.asn new file mode 100644 index 00000000..126bd951 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-MobileServiceOperations.asn @@ -0,0 +1,541 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.6.1 Mobile Service Operations +MAP-MobileServiceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-MobileServiceOperations (5) + version20 (20)} + +DEFINITIONS + +::= + +BEGIN + +EXPORTS + + -- location registration operations + updateLocation, + cancelLocation, + purgeMS, + sendIdentification, + + -- gprs location registration operations + updateGprsLocation, + + -- vcsg location registration operations + updateVcsgLocation, + cancelVcsgLocation, + + -- subscriber information enquiry operations + provideSubscriberInfo, + + -- any time information enquiry operations + anyTimeInterrogation, + + -- any time information handling operations + anyTimeSubscriptionInterrogation, + anyTimeModification, + + -- subscriber data modification notification operations + noteSubscriberDataModified, + + + -- handover operations + prepareHandover, + sendEndSignal, + processAccessSignalling, + forwardAccessSignalling, + prepareSubsequentHandover, + + -- authentication management operations + sendAuthenticationInfo, +authenticationFailureReport, + + -- IMEI management operations + checkIMEI, + + -- subscriber management operations + insertSubscriberData, + deleteSubscriberData, + + -- fault recovery operations + reset, + forwardCheckSS-Indication, + restoreData, + +-- gprs location information retrieval operations + sendRoutingInfoForGprs, + + -- failure reporting operations + failureReport, + + -- gprs notification operations + noteMsPresentForGprs, + +-- Mobility Management operations +noteMM-Event + +; + +IMPORTS + OPERATION +FROM Remote-Operations-Information-Objects { +joint-iso-itu-t remote-operations(4) + informationObjects(5) version1(0)} + + systemFailure, + dataMissing, + unexpectedDataValue, + unknownSubscriber, + unknownMSC, + unidentifiedSubscriber, + unknownEquipment, + roamingNotAllowed, + ati-NotAllowed, + noHandoverNumberAvailable, + subsequentHandoverFailure, + absentSubscriber, + mm-EventNotSupported, + atsi-NotAllowed, + atm-NotAllowed, + bearerServiceNotProvisioned, + teleserviceNotProvisioned, + callBarred, + illegalSS-Operation, + ss-ErrorStatus, + ss-NotAvailable, + ss-Incompatibility, + ss-SubscriptionViolation, + informationNotAvailable, + targetCellOutsideGroupCallArea + + +FROM MAP-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-Errors (10) version20 (20)} + + UpdateLocationArg, + UpdateLocationRes, + CancelLocationArg, + CancelLocationRes, + PurgeMS-Arg, + PurgeMS-Res, + SendIdentificationArg, + SendIdentificationRes, + UpdateGprsLocationArg, + UpdateGprsLocationRes, + UpdateVcsgLocationArg, + UpdateVcsgLocationRes, + CancelVcsgLocationArg, + CancelVcsgLocationRes, + PrepareHO-Arg, + PrepareHO-Res, +ForwardAccessSignalling-Arg, +ProcessAccessSignalling-Arg, +SendEndSignal-Arg, +SendEndSignal-Res, +PrepareSubsequentHO-Res, + PrepareSubsequentHO-Arg, + SendAuthenticationInfoArg, + SendAuthenticationInfoRes, + AuthenticationFailureReportArg, + AuthenticationFailureReportRes, + CheckIMEI-Arg, + CheckIMEI-Res, + InsertSubscriberDataArg, + InsertSubscriberDataRes, + DeleteSubscriberDataArg, + DeleteSubscriberDataRes, + ResetArg, + RestoreDataArg, + RestoreDataRes, + ProvideSubscriberInfoArg, + ProvideSubscriberInfoRes, + AnyTimeSubscriptionInterrogationArg, + AnyTimeSubscriptionInterrogationRes, + AnyTimeModificationArg, + AnyTimeModificationRes, + NoteSubscriberDataModifiedArg, + NoteSubscriberDataModifiedRes, + AnyTimeInterrogationArg, + AnyTimeInterrogationRes, + SendRoutingInfoForGprsArg, + SendRoutingInfoForGprsRes, + FailureReportArg, + FailureReportRes, + NoteMsPresentForGprsArg, + NoteMsPresentForGprsRes, + NoteMM-EventArg, + NoteMM-EventRes + + +FROM MAP-MS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-MS-DataTypes (11) version20 (20)} + +; + + +-- location registration operations + +updateLocation OPERATION ::= { --Timer m + ARGUMENT + UpdateLocationArg + RESULT + UpdateLocationRes + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + unknownSubscriber | + roamingNotAllowed} + CODE local:2 } + +cancelLocation OPERATION ::= { --Timer m + ARGUMENT + CancelLocationArg + RESULT + CancelLocationRes + -- optional + ERRORS { + dataMissing | + unexpectedDataValue} + CODE local:3 } + +purgeMS OPERATION ::= { --Timer m + ARGUMENT + PurgeMS-Arg + RESULT + PurgeMS-Res + -- optional + ERRORS{ + dataMissing | + unexpectedDataValue| + unknownSubscriber} + CODE local:67 } + +sendIdentification OPERATION ::= { --Timer s + ARGUMENT + SendIdentificationArg + RESULT + SendIdentificationRes + ERRORS { + dataMissing | + unidentifiedSubscriber} + CODE local:55 } + +-- gprs location registration operations + +updateGprsLocation OPERATION ::= { --Timer m + ARGUMENT + UpdateGprsLocationArg + RESULT + UpdateGprsLocationRes + ERRORS { + systemFailure | + unexpectedDataValue | + unknownSubscriber | + roamingNotAllowed} + CODE local:23 } + +-- subscriber information enquiry operations + +provideSubscriberInfo OPERATION ::= { --Timer m + ARGUMENT + ProvideSubscriberInfoArg + RESULT + ProvideSubscriberInfoRes + ERRORS { + dataMissing | + unexpectedDataValue} + CODE local:70 } + +-- any time information enquiry operations + +anyTimeInterrogation OPERATION ::= { --Timer m + ARGUMENT + AnyTimeInterrogationArg + RESULT + AnyTimeInterrogationRes + ERRORS { + systemFailure | + ati-NotAllowed | + dataMissing | + unexpectedDataValue | + unknownSubscriber} + CODE local:71 } + +-- any time information handling operations + +anyTimeSubscriptionInterrogation OPERATION ::= { --Timer m + ARGUMENT + AnyTimeSubscriptionInterrogationArg + RESULT + AnyTimeSubscriptionInterrogationRes + ERRORS { + atsi-NotAllowed | + dataMissing | + unexpectedDataValue | + unknownSubscriber | + bearerServiceNotProvisioned | + teleserviceNotProvisioned | + callBarred | + illegalSS-Operation | + ss-NotAvailable | + informationNotAvailable} + CODE local:62 } + +anyTimeModification OPERATION ::= { --Timer m + ARGUMENT + AnyTimeModificationArg + RESULT + AnyTimeModificationRes + ERRORS { + atm-NotAllowed | + dataMissing | + unexpectedDataValue | + unknownSubscriber | + bearerServiceNotProvisioned | + teleserviceNotProvisioned | + callBarred | + illegalSS-Operation | + ss-SubscriptionViolation | + ss-ErrorStatus | + ss-Incompatibility | + informationNotAvailable} + CODE local:65 } + +-- subscriber data modification notification operations + +noteSubscriberDataModified OPERATION ::= { --Timer m + ARGUMENT + NoteSubscriberDataModifiedArg + RESULT + NoteSubscriberDataModifiedRes + -- optional + ERRORS { + dataMissing | + unexpectedDataValue | + unknownSubscriber} + CODE local:5 } + +-- handover operations + +prepareHandover OPERATION ::= { --Timer m + ARGUMENT + PrepareHO-Arg + RESULT + PrepareHO-Res + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + noHandoverNumberAvailable | + targetCellOutsideGroupCallArea } + CODE local:68 } + +sendEndSignal OPERATION ::= { --Timer l + ARGUMENT + SendEndSignal-Arg + RESULT + SendEndSignal-Res + CODE local:29 } + +processAccessSignalling OPERATION ::= { --Timer s + ARGUMENT + ProcessAccessSignalling-Arg + CODE local:33 } + +forwardAccessSignalling OPERATION ::= { --Timer s + ARGUMENT + ForwardAccessSignalling-Arg + CODE local:34 } + +prepareSubsequentHandover OPERATION ::= { --Timer m + ARGUMENT + PrepareSubsequentHO-Arg + RESULT + PrepareSubsequentHO-Res + ERRORS { + unexpectedDataValue | + dataMissing | + unknownMSC | + subsequentHandoverFailure} + CODE local:69 } + +-- authentication management operations + +sendAuthenticationInfo OPERATION ::= { --Timer m + ARGUMENT + SendAuthenticationInfoArg + -- optional + -- within a dialogue sendAuthenticationInfoArg shall not be present in + -- subsequent invoke components. If received in a subsequent invoke component + -- it shall be discarded. + + RESULT + SendAuthenticationInfoRes + -- optional + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + unknownSubscriber} + CODE local:56 } + +authenticationFailureReport OPERATION ::= { --Timer m + ARGUMENT + AuthenticationFailureReportArg + RESULT + AuthenticationFailureReportRes + -- optional + ERRORS { + systemFailure | + unexpectedDataValue | + unknownSubscriber} + CODE local:15 } + +-- IMEI management operations + +checkIMEI OPERATION ::= { --Timer m + ARGUMENT + CheckIMEI-Arg + RESULT + CheckIMEI-Res + ERRORS { + systemFailure | + dataMissing | + unknownEquipment} + CODE local:43 } + +-- subscriber management operations + +insertSubscriberData OPERATION ::= { --Timer m + ARGUMENT + InsertSubscriberDataArg + RESULT + InsertSubscriberDataRes + -- optional + ERRORS { + dataMissing | + unexpectedDataValue | + unidentifiedSubscriber} + CODE local:7 } + +deleteSubscriberData OPERATION ::= { --Timer m + ARGUMENT + DeleteSubscriberDataArg + RESULT + DeleteSubscriberDataRes + -- optional + ERRORS { + dataMissing | + unexpectedDataValue | + unidentifiedSubscriber} + CODE local:8 } + +-- fault recovery operations + +reset OPERATION ::= { --Timer m + ARGUMENT + ResetArg + CODE local:37 } + +forwardCheckSS-Indication OPERATION ::= { --Timer s + CODE local:38 } + +restoreData OPERATION ::= { --Timer m + ARGUMENT + RestoreDataArg + RESULT + RestoreDataRes + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + unknownSubscriber} + CODE local:57 } + +-- gprs location information retrieval operations + +sendRoutingInfoForGprs OPERATION ::= { --Timer m + ARGUMENT + SendRoutingInfoForGprsArg + RESULT + SendRoutingInfoForGprsRes + ERRORS { + absentSubscriber | + systemFailure | + dataMissing | + unexpectedDataValue | + unknownSubscriber | + callBarred } + CODE local:24 } + +-- failure reporting operations + +failureReport OPERATION ::= { --Timer m + ARGUMENT + FailureReportArg + RESULT + FailureReportRes + -- optional + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + unknownSubscriber} + CODE local:25 } + +-- gprs notification operations + +noteMsPresentForGprs OPERATION ::= { --Timer m + ARGUMENT + NoteMsPresentForGprsArg + RESULT + NoteMsPresentForGprsRes + -- optional + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + unknownSubscriber} + CODE local:26 } + +noteMM-Event OPERATION ::= { --Timer m + ARGUMENT + NoteMM-EventArg + RESULT + NoteMM-EventRes + ERRORS { + dataMissing | + unexpectedDataValue | + unknownSubscriber | + mm-EventNotSupported} + CODE local:89 } + +-- vcsg location registration operations + +updateVcsgLocation OPERATION ::= { --Timer m + ARGUMENT + UpdateVcsgLocationArg + RESULT + UpdateVcsgLocationRes + ERRORS { + systemFailure | + unexpectedDataValue | + unknownSubscriber} + CODE local:53 } + +cancelVcsgLocation OPERATION ::= { --Timer m + ARGUMENT + CancelVcsgLocationArg + RESULT + CancelVcsgLocationRes + -- optional + ERRORS { + dataMissing | + unexpectedDataValue} + CODE local:36 } + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-OM-DataTypes.asn b/epan/dissectors/asn1/gsm_map/MAP-OM-DataTypes.asn new file mode 100644 index 00000000..8db86101 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-OM-DataTypes.asn @@ -0,0 +1,492 @@ +-- 17.7.2 Operation and maintenance data types +-- 3GPP TS 29.002 V17.1.0 (2021-06) + +MAP-OM-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-OM-DataTypes (12) version20 (20)} + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + +EXPORTS + ActivateTraceModeArg, + ActivateTraceModeRes, + DeactivateTraceModeArg, + DeactivateTraceModeRes, + TracePropagationList +; + +IMPORTS + AddressString, + IMSI, + GSN-Address, + GlobalCellId, + E-UTRAN-CGI, + TA-Id, + RAIdentity, + LAIFixedLength, + PLMN-Id +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version20 (20)} + + ExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version20 (20)} + +; + +ActivateTraceModeArg ::= SEQUENCE { + imsi [0] IMSI OPTIONAL, + traceReference [1] TraceReference, + traceType [2] TraceType, + omc-Id [3] AddressString OPTIONAL, + extensionContainer [4] ExtensionContainer OPTIONAL, + ..., + traceReference2 [5] TraceReference2 OPTIONAL, + traceDepthList [6] TraceDepthList OPTIONAL, + traceNE-TypeList [7] TraceNE-TypeList OPTIONAL, + traceInterfaceList [8] TraceInterfaceList OPTIONAL, + traceEventList [9] TraceEventList OPTIONAL, + traceCollectionEntity [10] GSN-Address OPTIONAL, + mdt-Configuration [11] MDT-Configuration OPTIONAL + } + +MDT-Configuration ::= SEQUENCE { + jobType JobType, + areaScope AreaScope OPTIONAL, + listOfMeasurements ListOfMeasurements OPTIONAL, + reportingTrigger [0] ReportingTrigger OPTIONAL, + reportInterval ReportInterval OPTIONAL, + reportAmount [1] ReportAmount OPTIONAL, + eventThresholdRSRP EventThresholdRSRP OPTIONAL, + eventThresholdRSRQ [2] EventThresholdRSRQ OPTIONAL, + loggingInterval [3] LoggingInterval OPTIONAL, + loggingDuration [4] LoggingDuration OPTIONAL, + extensionContainer [5] ExtensionContainer OPTIONAL, + ..., + measurementPeriodUMTS [6] PeriodUMTS OPTIONAL, + measurementPeriodLTE [7] PeriodLTE OPTIONAL, + collectionPeriodRRM-UMTS [8] PeriodUMTS OPTIONAL, + collectionPeriodRRM-LTE [9] PeriodLTE OPTIONAL, + positioningMethod [10] PositioningMethod OPTIONAL, + measurementQuantity [11] MeasurementQuantity OPTIONAL, + eventThreshold1F [12] EventThreshold1F OPTIONAL, + eventThreshold1I [13] EventThreshold1I OPTIONAL, + mdt-Allowed-PLMN-List [14] MDT-Allowed-PLMNId-List OPTIONAL } + +MDT-Allowed-PLMNId-List ::= SEQUENCE SIZE (1..16) OF + PLMN-Id +PeriodUMTS ::= ENUMERATED { + d250ms (0), + d500ms (1), + d1000ms (2), + d2000ms (3), + d3000ms (4), + d4000ms (5), + d6000ms (6), + d8000ms (7), + d12000ms (8), + d16000ms (9), + d20000ms (10), + d24000ms (11), + d28000ms (12), + d32000ms (13), + d64000ms (14)} + +PeriodLTE ::= ENUMERATED { + d1024ms (0), + d1280ms (1), + d2048ms (2), + d2560ms (3), + d5120ms (4), + d10240ms (5), + d1min (6)} + +PositioningMethod ::= OCTET STRING (SIZE (1)) + -- Octet is coded as described in 3GPP TS 32.422 [132]. + +MeasurementQuantity ::= OCTET STRING (SIZE (1)) + -- Octet is coded as described in 3GPP TS 32.422 [132]. + +EventThreshold1F ::= INTEGER + (-120..165) + +EventThreshold1I ::= INTEGER + (-120..-25) + +JobType ::= ENUMERATED { + immediate-MDT-only (0), + logged-MDT-only (1), + trace-only (2), + immediate-MDT-and-trace (3)} + +AreaScope ::= SEQUENCE { + cgi-List [0] CGI-List OPTIONAL, + e-utran-cgi-List [1] E-UTRAN-CGI-List OPTIONAL, + routingAreaId-List [2] RoutingAreaId-List OPTIONAL, + locationAreaId-List [3] LocationAreaId-List OPTIONAL, + trackingAreaId-List [4] TrackingAreaId-List OPTIONAL, + extensionContainer [5] ExtensionContainer OPTIONAL, + ... } + +CGI-List ::= SEQUENCE SIZE (1..32) OF + GlobalCellId + +E-UTRAN-CGI-List ::= SEQUENCE SIZE (1..32) OF + E-UTRAN-CGI + +RoutingAreaId-List ::= SEQUENCE SIZE (1..8) OF + RAIdentity + +LocationAreaId-List ::= SEQUENCE SIZE (1..8) OF + LAIFixedLength + +TrackingAreaId-List ::= SEQUENCE SIZE (1..8) OF + TA-Id + +ListOfMeasurements ::= OCTET STRING (SIZE (4)) + -- Octets are coded as described in 3GPP TS 32.422. + +ReportingTrigger ::= OCTET STRING (SIZE (1)) + -- Octet is coded as described in 3GPP TS 32.422. + +ReportInterval ::= ENUMERATED { + umts250ms (0), + umts500ms (1), + umts1000ms (2), + umts2000ms (3), + umts3000ms (4), + umts4000ms (5), + umts6000ms (6), + umts8000ms (7), + umts12000ms (8), + umts16000ms (9), + umts20000ms (10), + umts24000ms (11), + umts28000ms (12), + umts32000ms (13), + umts64000ms (14), + lte120ms (15), + lte240ms (16), + lte480ms (17), + lte640ms (18), + lte1024ms (19), + lte2048ms (20), + lte5120ms (21), + lte10240ms (22), + lte1min (23), + lte6min (24), + lte12min (25), + lte30min (26), + lte60min (27)} + + +ReportAmount ::= ENUMERATED { + d1 (0), + d2 (1), + d4 (2), + d8 (3), + d16 (4), + d32 (5), + d64 (6), + infinity (7)} + +EventThresholdRSRP ::= INTEGER + (0..97) + +EventThresholdRSRQ ::= INTEGER + (0..34) + +LoggingInterval ::= ENUMERATED { + d1dot28 (0), + d2dot56 (1), + d5dot12 (2), + d10dot24 (3), + d20dot48 (4), + d30dot72 (5), + d40dot96 (6), + d61dot44 (7)} + +LoggingDuration ::= ENUMERATED { + d600sec (0), + d1200sec (1), + d2400sec (2), + d3600sec (3), + d5400sec (4), + d7200sec (5)} + +TraceReference ::= OCTET STRING (SIZE (1..2)) + +TraceReference2 ::= OCTET STRING (SIZE (3)) + +TraceRecordingSessionReference ::= OCTET STRING (SIZE (2)) + +TraceType ::= INTEGER + (0..255) + -- Trace types are fully defined in 3GPP TS 52.008. [61] + +TraceDepthList ::= SEQUENCE { + msc-s-TraceDepth [0] TraceDepth OPTIONAL, + mgw-TraceDepth [1] TraceDepth OPTIONAL, + sgsn-TraceDepth [2] TraceDepth OPTIONAL, + ggsn-TraceDepth [3] TraceDepth OPTIONAL, + rnc-TraceDepth [4] TraceDepth OPTIONAL, + bmsc-TraceDepth [5] TraceDepth OPTIONAL, + ... , + mme-TraceDepth [6] TraceDepth OPTIONAL, + sgw-TraceDepth [7] TraceDepth OPTIONAL, + pgw-TraceDepth [8] TraceDepth OPTIONAL, + eNB-TraceDepth [9] TraceDepth OPTIONAL, + msc-s-TraceDepthExtension [10] TraceDepthExtension OPTIONAL, + mgw-TraceDepthExtension [11] TraceDepthExtension OPTIONAL, + sgsn-TraceDepthExtension [12] TraceDepthExtension OPTIONAL, + ggsn-TraceDepthExtension [13] TraceDepthExtension OPTIONAL, + rnc-TraceDepthExtension [14] TraceDepthExtension OPTIONAL, + bmsc-TraceDepthExtension [15] TraceDepthExtension OPTIONAL, + mme-TraceDepthExtension [16] TraceDepthExtension OPTIONAL, + sgw-TraceDepthExtension [17] TraceDepthExtension OPTIONAL, + pgw-TraceDepthExtension [18] TraceDepthExtension OPTIONAL, + eNB-TraceDepthExtension [19] TraceDepthExtension OPTIONAL } + +-- If one of the TraceDepthExtension types is sent, the corresponding TraceDepth type +-- shall also be sent with the same enumeration value to allow the receiver not supporting +-- the Extension to fall back to the non extended type. +-- If one of the TraceDepthExtension types is received and supported, the corresponding +-- TraceDepth type shall be ignored. + +TraceDepth ::= ENUMERATED { + minimum (0), + medium (1), + maximum (2), + ...} +-- The value medium is applicable only for RNC. For other network elements, if value medium +-- is received, value minimum shall be applied. + +TraceDepthExtension ::= ENUMERATED { + minimumWithoutVendorSpecificExtension (0), + mediumWithoutVendorSpecificExtension (1), + maximumWithoutVendorSpecificExtension (2), + ...} +-- The value mediumWithoutVendorSpecificExtension is applicable only for RNC. For other +-- network elements, if value mediumWithoutVendorSpecificExtension is received, value +-- minimumWithoutVendorSpecificExtension shall be applied. + +TraceNE-TypeList ::= BIT STRING { + msc-s (0), + mgw (1), + sgsn (2), + ggsn (3), + rnc (4), + bm-sc (5) , + mme (6), + sgw (7), + pgw (8), + eNB (9)} (SIZE (6..16)) +-- Other bits than listed above shall be discarded. + +TraceInterfaceList ::= SEQUENCE { + msc-s-List [0] MSC-S-InterfaceList OPTIONAL, + mgw-List [1] MGW-InterfaceList OPTIONAL, + sgsn-List [2] SGSN-InterfaceList OPTIONAL, + ggsn-List [3] GGSN-InterfaceList OPTIONAL, + rnc-List [4] RNC-InterfaceList OPTIONAL, + bmsc-List [5] BMSC-InterfaceList OPTIONAL, + ..., + mme-List [6] MME-InterfaceList OPTIONAL, + sgw-List [7] SGW-InterfaceList OPTIONAL, + pgw-List [8] PGW-InterfaceList OPTIONAL, + eNB-List [9] ENB-InterfaceList OPTIONAL} + +MSC-S-InterfaceList ::= BIT STRING { + a (0), + iu (1), + mc (2), + map-g (3), + map-b (4), + map-e (5), + map-f (6), + cap (7), + map-d (8), + map-c (9)} (SIZE (10..16)) +-- Other bits than listed above shall be discarded. + +MGW-InterfaceList ::= BIT STRING { + mc (0), + nb-up (1), + iu-up (2)} (SIZE (3..8)) +-- Other bits than listed above shall be discarded. + +SGSN-InterfaceList ::= BIT STRING { + gb (0), + iu (1), + gn (2), + map-gr (3), + map-gd (4), + map-gf (5), + gs (6), + ge (7), + s3 (8), + s4 (9), + s6d (10)} (SIZE (8..16)) +-- Other bits than listed above shall be discarded. + +GGSN-InterfaceList ::= BIT STRING { + gn (0), + gi (1), + gmb (2)} (SIZE (3..8)) +-- Other bits than listed above shall be discarded. + +RNC-InterfaceList ::= BIT STRING { + iu (0), + iur (1), + iub (2), + uu (3)} (SIZE (4..8)) +-- Other bits than listed above shall be discarded. + +BMSC-InterfaceList ::= BIT STRING { + gmb (0)} (SIZE (1..8)) +-- Other bits than listed above shall be discarded. + +MME-InterfaceList ::= BIT STRING { + s1-mme (0), + s3 (1), + s6a (2), + s10 (3), + s11 (4)} (SIZE (5..8)) +-- Other bits than listed above shall be discarded. + +SGW-InterfaceList ::= BIT STRING { + s4 (0), + s5 (1), + s8b (2), + s11 (3), + gxc (4)} (SIZE (5..8)) +-- Other bits than listed above shall be discarded. + +PGW-InterfaceList ::= BIT STRING { + s2a (0), + s2b (1), + s2c (2), + s5 (3), + s6b (4), + gx (5), + s8b (6), + sgi (7)} (SIZE (8..16)) +-- Other bits than listed above shall be discarded. + +ENB-InterfaceList ::= BIT STRING { + s1-mme (0), + x2 (1), + uu (2)} (SIZE (3..8)) +-- Other bits than listed above shall be discarded. + +TraceEventList ::= SEQUENCE { + msc-s-List [0] MSC-S-EventList OPTIONAL, + mgw-List [1] MGW-EventList OPTIONAL, + sgsn-List [2] SGSN-EventList OPTIONAL, + ggsn-List [3] GGSN-EventList OPTIONAL, + bmsc-List [4] BMSC-EventList OPTIONAL, + ..., + mme-List [5] MME-EventList OPTIONAL, + sgw-List [6] SGW-EventList OPTIONAL, + pgw-List [7] PGW-EventList OPTIONAL} + +MSC-S-EventList ::= BIT STRING { + mo-mtCall (0), + mo-mt-sms (1), + lu-imsiAttach-imsiDetach (2), + handovers (3), + ss (4)} (SIZE (5..16)) +-- Other bits than listed above shall be discarded. + +MGW-EventList ::= BIT STRING { + context (0)} (SIZE (1..8)) +-- Other bits than listed above shall be discarded. + +SGSN-EventList ::= BIT STRING { + pdpContext (0), + mo-mt-sms (1), + rau-gprsAttach-gprsDetach (2), + mbmsContext (3)} (SIZE (4..16)) +-- Other bits than listed above shall be discarded. + +GGSN-EventList ::= BIT STRING { + pdpContext (0), + mbmsContext (1)} (SIZE (2..8)) +-- Other bits than listed above shall be discarded. + +BMSC-EventList ::= BIT STRING { + mbmsMulticastServiceActivation (0)} (SIZE (1..8)) +-- Other bits than listed above shall be discarded. + +MME-EventList ::= BIT STRING { + ue-initiatedPDNconectivityRequest (0), + serviceRequestts (1), + initialAttachTrackingAreaUpdateDetach (2), + ue-initiatedPDNdisconnection (3), + bearerActivationModificationDeletion (4), + handover (5)} (SIZE (6..8)) +-- Other bits than listed above shall be discarded. + +SGW-EventList ::= BIT STRING { + pdn-connectionCreation (0), + pdn-connectionTermination (1), + bearerActivationModificationDeletion (2)} (SIZE (3..8)) +-- Other bits than listed above shall be discarded. + +PGW-EventList ::= BIT STRING { + pdn-connectionCreation (0), + pdn-connectionTermination (1), + bearerActivationModificationDeletion (2)} (SIZE (3..8)) +-- Other bits than listed above shall be discarded. + +TracePropagationList ::= SEQUENCE { + traceReference [0] TraceReference OPTIONAL, + traceType [1] TraceType OPTIONAL, + traceReference2 [2] TraceReference2 OPTIONAL, + traceRecordingSessionReference [3] TraceRecordingSessionReference OPTIONAL, + rnc-TraceDepth [4] TraceDepth OPTIONAL, + rnc-InterfaceList [5] RNC-InterfaceList OPTIONAL, + msc-s-TraceDepth [6] TraceDepth OPTIONAL, + msc-s-InterfaceList [7] MSC-S-InterfaceList OPTIONAL, + msc-s-EventList [8] MSC-S-EventList OPTIONAL, + mgw-TraceDepth [9] TraceDepth OPTIONAL, + mgw-InterfaceList [10] MGW-InterfaceList OPTIONAL, + mgw-EventList [11] MGW-EventList OPTIONAL, + ..., + rnc-TraceDepthExtension [12] TraceDepthExtension OPTIONAL, + msc-s-TraceDepthExtension [13] TraceDepthExtension OPTIONAL, + mgw-TraceDepthExtension [14] TraceDepthExtension OPTIONAL +} +-- If one of the TraceDepthExtension types is sent, the corresponding TraceDepth type +-- shall also be sent with the same enumeration value to allow the receiver not supporting +-- the Extension to fall back to the non extended type. +-- If one of the TraceDepthExtension types is received and supported, the corresponding +-- TraceDepth type shall be ignored. + +ActivateTraceModeRes ::= SEQUENCE { + extensionContainer [0] ExtensionContainer OPTIONAL, + ..., + traceSupportIndicator [1] NULL OPTIONAL + } + +DeactivateTraceModeArg ::= SEQUENCE { + imsi [0] IMSI OPTIONAL, + traceReference [1] TraceReference, + extensionContainer [2] ExtensionContainer OPTIONAL, + ..., + traceReference2 [3] TraceReference2 OPTIONAL + } + +DeactivateTraceModeRes ::= SEQUENCE { + extensionContainer [0] ExtensionContainer OPTIONAL, + ...} + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-OperationAndMaintenanceOperations.asn b/epan/dissectors/asn1/gsm_map/MAP-OperationAndMaintenanceOperations.asn new file mode 100644 index 00000000..1e60e510 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-OperationAndMaintenanceOperations.asn @@ -0,0 +1,93 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +--17.6.2 Operation and Maintenance Operations +MAP-OperationAndMaintenanceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-OperationAndMaintenanceOperations (6) + version20 (20)} + +DEFINITIONS + +::= + +BEGIN + +EXPORTS + activateTraceMode, + deactivateTraceMode, + sendIMSI +; + +IMPORTS + OPERATION +FROM Remote-Operations-Information-Objects { +joint-iso-itu-t remote-operations(4) + informationObjects(5) version1(0)} + + systemFailure, + dataMissing, + unexpectedDataValue, + facilityNotSupported, + unknownSubscriber, + unidentifiedSubscriber, + tracingBufferFull +FROM MAP-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-Errors (10) version20 (20)} + + ActivateTraceModeArg, + ActivateTraceModeRes, + DeactivateTraceModeArg, + DeactivateTraceModeRes +FROM MAP-OM-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-OM-DataTypes (12) version20 (20)} + + ISDN-AddressString, + IMSI +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version20 (20)} +; + + +activateTraceMode OPERATION ::= { --Timer m + ARGUMENT + ActivateTraceModeArg + RESULT + ActivateTraceModeRes + -- optional + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + facilityNotSupported | + unidentifiedSubscriber | + tracingBufferFull} + CODE local:50 } + +deactivateTraceMode OPERATION ::= { --Timer m + ARGUMENT + DeactivateTraceModeArg + RESULT + DeactivateTraceModeRes + -- optional + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + facilityNotSupported | + unidentifiedSubscriber} + CODE local:51 } + +sendIMSI OPERATION ::= { --Timer m + ARGUMENT + ISDN-AddressString + RESULT + IMSI + ERRORS { + dataMissing | + unexpectedDataValue | + unknownSubscriber} + CODE local:58 } + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-Protocol.asn b/epan/dissectors/asn1/gsm_map/MAP-Protocol.asn new file mode 100644 index 00000000..b6163266 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-Protocol.asn @@ -0,0 +1,177 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +--17.5 MAP operation and error codes + +MAP-Protocol { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-Protocol (4) version20 (20)} + +DEFINITIONS + +::= + +BEGIN + +IMPORTS +OPERATION +FROM Remote-Operations-Information-Objects { +joint-iso-itu-t remote-operations(4) informationObjects(5) version1(0)} + + updateLocation, + cancelLocation, + cancelVcsgLocation, + purgeMS, + sendIdentification, + updateGprsLocation, + updateVcsgLocation, + prepareHandover, + sendEndSignal, + processAccessSignalling, + forwardAccessSignalling, + prepareSubsequentHandover, + sendAuthenticationInfo, +authenticationFailureReport, + checkIMEI, + insertSubscriberData, + deleteSubscriberData, + reset, + forwardCheckSS-Indication, + restoreData, + provideSubscriberInfo, + anyTimeInterrogation, + anyTimeSubscriptionInterrogation, + anyTimeModification, + sendRoutingInfoForGprs, + failureReport, + noteMsPresentForGprs, + noteMM-Event, + noteSubscriberDataModified + + +FROM MAP-MobileServiceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-MobileServiceOperations (5) + version20 (20)} + + activateTraceMode, + deactivateTraceMode, + sendIMSI +FROM MAP-OperationAndMaintenanceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-OperationAndMaintenanceOperations (6) + version20 (20)} + + sendRoutingInfo, + provideRoamingNumber, + resumeCallHandling, + setReportingState, + statusReport, + remoteUserFree, + ist-Alert, + ist-Command, + releaseResources +FROM MAP-CallHandlingOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CallHandlingOperations (7) + version20 (20)} + + registerSS, + eraseSS, + activateSS, + deactivateSS, + interrogateSS, + processUnstructuredSS-Request, + unstructuredSS-Request, + unstructuredSS-Notify, + registerPassword, + getPassword, + ss-InvocationNotification, + registerCC-Entry, + eraseCC-Entry +FROM MAP-SupplementaryServiceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SupplementaryServiceOperations (8) + version20 (20)} + + sendRoutingInfoForSM, + mo-ForwardSM, + mt-ForwardSM, + reportSM-DeliveryStatus, + alertServiceCentre, + informServiceCentre, + readyForSM, + mt-ForwardSM-VGCS +FROM MAP-ShortMessageServiceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ShortMessageServiceOperations (9) + version20 (20)} + + prepareGroupCall, + processGroupCallSignalling, + forwardGroupCallSignalling, + sendGroupCallEndSignal, + sendGroupCallInfo +FROM MAP-Group-Call-Operations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-Group-Call-Operations (22) + version20 (20)} + + provideSubscriberLocation, + sendRoutingInfoForLCS, + subscriberLocationReport +FROM MAP-LocationServiceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-LocationServiceOperations (24) + version20 (20)} + + +; +Supported-MAP-Operations OPERATION ::= {updateLocation | cancelLocation | cancelVcsgLocation | +purgeMS | +sendIdentification | updateGprsLocation | updateVcsgLocation | prepareHandover | sendEndSignal | +processAccessSignalling | forwardAccessSignalling | prepareSubsequentHandover | +sendAuthenticationInfo | authenticationFailureReport | checkIMEI | insertSubscriberData | +deleteSubscriberData | reset | forwardCheckSS-Indication | restoreData | provideSubscriberInfo | +anyTimeInterrogation | anyTimeSubscriptionInterrogation | anyTimeModification | +sendRoutingInfoForGprs | failureReport |noteMsPresentForGprs | noteMM-Event | +noteSubscriberDataModified | activateTraceMode | deactivateTraceMode | sendIMSI | +sendRoutingInfo | provideRoamingNumber | resumeCallHandling | setReportingState | statusReport | +remoteUserFree | ist-Alert | +ist-Command | registerSS | eraseSS | activateSS | deactivateSS | interrogateSS | +processUnstructuredSS-Request | unstructuredSS-Request | unstructuredSS-Notify | +registerPassword | getPassword | ss-InvocationNotification | registerCC-Entry | eraseCC-Entry | +sendRoutingInfoForSM | mo-ForwardSM | mt-ForwardSM | reportSM-DeliveryStatus | +alertServiceCentre | informServiceCentre | readyForSM | prepareGroupCall | +processGroupCallSignalling | forwardGroupCallSignalling | sendGroupCallEndSignal | +provideSubscriberLocation | sendRoutingInfoForLCS | subscriberLocationReport | +releaseResources | mt-ForwardSM-VGCS | sendGroupCallInfo } + + + +-- The following operation codes are reserved for operations +-- existing in previous versions of the protocol + +-- Operation Name AC used Oper. Code +-- +-- sendParameters map-ac infoRetrieval (14) version1 (1) local:9 +-- processUnstructuredSS-Data map-ac networkFunctionalSs (18) version1 (1) local:19 +-- performHandover map-ac handoverControl (11) version1 (1) local:28 +-- performSubsequentHandover map-ac handoverControl (11) version1 (1) local:30 +-- provideSIWFSNumber map-ac sIWFSAllocation (12) version3 (3) local:31 +-- siwfs-SignallingModify map-ac sIWFSAllocation (12) version3 (3) local:32 +-- noteInternalHandover map-ac handoverControl (11) version1 (1) local:35 +-- noteSubscriberPresent map-ac mwdMngt (24) version1 (1) local:48 +-- alertServiceCentreWithoutResult map-ac shortMsgAlert (23) version1 (1) local:49 +-- traceSubscriberActivity map-ac handoverControl (11) version1 (1) local:52 +-- beginSubscriberActivity map-ac networkFunctionalSs (18) version1 (1) local:54 + +-- The following error codes are reserved for errors +-- existing in previous versions of the protocol + +-- Error Name AC used Error Code +-- +-- unknownBaseStation map-ac handoverControl (11) version1 (1) local:2 +-- invalidTargetBaseStation map-ac handoverControl (11) version1 (1) local:23 +-- noRadioResourceAvailable map-ac handoverControl (11) version1 (1) local:24 + + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-SM-DataTypes.asn b/epan/dissectors/asn1/gsm_map/MAP-SM-DataTypes.asn new file mode 100644 index 00000000..b269b3e5 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-SM-DataTypes.asn @@ -0,0 +1,380 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.7.6 Short message data types + +MAP-SM-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SM-DataTypes (16) version20 (20)} + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + +EXPORTS + RoutingInfoForSM-Arg, + RoutingInfoForSM-Res, + MO-ForwardSM-Arg, + MO-ForwardSM-Res, + MT-ForwardSM-Arg, + MT-ForwardSM-Res, + ReportSM-DeliveryStatusArg, + ReportSM-DeliveryStatusRes, + AlertServiceCentreArg, + InformServiceCentreArg, + ReadyForSM-Arg, + ReadyForSM-Res, + SM-DeliveryOutcome, + AlertReason, + Additional-Number, + MT-ForwardSM-VGCS-Arg, + MT-ForwardSM-VGCS-Res +; + +IMPORTS + AddressString, + ISDN-AddressString, + SignalInfo, + IMSI, + LMSI, + ASCI-CallReference, + Time, + NetworkNodeDiameterAddress, + HLR-Id + +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version20 (20)} + + AbsentSubscriberDiagnosticSM +FROM MAP-ER-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ER-DataTypes (17) version20 (20)} + + ExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version20 (20)} +; + + +RoutingInfoForSM-Arg ::= SEQUENCE { + msisdn [0] ISDN-AddressString, + sm-RP-PRI [1] BOOLEAN, + serviceCentreAddress [2] AddressString, + extensionContainer [6] ExtensionContainer OPTIONAL, + ... , + gprsSupportIndicator [7] NULL OPTIONAL, + -- gprsSupportIndicator is set only if the SMS-GMSC supports + -- receiving of two numbers from the HLR + sm-RP-MTI [8] SM-RP-MTI OPTIONAL, + sm-RP-SMEA [9] SM-RP-SMEA OPTIONAL, + sm-deliveryNotIntended [10] SM-DeliveryNotIntended OPTIONAL, + ip-sm-gwGuidanceIndicator [11] NULL OPTIONAL, + imsi [12] IMSI OPTIONAL, + t4-Trigger-Indicator [14] NULL OPTIONAL, + singleAttemptDelivery [13] NULL OPTIONAL, + correlationID [15] CorrelationID OPTIONAL, + smsf-supportIndicator [16] NULL OPTIONAL } + +SM-DeliveryNotIntended ::= ENUMERATED { + onlyIMSI-requested (0), + onlyMCC-MNC-requested (1), + ...} + +SM-RP-MTI ::= INTEGER (0..10) + -- 0 SMS Deliver + -- 1 SMS Status Report + -- other values are reserved for future use and shall be discarded if + -- received + +SM-RP-SMEA ::= OCTET STRING (SIZE (1..12)) + -- this parameter contains an address field which is encoded + -- as defined in 3GPP TS 23.040. An address field contains 3 elements : + -- address-length + -- type-of-address + -- address-value + +RoutingInfoForSM-Res ::= SEQUENCE { + imsi IMSI, + locationInfoWithLMSI [0] LocationInfoWithLMSI, + extensionContainer [4] ExtensionContainer OPTIONAL, + ..., + ip-sm-gwGuidance [5] IP-SM-GW-Guidance OPTIONAL } + +IP-SM-GW-Guidance ::= SEQUENCE { + minimumDeliveryTimeValue SM-DeliveryTimerValue, + recommendedDeliveryTimeValue SM-DeliveryTimerValue, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +LocationInfoWithLMSI ::= SEQUENCE { + networkNode-Number [1] ISDN-AddressString, + lmsi LMSI OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + gprsNodeIndicator [5] NULL OPTIONAL, + -- gprsNodeIndicator is set only if the SGSN number is sent as the + -- Network Node Number + additional-Number [6] Additional-Number OPTIONAL, + networkNodeDiameterAddress [7] NetworkNodeDiameterAddress OPTIONAL, + additionalNetworkNodeDiameterAddress [8] NetworkNodeDiameterAddress OPTIONAL, + thirdNumber [9] Additional-Number OPTIONAL, + thirdNetworkNodeDiameterAddress [10] NetworkNodeDiameterAddress OPTIONAL, + imsNodeIndicator [11] NULL OPTIONAL, + -- gprsNodeIndicator and imsNodeIndicator shall not both be present. + -- additionalNumber and thirdNumber shall not both contain the same type of number. + smsf-3gpp-Number [12] ISDN-AddressString OPTIONAL, + smsf-3gpp-DiameterAddress [13] NetworkNodeDiameterAddress OPTIONAL, + smsf-non-3gpp-Number [14] ISDN-AddressString OPTIONAL, + smsf-non-3gpp-DiameterAddress [15] NetworkNodeDiameterAddress OPTIONAL, + smsf-3gpp-address-indicator [16] NULL OPTIONAL, + smsf-non-3gpp-address-indicator [17] NULL OPTIONAL + -- + -- If smsf-supportIndicator was not included in the request, in RoutingInfoForSM-Arg, + -- then smsf-3gpp Number/DiameterAddress, smsf-non-3gpp Number/DiameterAddress and + -- smsf-address-indicator and smsf-non-3gpp-address-indicator shall be absent. + -- + -- If smsf-3gpp-address-indicator is present, it indicates that the networkNode-Number + -- (and networkNodeDiameterAddress, if present) contains the address of an SMSF for + -- 3GPP access. + -- + -- If smsf-non-3gpp-address-indicator is present, it indicates that the + -- networkNode-Number (and networkNodeDiameterAddress, if present) contains the + -- address of an SMSF for non 3GPP access. + -- + -- At most one of gprsNodeIndicator, imsNodeIndicator, smsf-3gpp-address-indicator + -- and smsf-non-3gpp-address-indicator shall be present. Absence of all these + -- indicators indicate that the networkNode-Number (and networkNodeDiameterAddress, + -- if present) contains the address of an MSC/MME. + + } + +Additional-Number ::= CHOICE { + msc-Number [0] ISDN-AddressString, + sgsn-Number [1] ISDN-AddressString} + -- msc-number can be the MSC number or + -- the SMS Router number or the MME number for MT SMS + -- sgsn-number can be the SGSN number or the SMS Router number + +MO-ForwardSM-Arg ::= SEQUENCE { + sm-RP-DA SM-RP-DA, + sm-RP-OA SM-RP-OA, + sm-RP-UI SignalInfo, + extensionContainer ExtensionContainer OPTIONAL, + ... , + imsi IMSI OPTIONAL, + correlationID [0] CorrelationID OPTIONAL, + sm-DeliveryOutcome [1] SM-DeliveryOutcome OPTIONAL + } + +MO-ForwardSM-Res ::= SEQUENCE { + sm-RP-UI SignalInfo OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +MT-ForwardSM-Arg ::= SEQUENCE { + sm-RP-DA SM-RP-DA, + sm-RP-OA SM-RP-OA, + sm-RP-UI SignalInfo, + moreMessagesToSend NULL OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ..., + smDeliveryTimer SM-DeliveryTimerValue OPTIONAL, + smDeliveryStartTime Time OPTIONAL, + smsOverIP-OnlyIndicator [0] NULL OPTIONAL, + correlationID [1] CorrelationID OPTIONAL, + maximumRetransmissionTime [2] Time OPTIONAL, + smsGmscAddress [3] ISDN-AddressString OPTIONAL, + smsGmscDiameterAddress [4] NetworkNodeDiameterAddress OPTIONAL } + -- SM-DeliveryTimerValue contains the value used by the SMS-GMSC + +CorrelationID ::= SEQUENCE { + hlr-id [0] HLR-Id OPTIONAL, + sip-uri-A [1] SIP-URI OPTIONAL, + sip-uri-B [2] SIP-URI} + +SIP-URI ::= OCTET STRING +-- octets are coded as defined in IETF RFC 3261 + +MT-ForwardSM-Res ::= SEQUENCE { + sm-RP-UI SignalInfo OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ... } + +SM-RP-DA ::= CHOICE { + imsi [0] IMSI, + lmsi [1] LMSI, + serviceCentreAddressDA [4] AddressString, + noSM-RP-DA [5] NULL} + +SM-RP-OA ::= CHOICE { + msisdn [2] ISDN-AddressString, + serviceCentreAddressOA [4] AddressString, + noSM-RP-OA [5] NULL} + +SM-DeliveryTimerValue ::= INTEGER (30..600) + +ReportSM-DeliveryStatusArg ::= SEQUENCE { + msisdn ISDN-AddressString, + serviceCentreAddress AddressString, + sm-DeliveryOutcome SM-DeliveryOutcome, + absentSubscriberDiagnosticSM [0] AbsentSubscriberDiagnosticSM + OPTIONAL, + extensionContainer [1] ExtensionContainer OPTIONAL, + ..., + gprsSupportIndicator [2] NULL OPTIONAL, + -- gprsSupportIndicator is set only if the SMS-GMSC supports + -- handling of two delivery outcomes + deliveryOutcomeIndicator [3] NULL OPTIONAL, + -- DeliveryOutcomeIndicator is set when the SM-DeliveryOutcome + -- is for GPRS + additionalSM-DeliveryOutcome [4] SM-DeliveryOutcome OPTIONAL, + -- If received, additionalSM-DeliveryOutcome is for GPRS + -- If DeliveryOutcomeIndicator is set, then AdditionalSM-DeliveryOutcome shall be absent + additionalAbsentSubscriberDiagnosticSM [5] AbsentSubscriberDiagnosticSM OPTIONAL, + -- If received additionalAbsentSubscriberDiagnosticSM is for GPRS + -- If DeliveryOutcomeIndicator is set, then AdditionalAbsentSubscriberDiagnosticSM + -- shall be absent + ip-sm-gw-Indicator [6] NULL OPTIONAL, + -- the ip-sm-gw indicator indicates by its presence that sm-deliveryOutcome + -- is for delivery via IMS + -- If present, deliveryOutcomeIndicator shall be absent. + ip-sm-gw-sm-deliveryOutcome [7] SM-DeliveryOutcome OPTIONAL, + -- If received ip-sm-gw-sm-deliveryOutcome is for delivery via IMS + -- If ip-sm-gw-Indicator is set, then ip-sm-gw-sm-deliveryOutcome shall be absent + ip-sm-gw-absentSubscriberDiagnosticSM [8] AbsentSubscriberDiagnosticSM OPTIONAL, + -- If received ip-sm-gw-sm-absentSubscriberDiagnosticSM is for delivery via IMS + -- If ip-sm-gw-Indicator is set, then ip-sm-gw-sm-absentSubscriberDiagnosticSM + -- shall be absent + imsi [9] IMSI OPTIONAL, + singleAttemptDelivery [10] NULL OPTIONAL, + correlationID [11] CorrelationID OPTIONAL, + smsf-3gpp-deliveryOutcomeIndicator [12] NULL OPTIONAL, + -- smsf-3gpp-deliveryOutcome is set when the SM-DeliveryOutcome + -- is for 3GPP-SMSF + smsf-3gpp-deliveryOutcome [13] SM-DeliveryOutcome OPTIONAL, + -- If smsf-3gpp-deliveryOutcomeIndicator is set, then smsf-3gpp-deliveryOutcome + -- shall be absent + smsf-3gpp-absentSubscriberDiagSM [14] AbsentSubscriberDiagnosticSM OPTIONAL, + -- If smsf-3gpp-deliveryOutcomeIndicator is set, then + -- smsf-3gpp-absentSubscriberDiagSM shall be absent + smsf-non-3gpp-deliveryOutcomeIndicator [15] NULL OPTIONAL, + -- smsf-non-3gpp-deliveryOutcomeIndicator is set when the SM-DeliveryOutcome + -- is for non-3GPP-SMSF + smsf-non-3gpp-deliveryOutcome [16] SM-DeliveryOutcome OPTIONAL, + -- If smsf-non-3gpp-deliveryOutcomeIndicator is set, then smsf-non-3gpp-deliveryOutcome + -- shall be absent + smsf-non-3gpp-absentSubscriberDiagSM [17] AbsentSubscriberDiagnosticSM OPTIONAL + -- If smsf-non-3gpp-deliveryOutcomeIndicator is set, then + -- smsf-non-3gpp-absentSubscriberDiagSM shall be absent + +} + +SM-DeliveryOutcome ::= ENUMERATED { + memoryCapacityExceeded (0), + absentSubscriber (1), + successfulTransfer (2)} + +ReportSM-DeliveryStatusRes ::= SEQUENCE { + storedMSISDN ISDN-AddressString OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +AlertServiceCentreArg ::= SEQUENCE { + msisdn ISDN-AddressString, + serviceCentreAddress AddressString, + ..., + imsi IMSI OPTIONAL, + correlationID CorrelationID OPTIONAL, + maximumUeAvailabilityTime [0] Time OPTIONAL, + smsGmscAlertEvent [1] SmsGmsc-Alert-Event OPTIONAL, + smsGmscDiameterAddress [2] NetworkNodeDiameterAddress OPTIONAL, + newSGSNNumber [3] ISDN-AddressString OPTIONAL, + newSGSNDiameterAddress [4] NetworkNodeDiameterAddress OPTIONAL, + newMMENumber [5] ISDN-AddressString OPTIONAL, + newMMEDiameterAddress [6] NetworkNodeDiameterAddress OPTIONAL, + newMSCNumber [7] ISDN-AddressString OPTIONAL } + +SmsGmsc-Alert-Event ::= ENUMERATED { + msAvailableForMtSms (0), + msUnderNewServingNode (1) } + +InformServiceCentreArg ::= SEQUENCE { + storedMSISDN ISDN-AddressString OPTIONAL, + mw-Status MW-Status OPTIONAL, + extensionContainer ExtensionContainer OPTIONAL, + ... , + absentSubscriberDiagnosticSM AbsentSubscriberDiagnosticSM OPTIONAL, + additionalAbsentSubscriberDiagnosticSM [0] AbsentSubscriberDiagnosticSM OPTIONAL, + -- additionalAbsentSubscriberDiagnosticSM may be present only if + -- absentSubscriberDiagnosticSM is present. + -- if included, additionalAbsentSubscriberDiagnosticSM is for GPRS and + -- absentSubscriberDiagnosticSM is for non-GPRS + smsf3gppAbsentSubscriberDiagnosticSM [1] AbsentSubscriberDiagnosticSM OPTIONAL, + smsfNon3gppAbsentSubscriberDiagnosticSM [2] AbsentSubscriberDiagnosticSM OPTIONAL } + +MW-Status ::= BIT STRING { + sc-AddressNotIncluded (0), + mnrf-Set (1), + mcef-Set (2) , + mnrg-Set (3), + mnr5g-Set (4), + mnr5gn3g-Set (5)} (SIZE (6..16)) + -- exception handling: + -- bits 6 to 15 shall be ignored if received and not understood + +ReadyForSM-Arg ::= SEQUENCE { + imsi [0] IMSI, + alertReason AlertReason, + alertReasonIndicator NULL OPTIONAL, + -- alertReasonIndicator is set only when the alertReason + -- sent to HLR is for GPRS + extensionContainer ExtensionContainer OPTIONAL, + ..., + additionalAlertReasonIndicator [1] NULL OPTIONAL, + -- additionalAlertReasonIndicator is set only when the alertReason + -- sent to HLR is for IP-SM-GW + maximumUeAvailabilityTime Time OPTIONAL } + +ReadyForSM-Res ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ...} + +AlertReason ::= ENUMERATED { + ms-Present (0), + memoryAvailable (1)} + +MT-ForwardSM-VGCS-Arg ::= SEQUENCE { + asciCallReference ASCI-CallReference, + sm-RP-OA SM-RP-OA, + sm-RP-UI SignalInfo, + extensionContainer ExtensionContainer OPTIONAL, + ...} + +MT-ForwardSM-VGCS-Res ::= SEQUENCE { + sm-RP-UI [0] SignalInfo OPTIONAL, + dispatcherList [1] DispatcherList OPTIONAL, + ongoingCall NULL OPTIONAL, + extensionContainer [2] ExtensionContainer OPTIONAL, + ..., + additionalDispatcherList [3] AdditionalDispatcherList OPTIONAL } + -- additionalDispatcherList shall be absent if dispatcherList is absent or + -- contains less than 5 ISDN-AddressStrings + +DispatcherList ::= + SEQUENCE SIZE (1..maxNumOfDispatchers) OF + ISDN-AddressString + +maxNumOfDispatchers INTEGER ::= 5 + +AdditionalDispatcherList ::= + SEQUENCE SIZE (1..maxNumOfAdditionalDispatchers) OF + ISDN-AddressString + +maxNumOfAdditionalDispatchers INTEGER ::= 15 + + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-SS-Code.asn b/epan/dissectors/asn1/gsm_map/MAP-SS-Code.asn new file mode 100644 index 00000000..74b347a7 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-SS-Code.asn @@ -0,0 +1,188 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.7.5 Supplementary service codes + +MAP-SS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-Code (15) version20 (20)} + +DEFINITIONS + +::= + +BEGIN + +SS-Code ::= OCTET STRING (SIZE (1)) + -- This type is used to represent the code identifying a single + -- supplementary service, a group of supplementary services, or + -- all supplementary services. The services and abbreviations + -- used are defined in TS 3GPP TS 22.004 [5]. The internal structure is + -- defined as follows: + -- + -- bits 87654321: group (bits 8765), and specific service + -- (bits 4321) + +allSS SS-Code ::= '00000000'B + -- reserved for possible future use + -- all SS + +allLineIdentificationSS SS-Code ::= '00010000'B + -- reserved for possible future use + -- all line identification SS +clip SS-Code ::= '00010001'B + -- calling line identification presentation +clir SS-Code ::= '00010010'B + -- calling line identification restriction +colp SS-Code ::= '00010011'B + -- connected line identification presentation +colr SS-Code ::= '00010100'B + -- connected line identification restriction +mci SS-Code ::= '00010101'B + -- reserved for possible future use + -- malicious call identification + +allNameIdentificationSS SS-Code ::= '00011000'B + -- all name identification SS +cnap SS-Code ::= '00011001'B + -- calling name presentation + + -- SS-Codes '00011010'B to '00011111'B are reserved for future + -- NameIdentification Supplementary Service use. + +allForwardingSS SS-Code ::= '00100000'B + -- all forwarding SS +cfu SS-Code ::= '00100001'B + -- call forwarding unconditional +allCondForwardingSS SS-Code ::= '00101000'B + -- all conditional forwarding SS +cfb SS-Code ::= '00101001'B + -- call forwarding on mobile subscriber busy +cfnry SS-Code ::= '00101010'B + -- call forwarding on no reply +cfnrc SS-Code ::= '00101011'B + -- call forwarding on mobile subscriber not reachable +cd SS-Code ::= '00100100'B + -- call deflection + +allCallOfferingSS SS-Code ::= '00110000'B + -- reserved for possible future use + -- all call offering SS includes also all forwarding SS +ect SS-Code ::= '00110001'B + -- explicit call transfer +mah SS-Code ::= '00110010'B + -- reserved for possible future use + -- mobile access hunting + +allCallCompletionSS SS-Code ::= '01000000'B + -- reserved for possible future use + -- all Call completion SS +cw SS-Code ::= '01000001'B + -- call waiting +hold SS-Code ::= '01000010'B + -- call hold +ccbs-A SS-Code ::= '01000011'B + -- completion of call to busy subscribers, originating side + -- this SS-Code is used only in InsertSubscriberData, DeleteSubscriberData + -- and InterrogateSS +ccbs-B SS-Code ::= '01000100'B + -- completion of call to busy subscribers, destination side + -- this SS-Code is used only in InsertSubscriberData and DeleteSubscriberData +mc SS-Code ::= '01000101'B + -- multicall + +allMultiPartySS SS-Code ::= '01010000'B + -- reserved for possible future use + -- all multiparty SS +multiPTY SS-Code ::= '01010001'B + -- multiparty + +allCommunityOfInterest-SS SS-Code ::= '01100000'B + -- reserved for possible future use + -- all community of interest SS +cug SS-Code ::= '01100001'B + -- closed user group + +allChargingSS SS-Code ::= '01110000'B + -- reserved for possible future use + -- all charging SS +aoci SS-Code ::= '01110001'B + -- advice of charge information +aocc SS-Code ::= '01110010'B + -- advice of charge charging + +allAdditionalInfoTransferSS SS-Code ::= '10000000'B + -- reserved for possible future use + -- all additional information transfer SS +uus1 SS-Code ::= '10000001'B + -- UUS1 user-to-user signalling +uus2 SS-Code ::= '10000010'B + -- UUS2 user-to-user signalling +uus3 SS-Code ::= '10000011'B + -- UUS3 user-to-user signalling + +allBarringSS SS-Code ::= '10010000'B + -- all barring SS +barringOfOutgoingCalls SS-Code ::= '10010001'B + -- barring of outgoing calls +baoc SS-Code ::= '10010010'B + -- barring of all outgoing calls +boic SS-Code ::= '10010011'B + -- barring of outgoing international calls +boicExHC SS-Code ::= '10010100'B + -- barring of outgoing international calls except those directed + -- to the home PLMN Country +barringOfIncomingCalls SS-Code ::= '10011001'B + -- barring of incoming calls +baic SS-Code ::= '10011010'B + -- barring of all incoming calls +bicRoam SS-Code ::= '10011011'B + -- barring of incoming calls when roaming outside home PLMN + -- Country + +allPLMN-specificSS SS-Code ::= '11110000'B +plmn-specificSS-1 SS-Code ::= '11110001'B +plmn-specificSS-2 SS-Code ::= '11110010'B +plmn-specificSS-3 SS-Code ::= '11110011'B +plmn-specificSS-4 SS-Code ::= '11110100'B +plmn-specificSS-5 SS-Code ::= '11110101'B +plmn-specificSS-6 SS-Code ::= '11110110'B +plmn-specificSS-7 SS-Code ::= '11110111'B +plmn-specificSS-8 SS-Code ::= '11111000'B +plmn-specificSS-9 SS-Code ::= '11111001'B +plmn-specificSS-A SS-Code ::= '11111010'B +plmn-specificSS-B SS-Code ::= '11111011'B +plmn-specificSS-C SS-Code ::= '11111100'B +plmn-specificSS-D SS-Code ::= '11111101'B +plmn-specificSS-E SS-Code ::= '11111110'B +plmn-specificSS-F SS-Code ::= '11111111'B + +allCallPrioritySS SS-Code ::= '10100000'B + -- reserved for possible future use + -- all call priority SS +emlpp SS-Code ::= '10100001'B + -- enhanced Multilevel Precedence Pre-emption (EMLPP) service + +allLCSPrivacyException SS-Code ::= '10110000'B + -- all LCS Privacy Exception Classes +universal SS-Code ::= '10110001'B + -- allow location by any LCS client +callSessionRelated SS-Code ::= '10110010'B + -- allow location by any value added LCS client to which a call/session + -- is established from the target MS +callSessionUnrelated SS-Code ::= '10110011'B + -- allow location by designated external value added LCS clients +plmnoperator SS-Code ::= '10110100'B + -- allow location by designated PLMN operator LCS clients +serviceType SS-Code ::= '10110101'B + -- allow location by LCS clients of a designated LCS service type + +allMOLR-SS SS-Code ::= '11000000'B + -- all Mobile Originating Location Request Classes +basicSelfLocation SS-Code ::= '11000001'B + -- allow an MS to request its own location +autonomousSelfLocation SS-Code ::= '11000010'B + -- allow an MS to perform self location without interaction + -- with the PLMN for a predetermined period of time +transferToThirdParty SS-Code ::= '11000011'B + -- allow an MS to request transfer of its location to another LCS client + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-SS-DataTypes.asn b/epan/dissectors/asn1/gsm_map/MAP-SS-DataTypes.asn new file mode 100644 index 00000000..d70a2497 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-SS-DataTypes.asn @@ -0,0 +1,340 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.7.4 Supplementary service data types + +MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-DataTypes (14) version20 (20)} + +DEFINITIONS + +IMPLICIT TAGS + +::= + +BEGIN + +EXPORTS + RegisterSS-Arg, + SS-Info, + SS-Status, + SS-SubscriptionOption, + SS-ForBS-Code, + InterrogateSS-Res, + USSD-Arg, + USSD-Res, + USSD-DataCodingScheme, + USSD-String, + Password, + GuidanceInfo, + SS-List, + SS-InfoList, + OverrideCategory, + CliRestrictionOption, + NoReplyConditionTime, + ForwardingOptions, + maxNumOfSS, + SS-Data, + SS-InvocationNotificationArg, + SS-InvocationNotificationRes, + CCBS-Feature, + RegisterCC-EntryArg, + RegisterCC-EntryRes, + EraseCC-EntryArg, + EraseCC-EntryRes +; + +IMPORTS + AddressString, + ISDN-AddressString, + ISDN-SubaddressString, + FTN-AddressString, + IMSI, + BasicServiceCode, + AlertingPattern, + EMLPP-Priority, + MaxMC-Bearers, + MC-Bearers, + ExternalSignalInfo +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version20 (20)} + + ExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version20 (20)} + + SS-Code +FROM MAP-SS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-Code (15) version20 (20)} +; + + +RegisterSS-Arg ::= SEQUENCE { + ss-Code SS-Code, + basicService BasicServiceCode OPTIONAL, + forwardedToNumber [4] AddressString OPTIONAL, + forwardedToSubaddress [6] ISDN-SubaddressString OPTIONAL, + noReplyConditionTime [5] NoReplyConditionTime OPTIONAL, + ..., + defaultPriority [7] EMLPP-Priority OPTIONAL, + nbrUser [8] MC-Bearers OPTIONAL, + longFTN-Supported [9] NULL OPTIONAL } + +NoReplyConditionTime ::= INTEGER (5..30) + +SS-Info ::= CHOICE { + forwardingInfo [0] ForwardingInfo, + callBarringInfo [1] CallBarringInfo, + ss-Data [3] SS-Data} + +ForwardingInfo ::= SEQUENCE { + ss-Code SS-Code OPTIONAL, + forwardingFeatureList ForwardingFeatureList, + ...} + +ForwardingFeatureList ::= + SEQUENCE SIZE (1..maxNumOfBasicServiceGroups) OF + ForwardingFeature + +ForwardingFeature ::= SEQUENCE { + basicService BasicServiceCode OPTIONAL, + ss-Status [4] SS-Status OPTIONAL, + forwardedToNumber [5] ISDN-AddressString OPTIONAL, + forwardedToSubaddress [8] ISDN-SubaddressString OPTIONAL, + forwardingOptions [6] ForwardingOptions OPTIONAL, + noReplyConditionTime [7] NoReplyConditionTime OPTIONAL, + ..., + longForwardedToNumber [9] FTN-AddressString OPTIONAL } + +SS-Status ::= OCTET STRING (SIZE (1)) + + -- bits 8765: 0000 (unused) + -- bits 4321: Used to convey the "P bit","R bit","A bit" and "Q bit", + -- representing supplementary service state information + -- as defined in TS 3GPP TS 23.011 [22] + + -- bit 4: "Q bit" + + -- bit 3: "P bit" + + -- bit 2: "R bit" + + -- bit 1: "A bit" + +ForwardingOptions ::= OCTET STRING (SIZE (1)) + + -- bit 8: notification to forwarding party + -- 0 no notification + -- 1 notification + + -- bit 7: redirecting presentation + -- 0 no presentation + -- 1 presentation + + -- bit 6: notification to calling party + -- 0 no notification + -- 1 notification + + -- bit 5: 0 (unused) + + -- bits 43: forwarding reason + -- 00 ms not reachable + -- 01 ms busy + -- 10 no reply + -- 11 unconditional when used in a SRI Result, + -- or call deflection when used in a RCH Argument + -- bits 21: 00 (unused) + +CallBarringInfo ::= SEQUENCE { + ss-Code SS-Code OPTIONAL, + callBarringFeatureList CallBarringFeatureList, + ...} + +CallBarringFeatureList ::= SEQUENCE SIZE (1..maxNumOfBasicServiceGroups) OF + CallBarringFeature + +CallBarringFeature ::= SEQUENCE { + basicService BasicServiceCode OPTIONAL, + ss-Status [4] SS-Status OPTIONAL, + ...} + +SS-Data ::= SEQUENCE { + ss-Code SS-Code OPTIONAL, + ss-Status [4] SS-Status OPTIONAL, + ss-SubscriptionOption SS-SubscriptionOption OPTIONAL, + basicServiceGroupList BasicServiceGroupList OPTIONAL, + ..., + defaultPriority EMLPP-Priority OPTIONAL, + nbrUser [5] MC-Bearers OPTIONAL + } + +SS-SubscriptionOption ::= CHOICE { + cliRestrictionOption [2] CliRestrictionOption, + overrideCategory [1] OverrideCategory} + +CliRestrictionOption ::= ENUMERATED { + permanent (0), + temporaryDefaultRestricted (1), + temporaryDefaultAllowed (2)} + +OverrideCategory ::= ENUMERATED { + overrideEnabled (0), + overrideDisabled (1)} + +SS-ForBS-Code ::= SEQUENCE { + ss-Code SS-Code, + basicService BasicServiceCode OPTIONAL, + ..., + longFTN-Supported [4] NULL OPTIONAL } + +GenericServiceInfo ::= SEQUENCE { + ss-Status SS-Status, + cliRestrictionOption CliRestrictionOption OPTIONAL, + ..., + maximumEntitledPriority [0] EMLPP-Priority OPTIONAL, + defaultPriority [1] EMLPP-Priority OPTIONAL, + ccbs-FeatureList [2] CCBS-FeatureList OPTIONAL, + nbrSB [3] MaxMC-Bearers OPTIONAL, + nbrUser [4] MC-Bearers OPTIONAL, + nbrSN [5] MC-Bearers OPTIONAL } + +CCBS-FeatureList ::= SEQUENCE SIZE (1..maxNumOfCCBS-Requests) OF + CCBS-Feature + +maxNumOfCCBS-Requests INTEGER ::= 5 + +CCBS-Feature ::= SEQUENCE { + ccbs-Index [0] CCBS-Index OPTIONAL, + b-subscriberNumber [1] ISDN-AddressString OPTIONAL, + b-subscriberSubaddress [2] ISDN-SubaddressString OPTIONAL, + basicServiceGroup [3] BasicServiceCode OPTIONAL, + ...} + +CCBS-Index ::= INTEGER (1..maxNumOfCCBS-Requests) + +InterrogateSS-Res ::= CHOICE { + ss-Status [0] SS-Status, + basicServiceGroupList [2] BasicServiceGroupList, + forwardingFeatureList [3] ForwardingFeatureList, + genericServiceInfo [4] GenericServiceInfo } + +USSD-Arg ::= SEQUENCE { + ussd-DataCodingScheme USSD-DataCodingScheme, + ussd-String USSD-String, + ... , + alertingPattern AlertingPattern OPTIONAL, + msisdn [0] ISDN-AddressString OPTIONAL } + +USSD-Res ::= SEQUENCE { + ussd-DataCodingScheme USSD-DataCodingScheme, + ussd-String USSD-String, + ...} + +USSD-DataCodingScheme ::= OCTET STRING (SIZE (1)) + -- The structure of the USSD-DataCodingScheme is defined by + -- the Cell Broadcast Data Coding Scheme as described in + -- TS 3GPP TS 23.038 [25] + +USSD-String ::= OCTET STRING (SIZE (1..maxUSSD-StringLength)) + -- The structure of the contents of the USSD-String is dependent + -- on the USSD-DataCodingScheme as described in TS 3GPP TS 23.038 [25]. + +maxUSSD-StringLength INTEGER ::= 160 + +Password ::= NumericString + (FROM ("0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9")) + (SIZE (4)) + +GuidanceInfo ::= ENUMERATED { + enterPW (0), + enterNewPW (1), + enterNewPW-Again (2)} + -- How this information is really delivered to the subscriber + -- (display, announcement, ...) is not part of this + -- specification. + +SS-List ::= SEQUENCE SIZE (1..maxNumOfSS) OF + SS-Code + +maxNumOfSS INTEGER ::= 30 + +SS-InfoList ::= SEQUENCE SIZE (1..maxNumOfSS) OF + SS-Info + +BasicServiceGroupList ::= SEQUENCE SIZE (1..maxNumOfBasicServiceGroups) OF + BasicServiceCode + +maxNumOfBasicServiceGroups INTEGER ::= 13 + +SS-InvocationNotificationArg ::= SEQUENCE { + imsi [0] IMSI, + msisdn [1] ISDN-AddressString, + ss-Event [2] SS-Code, + -- The following SS-Code values are allowed : + -- ect SS-Code ::= '00110001'B + -- multiPTY SS-Code ::= '01010001'B + -- cd SS-Code ::= '00100100'B + -- ccbs SS-Code ::= '01000100'B + ss-EventSpecification [3] SS-EventSpecification OPTIONAL, + extensionContainer [4] ExtensionContainer OPTIONAL, + ..., + b-subscriberNumber [5] ISDN-AddressString OPTIONAL, + ccbs-RequestState [6] CCBS-RequestState OPTIONAL + } + +CCBS-RequestState ::= ENUMERATED { + request (0), + recall (1), + active (2), + completed (3), + suspended (4), + frozen (5), + deleted (6) + } + +SS-InvocationNotificationRes ::= SEQUENCE { + extensionContainer ExtensionContainer OPTIONAL, + ... + } + +SS-EventSpecification ::= SEQUENCE SIZE (1..maxEventSpecification) OF + AddressString + +maxEventSpecification INTEGER ::= 2 + +RegisterCC-EntryArg ::= SEQUENCE { + ss-Code [0] SS-Code, + ccbs-Data [1] CCBS-Data OPTIONAL, + ...} + +CCBS-Data ::= SEQUENCE { + ccbs-Feature [0] CCBS-Feature, + translatedB-Number [1] ISDN-AddressString, + serviceIndicator [2] ServiceIndicator OPTIONAL, + callInfo [3] ExternalSignalInfo, + networkSignalInfo [4] ExternalSignalInfo, + ...} + +ServiceIndicator ::= BIT STRING { + clir-invoked (0), + camel-invoked (1)} (SIZE(2..32)) + -- exception handling: + -- bits 2 to 31 shall be ignored if received and not understood + +RegisterCC-EntryRes ::= SEQUENCE { + ccbs-Feature [0] CCBS-Feature OPTIONAL, + ...} + +EraseCC-EntryArg ::= SEQUENCE { + ss-Code [0] SS-Code, + ccbs-Index [1] CCBS-Index OPTIONAL, + ...} + +EraseCC-EntryRes ::= SEQUENCE { + ss-Code [0] SS-Code, + ss-Status [1] SS-Status OPTIONAL, + ...} + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-ShortMessageServiceOperations.asn b/epan/dissectors/asn1/gsm_map/MAP-ShortMessageServiceOperations.asn new file mode 100644 index 00000000..ee54ce78 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-ShortMessageServiceOperations.asn @@ -0,0 +1,173 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.6.5 Short message service operations + +MAP-ShortMessageServiceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ShortMessageServiceOperations (9) + version20 (20)} + +DEFINITIONS + +::= + +BEGIN + +EXPORTS + sendRoutingInfoForSM, + mo-ForwardSM, + mt-ForwardSM, + reportSM-DeliveryStatus, + alertServiceCentre, + informServiceCentre, + readyForSM, + mt-ForwardSM-VGCS +; + +IMPORTS + OPERATION +FROM Remote-Operations-Information-Objects { +joint-iso-itu-t remote-operations(4) + informationObjects(5) version1(0)} + + systemFailure, + dataMissing, + unexpectedDataValue, + facilityNotSupported, + unknownSubscriber, + unidentifiedSubscriber, + illegalSubscriber, + illegalEquipment, + teleserviceNotProvisioned, + callBarred, + subscriberBusyForMT-SMS, + sm-DeliveryFailure, + messageWaitingListFull, + absentSubscriberSM +FROM MAP-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-Errors (10) version20 (20)} + + RoutingInfoForSM-Arg, + RoutingInfoForSM-Res, + MO-ForwardSM-Arg, + MO-ForwardSM-Res, + MT-ForwardSM-Arg, + MT-ForwardSM-Res, + ReportSM-DeliveryStatusArg, + ReportSM-DeliveryStatusRes, + AlertServiceCentreArg, + InformServiceCentreArg, + ReadyForSM-Arg, + ReadyForSM-Res, + MT-ForwardSM-VGCS-Arg, + MT-ForwardSM-VGCS-Res +FROM MAP-SM-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SM-DataTypes (16) version20 (20)} + +; + +sendRoutingInfoForSM OPERATION ::= { --Timer m + ARGUMENT + RoutingInfoForSM-Arg + RESULT + RoutingInfoForSM-Res + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + facilityNotSupported | + unknownSubscriber | + teleserviceNotProvisioned | + callBarred | + absentSubscriberSM} + CODE local:45 } + +mo-ForwardSM OPERATION ::= { --Timer ml + ARGUMENT + MO-ForwardSM-Arg + RESULT + MO-ForwardSM-Res + -- optional + ERRORS { + systemFailure | + unexpectedDataValue | + facilityNotSupported | + sm-DeliveryFailure} + CODE local:46 } + +mt-ForwardSM OPERATION ::= { --Timer ml + -- the timer value may be subject to negotiation between GMSC and IP-SM-GW + ARGUMENT + MT-ForwardSM-Arg + RESULT + MT-ForwardSM-Res + -- optional + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + facilityNotSupported | + unidentifiedSubscriber | + illegalSubscriber | + illegalEquipment | + subscriberBusyForMT-SMS | + sm-DeliveryFailure | + absentSubscriberSM} + CODE local:44 } + +reportSM-DeliveryStatus OPERATION ::= { --Timer s + ARGUMENT + ReportSM-DeliveryStatusArg + RESULT + ReportSM-DeliveryStatusRes + -- optional + ERRORS { + dataMissing | + unexpectedDataValue | + unknownSubscriber | + messageWaitingListFull} + CODE local:47 } + +alertServiceCentre OPERATION ::= { --Timer s + ARGUMENT + AlertServiceCentreArg + RETURN RESULT TRUE + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue} + CODE local:64 } + +informServiceCentre OPERATION ::= { --Timer s + ARGUMENT + InformServiceCentreArg + CODE local:63 } + +readyForSM OPERATION ::= { --Timer m + ARGUMENT + ReadyForSM-Arg + RESULT + ReadyForSM-Res + -- optional + ERRORS { + dataMissing | + unexpectedDataValue | + facilityNotSupported | + unknownSubscriber} + CODE local:66 } + +mt-ForwardSM-VGCS OPERATION ::= { --Timer ml + ARGUMENT + MT-ForwardSM-VGCS-Arg + RESULT + MT-ForwardSM-VGCS-Res + -- optional + ERRORS { + systemFailure | + unexpectedDataValue } + CODE local:21 } + + +END + diff --git a/epan/dissectors/asn1/gsm_map/MAP-SupplementaryServiceOperations.asn b/epan/dissectors/asn1/gsm_map/MAP-SupplementaryServiceOperations.asn new file mode 100644 index 00000000..e5d7b8e9 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-SupplementaryServiceOperations.asn @@ -0,0 +1,298 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +--17.6.4 Supplementary service operations + +MAP-SupplementaryServiceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SupplementaryServiceOperations (8) + version20 (20)} + +DEFINITIONS + +::= + +BEGIN + +EXPORTS + registerSS, + eraseSS, + activateSS, + deactivateSS, + interrogateSS, + processUnstructuredSS-Request, + unstructuredSS-Request, + unstructuredSS-Notify, + registerPassword, + getPassword, + ss-InvocationNotification, + registerCC-Entry, + eraseCC-Entry +; + +IMPORTS + OPERATION +FROM Remote-Operations-Information-Objects { +joint-iso-itu-t remote-operations(4) + informationObjects(5) version1(0)} + + systemFailure, + dataMissing, + unexpectedDataValue, + unknownSubscriber, + bearerServiceNotProvisioned, + teleserviceNotProvisioned, + callBarred, + illegalSS-Operation, + ss-ErrorStatus, + ss-NotAvailable, + ss-SubscriptionViolation, + ss-Incompatibility, + pw-RegistrationFailure, + negativePW-Check, + numberOfPW-AttemptsViolation, + unknownAlphabet, + ussd-Busy, + absentSubscriber, + illegalSubscriber, + illegalEquipment, + shortTermDenial, + longTermDenial, + facilityNotSupported +FROM MAP-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-Errors (10) version20 (20)} + + RegisterSS-Arg, + SS-Info, + SS-ForBS-Code, + InterrogateSS-Res, + USSD-Arg, + USSD-Res, + Password, + GuidanceInfo, + SS-InvocationNotificationArg, + SS-InvocationNotificationRes, + RegisterCC-EntryArg, + RegisterCC-EntryRes, + EraseCC-EntryArg, + EraseCC-EntryRes +FROM MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-DataTypes (14) version20 (20)} + + SS-Code +FROM MAP-SS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-Code (15) version20 (20)} +; + + +-- supplementary service handling operations + +registerSS OPERATION ::= { --Timer m + ARGUMENT + RegisterSS-Arg + RESULT + SS-Info + -- optional + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + bearerServiceNotProvisioned | + teleserviceNotProvisioned | + callBarred | + illegalSS-Operation | + ss-ErrorStatus | + ss-Incompatibility} + CODE local:10 } + +eraseSS OPERATION ::= { --Timer m + ARGUMENT + SS-ForBS-Code + RESULT + SS-Info + -- optional + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + bearerServiceNotProvisioned | + teleserviceNotProvisioned | + callBarred | + illegalSS-Operation | + ss-ErrorStatus + } + CODE local:11 } + +activateSS OPERATION ::= { --Timer m + ARGUMENT + SS-ForBS-Code + RESULT + SS-Info + -- optional + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + bearerServiceNotProvisioned | + teleserviceNotProvisioned | + callBarred | + illegalSS-Operation | + ss-ErrorStatus | + ss-SubscriptionViolation | + ss-Incompatibility | + negativePW-Check | + numberOfPW-AttemptsViolation} + CODE local:12 } + +deactivateSS OPERATION ::= { --Timer m + ARGUMENT + SS-ForBS-Code + RESULT + SS-Info + -- optional + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + bearerServiceNotProvisioned | + teleserviceNotProvisioned | + callBarred | + illegalSS-Operation | + ss-ErrorStatus | + ss-SubscriptionViolation | + negativePW-Check | + numberOfPW-AttemptsViolation} + CODE local:13 } + +interrogateSS OPERATION ::= { --Timer m + ARGUMENT + SS-ForBS-Code + RESULT + InterrogateSS-Res + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + bearerServiceNotProvisioned | + teleserviceNotProvisioned | + callBarred | + illegalSS-Operation | + ss-NotAvailable} + CODE local:14 } + +processUnstructuredSS-Request OPERATION ::= { --Timer 10 minutes + ARGUMENT + USSD-Arg + RESULT + USSD-Res + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + unknownAlphabet | + callBarred} + CODE local:59 } + +unstructuredSS-Request OPERATION ::= { --Timer ml + ARGUMENT + USSD-Arg + RESULT + USSD-Res + -- optional + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + absentSubscriber | + illegalSubscriber | + illegalEquipment | + unknownAlphabet | + ussd-Busy} + CODE local:60 } + +unstructuredSS-Notify OPERATION ::= { --Timer ml + ARGUMENT + USSD-Arg + RETURN RESULT TRUE + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + absentSubscriber | + illegalSubscriber | + illegalEquipment | + unknownAlphabet | + ussd-Busy} + CODE local:61 } + +registerPassword OPERATION ::= { --Timer ml + ARGUMENT + SS-Code + RESULT + Password + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + callBarred | + ss-SubscriptionViolation | + pw-RegistrationFailure | + negativePW-Check | + numberOfPW-AttemptsViolation} + LINKED { + getPassword} + CODE local:17 } + +getPassword OPERATION ::= { --Timer m + ARGUMENT + GuidanceInfo + RESULT + Password + CODE local:18 } + +ss-InvocationNotification OPERATION ::= { --Timer m + ARGUMENT + SS-InvocationNotificationArg + RESULT + SS-InvocationNotificationRes + -- optional + ERRORS { + dataMissing | + unexpectedDataValue | + unknownSubscriber} + CODE local:72 } + +registerCC-Entry OPERATION ::= { --Timer m + ARGUMENT + RegisterCC-EntryArg + RESULT + RegisterCC-EntryRes + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + callBarred | + illegalSS-Operation | + ss-ErrorStatus | + ss-Incompatibility | + shortTermDenial | + longTermDenial | + facilityNotSupported} + CODE local:76 } + +eraseCC-Entry OPERATION ::= { --Timer m + ARGUMENT + EraseCC-EntryArg + RESULT + EraseCC-EntryRes + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + callBarred | + illegalSS-Operation | + ss-ErrorStatus} + CODE local:77 } + +END diff --git a/epan/dissectors/asn1/gsm_map/MAP-TS-Code.asn b/epan/dissectors/asn1/gsm_map/MAP-TS-Code.asn new file mode 100644 index 00000000..08266391 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MAP-TS-Code.asn @@ -0,0 +1,90 @@ +-- 3GPP TS 29.002 V17.1.0 (2021-06) +-- 17.7.9 Teleservice Codes + +MAP-TS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-TS-Code (19) version20 (20)} + +DEFINITIONS + +::= + +BEGIN + +TeleserviceCode ::= OCTET STRING (SIZE (1)) + -- This type is used to represent the code identifying a single + -- teleservice, a group of teleservices, or all teleservices. The + -- services are defined in TS GSM 22.003 [4]. + -- The internal structure is defined as follows: + + -- bits 87654321: group (bits 8765) and specific service + -- (bits 4321) + +Ext-TeleserviceCode ::= OCTET STRING (SIZE (1..5)) + -- This type is used to represent the code identifying a single + -- teleservice, a group of teleservices, or all teleservices. The + -- services are defined in TS GSM 22.003 [4]. + -- The internal structure is defined as follows: + + -- OCTET 1: + -- bits 87654321: group (bits 8765) and specific service + -- (bits 4321) + + -- OCTETS 2-5: reserved for future use. If received the + -- Ext-TeleserviceCode shall be + -- treated according to the exception handling defined for the + -- operation that uses this type. + + -- Ext-TeleserviceCode includes all values defined for TeleserviceCode. + +allTeleservices TeleserviceCode ::= '00000000'B + +allSpeechTransmissionServices TeleserviceCode ::= '00010000'B +telephony TeleserviceCode ::= '00010001'B +emergencyCalls TeleserviceCode ::= '00010010'B + +allShortMessageServices TeleserviceCode ::= '00100000'B +shortMessageMT-PP TeleserviceCode ::= '00100001'B +shortMessageMO-PP TeleserviceCode ::= '00100010'B + +allFacsimileTransmissionServices TeleserviceCode ::= '01100000'B +facsimileGroup3AndAlterSpeech TeleserviceCode ::= '01100001'B +automaticFacsimileGroup3 TeleserviceCode ::= '01100010'B +facsimileGroup4 TeleserviceCode ::= '01100011'B + +-- The following non-hierarchical Compound Teleservice Groups +-- are defined in TS 3GPP TS 22.030: +allDataTeleservices TeleserviceCode ::= '01110000'B + -- covers Teleservice Groups 'allFacsimileTransmissionServices' + -- and 'allShortMessageServices' +allTeleservices-ExeptSMS TeleserviceCode ::= '10000000'B + -- covers Teleservice Groups 'allSpeechTransmissionServices' and + -- 'allFacsimileTransmissionServices' +-- +-- Compound Teleservice Group Codes are only used in call +-- independent supplementary service operations, i.e. they +-- are not used in InsertSubscriberData or in +-- DeleteSubscriberData messages. + +allVoiceGroupCallServices TeleserviceCode ::= '10010000'B +voiceGroupCall TeleserviceCode ::= '10010001'B +voiceBroadcastCall TeleserviceCode ::= '10010010'B + +allPLMN-specificTS TeleserviceCode ::= '11010000'B +plmn-specificTS-1 TeleserviceCode ::= '11010001'B +plmn-specificTS-2 TeleserviceCode ::= '11010010'B +plmn-specificTS-3 TeleserviceCode ::= '11010011'B +plmn-specificTS-4 TeleserviceCode ::= '11010100'B +plmn-specificTS-5 TeleserviceCode ::= '11010101'B +plmn-specificTS-6 TeleserviceCode ::= '11010110'B +plmn-specificTS-7 TeleserviceCode ::= '11010111'B +plmn-specificTS-8 TeleserviceCode ::= '11011000'B +plmn-specificTS-9 TeleserviceCode ::= '11011001'B +plmn-specificTS-A TeleserviceCode ::= '11011010'B +plmn-specificTS-B TeleserviceCode ::= '11011011'B +plmn-specificTS-C TeleserviceCode ::= '11011100'B +plmn-specificTS-D TeleserviceCode ::= '11011101'B +plmn-specificTS-E TeleserviceCode ::= '11011110'B +plmn-specificTS-F TeleserviceCode ::= '11011111'B + +END diff --git a/epan/dissectors/asn1/gsm_map/MobileDomainDefinitions.asn b/epan/dissectors/asn1/gsm_map/MobileDomainDefinitions.asn new file mode 100644 index 00000000..ce1947eb --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/MobileDomainDefinitions.asn @@ -0,0 +1,30 @@ +-- ETSI ETR 091 ed.1 http://www.etsi.org + +MobileDomainDefinitions {ccitt (0) identified-organization (4) etsi (0) +mobileDomain (0) mobileDomainDefinitions (0) version1 (1)} + +DEFINITIONS ::= +BEGIN + +-- Mobile DomainId + +mobileDomainId OBJECT IDENTIFIER ::= {ccitt (0) identified-organization (4) etsi (0) mobileDomain (0)} + +-- Mobile Subdomains + +gsm-NetworkId OBJECT IDENTIFIER ::= {mobileDomainId gsm-Network (1)} +gsm-AccessId OBJECT IDENTIFIER ::= {mobileDomainId gsm-Access (2)} +gsm-OperationAndMaintenanceId OBJECT IDENTIFIER ::= {mobileDomainId gsm-Operation-Maintenance (3)} +gsm-MessagingId OBJECT IDENTIFIER ::= {mobileDomainId gsm-Messaging (4)} + +-- Common Component Ids for structuring Mobile Subdomains + +CommonComponentId ::= INTEGER (0..9) + +ac-Id CommonComponentId ::= 0 +as-Id CommonComponentId ::= 1 +ase-Id CommonComponentId ::= 2 +moduleId CommonComponentId ::= 3 +er-Id CommonComponentId ::= 4 + +END -- MobileDomainDefinitions
\ No newline at end of file diff --git a/epan/dissectors/asn1/gsm_map/Nokia.asn b/epan/dissectors/asn1/gsm_map/Nokia.asn new file mode 100644 index 00000000..032a72ac --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/Nokia.asn @@ -0,0 +1,605 @@ +-- Nokia proprietary extensions +-- +NokiaMAP-Extensions + +DEFINITIONS IMPLICIT TAGS ::= + +BEGIN + +IMPORTS + Category, + ODB-Data, + CUG-Interlock +FROM MAP-MS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-MS-DataTypes (11) version13 (13)} + + ISDN-AddressString, + AddressString, + TBCD-STRING, + SignalInfo, + BasicServiceCode, + IMSI, + IMEI, + SubscriberIdentity, + CellGlobalIdOrServiceAreaIdFixedLength, + LAIFixedLength, + Ext-SS-Status +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-CommonDataTypes (18) version13 (13)} + + PrivateExtension, + ExtensionContainer +FROM MAP-ExtensionDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-ExtensionDataTypes (21) version13 (13)} + + TraceReference, + TraceType +FROM MAP-OM-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-OM-DataTypes (12) version13 (13)} + + SS-Code +FROM MAP-SS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-SS-Code (15) version10 (10)} + + SS-Status, USSD-DataCodingScheme, USSD-String, CCBS-Feature +-- USSD-DataCodingScheme, USSD-String were introduced because of CNAP. +FROM MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-SS-DataTypes (14) version10 (10)} + + +; + + +ExtensionSet MAP-EXTENSION ::= { + { &ExtensionType; IsdArgExt, &extensionId; {0 34 0} } | + { &ExtensionType; DsdArgExt, &extensionId; {0 34 1} } | + { &ExtensionType; UlResExt, &extensionId; {0 34 2} } | + { &ExtensionType; SS-DataExtension, &extensionId; {0 34 4} } | + { &ExtensionType; SriExtension, &extensionId; {0 34 5} } | + { &ExtensionType; ExtraSignalInfo, &extensionId; {0 34 6} } | + { &ExtensionType; SriResExtension, &extensionId; {0 34 7} } | + { &ExtensionType; CanLocArgExt, &extensionId; {0 34 10} } | + { &ExtensionType; ATMargExt, &extensionId; {0 34 11} } | + { &ExtensionType; DTMargExt, &extensionId; {0 34 12} } | + { &ExtensionType; NumberPorted, &extensionId; {0 34 13} } | + { &ExtensionType; HO-Ext, &extensionId; {0 34 15} } | + { &ExtensionType; ATMresExt, &extensionId; {0 34 16} } | + { &ExtensionType; AbsentSubscriberExt, &extensionId; {0 34 17} } | + { &ExtensionType; SriForSMArgExt, &extensionId; {0 34 18} } | + { &ExtensionType; ReportSMDelStatArgExt, &extensionId; {0 34 19} } | + { &ExtensionType; UdlArgExt, &extensionId; {0 34 20} } | + { &ExtensionType; RoamNotAllowedExt, &extensionId; {0 34 21} } | + { &ExtensionType; MO-ForwardSM-ArgExt, &extensionId; {0 34 22} } | + { &ExtensionType; ErrOlcmInfoTableExt, &extensionId; {0 34 23} } | + { &ExtensionType; RoutingCategoryExt, &extensionId; {0 34 25} } | + { &ExtensionType; AnyTimeModArgExt, &extensionId; {0 34 26} } | + { &ExtensionType; ExtensionType, &extensionId; {1 2 826 0 1249 58 1 0} } | + { &ExtensionType; AccessTypeExt, &extensionId; {1 3 12 2 1107 3 66 1 1} } | + { &ExtensionType; AccessSubscriptionListExt, &extensionId; {1 3 12 2 1107 3 66 1 3} } | + { &ExtensionType; AllowedServiceData, &extensionId; {1 3 12 2 1107 3 66 1 6} }, +...} + -- ExtensionSet is the set of all defined private extensions + -- Unsupported private extensions shall be discarded if received. + + +RoutingCategory ::= OCTET STRING (SIZE (1)) + -- value 0 means that RoutingCategory is released + +maxNumOfActiveSS INTEGER ::= 30 + +ActiveSS-List ::= OCTET STRING (SIZE (1..maxNumOfActiveSS)) + +ExtRoutingCategory ::= INTEGER (0..2147483647) + +IsdArgExt ::= [PRIVATE 0] SEQUENCE { + alsLineIndicator [0] NULL OPTIONAL, + routingCategory [1] RoutingCategory OPTIONAL, + serviceList [2] MAPserviceList OPTIONAL, + serv-info-list [3] ServiceListWithInfo OPTIONAL, + extRoutingCategory [5] ExtRoutingCategory OPTIONAL, + ownMSISDN [6] ISDN-AddressString OPTIONAL, + ...} + -- Note : additional routing category is removed from VLR by + -- sending ISD with add-RC value zero (0). + +DsdArgExt ::= [PRIVATE 0] SEQUENCE { + alsLineIndicator [0] NULL OPTIONAL, + serviceList [1] MAPserviceList OPTIONAL, + ...} + +UlResExt ::= [PRIVATE 0] SEQUENCE { + mwd-Set [0] NULL OPTIONAL, + ...} + +EmoInCategoryKey ::= TBCD-STRING (SIZE (1..3)) + +SS-DataEmoInExt ::= [PRIVATE 1] SEQUENCE { + emoInCategoryKey [PRIVATE 2] EmoInCategoryKey OPTIONAL, + ...} + +InTriggerKey ::= INTEGER (1..65535) + +PnpIndex ::= OCTET STRING (SIZE (3)) + -- digits 0 through 9, two digits per octet, + -- each digit encoded 0000 to 0001, + -- 5 digits, 1111 used as filler for last digit. + +CallRedirectionIndex ::= INTEGER (0..255) + +ChargingArea ::= INTEGER (1..9999) + +maxNumOfCA INTEGER ::= 3 + +ChargingAreaList ::= SEQUENCE SIZE (1..maxNumOfCA) OF + ChargingArea + +RegionalChargingData ::= SEQUENCE { + chargingAreaList [0] ChargingAreaList OPTIONAL, + ...} + +SS-DataExtension ::= [PRIVATE 0] SEQUENCE { + inTriggerKey [0] InTriggerKey OPTIONAL, + pnpIndex [1] PnpIndex OPTIONAL, + callRedirectionIndex [2] CallRedirectionIndex OPTIONAL, + regionalChargingData [3] RegionalChargingData OPTIONAL, + ...} + +SriExtension ::= [PRIVATE 0] SEQUENCE { + callForwardingOverride [0] NULL OPTIONAL, + in-Capability [1] NULL OPTIONAL, + callingCategory [2] CallingCategory OPTIONAL, + internalServiceIndicator [3] InternalServiceIndicator OPTIONAL, + srbtSupportIndicator [4] NULL OPTIONAL, + gmscSupportIndicator [5] NULL OPTIONAL, + ...} + +CallingCategory ::= OCTET STRING (SIZE (1)) + -- 'E9'hex used in SRI-arg + -- 'E8'hex used in SRI-res + +InternalServiceIndicator ::= OCTET STRING (SIZE (1)) + -- bits 8765: 0000 (unused) + -- bit 4: intelligent alerting + -- bit 3: parallel alerting + -- bit 2: member interrogation + -- bit 1: sequential alerting + -- 1 set + -- 0 not set + +ExtraProtocolId ::= INTEGER { q763 (1)} (1..20) + +ExtraSignalInfo ::= [PRIVATE 1] SEQUENCE { + protocolId ExtraProtocolId, + signalInfo SignalInfo } + +CUG-CallInfo ::= OCTET STRING (SIZE (1..4)) + -- xxxx xx00 - not used + -- xxxx xx01 - CUG call + -- xxxx xx10 - non CUG call + -- xxxx xx11 - maybe a CUG call + +Nokia-CUG-Data ::= SEQUENCE { + cug-Interlock [0] CUG-Interlock OPTIONAL, + cug-OutgoingAccess [1] BOOLEAN OPTIONAL, + cug-CallInfo [2] CUG-CallInfo OPTIONAL, + ...} + -- cug-OutgoingAccess must be BOOLEAN (not NULL), because + -- it must be possible to transfer cug-CallInfo without + -- the other parameters + +SriResExtension ::= [PRIVATE 0] SEQUENCE { + inTriggerKey [0] InTriggerKey OPTIONAL, + vlrNumber [1] ISDN-AddressString OPTIONAL, + activeSs [2] ActiveSS-List OPTIONAL, + traceReference [3] TraceReference OPTIONAL, + traceType [4] TraceType OPTIONAL, + omc-Id [5] AddressString OPTIONAL, + hotBilling [6] BOOLEAN OPTIONAL, + cfoIsDone [7] BOOLEAN OPTIONAL, + cfInCug [8] BOOLEAN OPTIONAL, + basicService [9] BasicServiceCode OPTIONAL, + category [10] Category OPTIONAL, + routingCategory [11] RoutingCategory OPTIONAL, + pnpIndex [12] PnpIndex OPTIONAL, + nokia-CUG [13] Nokia-CUG-Data OPTIONAL, + noBarrings [14] NULL OPTIONAL, + odb-Data [15] ODB-Data OPTIONAL, + fraudData [16] FraudData OPTIONAL, + extRoutingCategory [17] ExtRoutingCategory OPTIONAL, + leaId [18] LeaId OPTIONAL, + olcmInfoTable [19] OlcmInfoTable OPTIONAL, + callingCategory [20] CallingCategory OPTIONAL, + commonMSISDN [21] ISDN-AddressString OPTIONAL, + rgData [22] RgData OPTIONAL, + olcmTraceReference [23] OlcmTraceReference OPTIONAL, + ...} + +RgData ::= SEQUENCE { + noAnswerTimer [0] NoAnswerTimer OPTIONAL, + memberList [1] MemberList OPTIONAL, + alertingMethod [2] AlertingMethod OPTIONAL, + userType [3] UserType OPTIONAL, + divertedToNbr [4] ISDN-AddressString OPTIONAL, + memberOfSuppression [5] NULL OPTIONAL, + ringbacktone [6] NULL OPTIONAL, + ...} + +NoAnswerTimer ::= OCTET STRING (SIZE (1)) + +MemberList ::= SEQUENCE SIZE (1..5) OF + ISDN-AddressString + +AlertingMethod ::= OCTET STRING (SIZE (1)) + -- '00' = sequential + -- '01' = parallel + -- '02' = sequential / parallel + -- '03' = intelligent + +UserType ::= OCTET STRING (SIZE (1)) + -- '00' = single + -- '01' = multiple + +MAPserviceCode ::= OCTET STRING (SIZE (1)) + +picLock MAPserviceCode ::= '00000001'B +prefCarrierId MAPserviceCode ::= '00000010'B +mKey MAPserviceCode ::= '00000011'B +smsKey MAPserviceCode ::= '00000100'B +fraud-Data MAPserviceCode ::= '00000101'B +cell-update MAPserviceCode ::= '00000110'B + +maxnumOfMAPservices INTEGER ::= 256 + +MAPserviceList ::= OCTET STRING (SIZE (0..maxnumOfMAPservices)) + +CarrierIdCode ::= OCTET STRING (SIZE (3)) + -- the internal structure is defined in T1.113 + +PrefCarrierIdList ::= SEQUENCE { + prefCarrierIdCode1 [0] CarrierIdCode, + ...} + +ANSIIsdArgExt ::= [PRIVATE 30] SEQUENCE { + prefCarrierIdList [0] PrefCarrierIdList OPTIONAL, + ...} + +ANSISriResExt ::= [PRIVATE 30] SEQUENCE { + prefCarrierIdList [0] PrefCarrierIdList OPTIONAL, + ...} + +CanLocArgExt ::= [PRIVATE 0] SEQUENCE { + termination [0] OCTET STRING (SIZE (1)) OPTIONAL, + ...} + +ATMargExt ::= [PRIVATE 0] SEQUENCE { + traceReference [0] TraceReference OPTIONAL, + traceType [1] TraceType OPTIONAL, + leaId [2] LeaId OPTIONAL, + olcmInfoTable [3] OlcmInfoTable OPTIONAL, + olcmTraceReference [4] OlcmTraceReference OPTIONAL, + ... } + +LeaId ::= INTEGER (0..65535) + +OlcmInfoTable ::= SEQUENCE SIZE (1..maxNumOfLEAs) OF + OlcmInfo + +maxNumOfLEAs INTEGER ::= 7 + +OlcmInfo ::= SEQUENCE { + traceReference [0] TraceReference, + traceType [1] TraceType, + leaId [2] LeaId OPTIONAL, + olcmTraceReference [3] OlcmTraceReference OPTIONAL, + ... } + +OlcmTraceReference ::= OCTET STRING (SIZE (1..4)) + +ATMresExt ::= [PRIVATE 0] SEQUENCE { + olcmActive [0] NULL OPTIONAL, + ... } + +DTMargExt ::= [PRIVATE 0] SEQUENCE { + traceType [0] TraceType OPTIONAL, + leaId [1] LeaId OPTIONAL, + olcmTraceReference [2] OlcmTraceReference OPTIONAL, + ... } + +VersionInfo ::= OCTET STRING (SIZE (1)) + -- 0000 0001 : version 1 + +maxNumOfServicesWithInfo INTEGER ::= 20 + +FraudInfo ::= SEQUENCE { + moc [0] FraudData OPTIONAL, + cf [1] FraudData OPTIONAL, + ct [2] FraudData OPTIONAL, + ...} + +FraudData ::= SEQUENCE { + time [0] TimeLimit OPTIONAL, + timeAction [1] ActionType OPTIONAL, + maxCount [2] FraudMaxCount OPTIONAL, + maxCountAction [3] ActionType OPTIONAL, + ...} + +TimeLimit ::= INTEGER (0..64800) + +ActionType ::= OCTET STRING (SIZE (1..10)) + -- only 1st octet is used to transfer action type in M10 + -- other octets are reserved for future use + +FraudMaxCount ::= INTEGER (0..255) + +ServiceWithInfo ::= SEQUENCE { + serviceCode [0] MAPserviceCode OPTIONAL, + versionInfo [1] VersionInfo DEFAULT '1'B, + in-key INKey OPTIONAL, + fraudInfo FraudInfo OPTIONAL, + ...} + +ServiceListWithInfo ::= SEQUENCE SIZE (1..maxNumOfServicesWithInfo) OF + ServiceWithInfo + +INKey ::= CHOICE { + mobile-IN-key [2] MKey, + sms-IN-key [3] SMSKey } + +MmTdpName ::= OCTET STRING (SIZE (1..8)) + -- bits 876543: 000000 (unused) + -- + -- bit 2: Intra-VLR-Locup-DP + -- 1 DP is set + -- 0 DP is not set + -- + -- bit 1: Inter-VLR-Locup-DP + -- 1 DP is set + -- 0 DP is not set + +ServiceKey ::= INTEGER (0..2147483647) + -- 4 bytes + +MKeyVer ::= OCTET STRING (SIZE (1)) + -- 0000 0001 : version 1 + +LocupType ::= OCTET STRING (SIZE (1..8)) + -- bits 87654: 00000 (unused) + -- + -- bit 3: Normal-Locup + -- 1 LocupType is set (default) + -- 0 LocupType is not set + -- + -- bit 2: Periodic-Locup + -- 1 LocupType is set + -- 0 LocupType is not set (default) + -- + -- bit 1: IMSI-attach-Locup + -- 1 LocupType is set + -- 0 LocupType is not set (default) + +MKey::= SEQUENCE{ + mKeyVer [0] MKeyVer DEFAULT '1'B, + mmScfAddress [1] ISDN-AddressString OPTIONAL, + mmTdpName [2] MmTdpName OPTIONAL, + serviceKey [3] ServiceKey OPTIONAL, + locupType [4] LocupType OPTIONAL, + ...} + -- if mKeyVer parameter is missing, it is interpreted as + -- "version 1". + -- mmScfAddress, mmTtdpId and serviceKey parameters must be + -- present on version 1. + -- + -- Feature 742 : "IN Mobility Management" + +SmsTdpName ::= OCTET STRING (SIZE (1..8)) + -- bits 87654: 00000 (unused) + -- + -- bit 3: SR-SMS-DP + -- 1 DP is set + -- 0 DP is not set + -- + -- bit 2: MO-SMS-DP + -- 1 DP is set + -- 0 DP is not set + -- + -- bit 1: MT-SMS-DP + -- 1 DP is set + -- 0 DP is not set + +SMSKey ::= SEQUENCE{ + mmSCPAddress [0] ISDN-AddressString OPTIONAL, + smsTdpName [1] SmsTdpName OPTIONAL, + serviceKey [2] ServiceKey OPTIONAL, + mmsFlag [3] NULL OPTIONAL, + ...} + +NumberPorted ::= [PRIVATE 20] ENUMERATED { + notPorted (0), + ported (1), + ...} + +USSD-Extension ::= [PRIVATE 10] SEQUENCE { + routingCategory [0] RoutingCategory OPTIONAL, + cellId [1] CellGlobalIdOrServiceAreaIdFixedLength OPTIONAL, + sai-Present [2] NULL OPTIONAL, + ...} + +HO-Ext ::= [PRIVATE 0] SEQUENCE { + map-Opt [0] MapOptFields OPTIONAL, + codec-List [1] CodecListExt OPTIONAL, + selected-Codec [2] SelectedCodec OPTIONAL, + uma-access [3] NULL OPTIONAL, + uma-ip-address [4] OCTET STRING (SIZE (5..17)) OPTIONAL, + uma-ip-port-nb [5] IPPortNb OPTIONAL, + ... } + +MapOptFields ::= OCTET STRING (SIZE (1)) + -- bits 87: 00 (unused) + -- bit 6: codec + -- 1 set + -- 0 not set + -- bit 5: tfo_set + -- 1 set + -- 0 not set + -- bit 4: tfo_not_set + -- 1 set + -- 0 not set + -- bit 3: emerg + -- 1 set + -- 0 not set + -- bit 2: usim + -- 1 set + -- 0 not set + -- bit 1: sim + -- 1 set + -- 0 not set + +CodecListExt ::= SEQUENCE (SIZE(0..maxNumOfCodec)) OF + CodecExt + +maxNumOfCodec INTEGER ::= 8 + +CodecExt ::= OCTET STRING (SIZE(1)) + +SelectedCodec ::= SEQUENCE { + codec [0] CodecExt, + modes [1] Modes, + ...} + +Modes ::= OCTET STRING (SIZE(9)) + +IPPortNb ::= INTEGER (0..65535) + +AbsentSubscriberExt ::= [PRIVATE 0] SEQUENCE { + olcmInfoTable [0] OlcmInfoTable OPTIONAL, + imsi [1] IMSI OPTIONAL, + ...} + +ErrOlcmInfoTableExt ::= [PRIVATE 0] SEQUENCE { + olcmInfoTable [0] OlcmInfoTable OPTIONAL, + imsi [1] IMSI OPTIONAL, + ...} + +RoutingCategoryExt ::= [PRIVATE 0] SEQUENCE { + routingCategory [0] RoutingCategory OPTIONAL, + extRoutingCategory [1] ExtRoutingCategory OPTIONAL, + ... } + +SriForSMArgExt ::= [PRIVATE 0] SEQUENCE { + cfuSMSCounter [0] CfuSMSCounter OPTIONAL, + cfusmcfo [2] NULL OPTIONAL, + memberInterrogate [3] NULL OPTIONAL, + ... } + +ReportSMDelStatArgExt ::= [PRIVATE 0] SEQUENCE { + cfuSMSCounter [0] CfuSMSCounter OPTIONAL, + cfusmcfo [2] NULL OPTIONAL, + ... } + +CfuSMSCounter ::= OCTET STRING (SIZE (1)) + +MO-ForwardSM-ArgExt ::= [PRIVATE 0] SEQUENCE { + locationAreaCode [0] LocationAreaCode OPTIONAL, + cellId [1] CellGlobalIdOrServiceAreaIdFixedLength OPTIONAL, + ... } + +LocationAreaCode ::= OCTET STRING(SIZE (2)) + -- octets 1 and 2 of LocationAreaCode according to 3GPP TS 24.008 + +UdlArgExt ::= [PRIVATE 0] SEQUENCE { + lai [0] LAIFixedLength OPTIONAL, + sendImmResp [1] NULL OPTIONAL, + ... } + +RoamNotAllowedExt ::= [PRIVATE 0] SEQUENCE { + rejectCause [0] OCTET STRING (SIZE (1)) OPTIONAL, + ... } + +AnyTimeModArgExt ::= [PRIVATE 0] SEQUENCE { + senderMSISDN [0] ISDN-AddressString OPTIONAL, + ... } + +CosInfo::= SEQUENCE { + ss-Code SS-Code OPTIONAL, + cos-FeatureList COS-FeatureList } + +COS-FeatureList ::= SEQUENCE SIZE (1..maxNumberOfCOSFeatures) OF + COS-Feature + +maxNumberOfCOSFeatures INTEGER ::= 13 + -- This reflects the number of basic service groups, and is + -- consistent with other features (i.e., Forwarding Features, + -- CallBarring Features, etc.). + +COS-Feature ::= SEQUENCE { + basicServiceCode BasicServiceCode OPTIONAL, + ss-Status [4] SS-Status, + customerGroupID [5] CustomerGroupID OPTIONAL, + subGroupID [6] SubGroupID OPTIONAL, + classOfServiceID [7] ClassOfServiceID OPTIONAL } + +CustomerGroupID ::= BIT STRING { + formatIndicator (0), + idHighBit (8), + netidHighBit (16), + idLowBit (31) } (SIZE(32)) + -- formatIndicator is encoded as follows: + -- 0 : International Format + -- 1 : Network Format + -- Bits 1-7 Unused (encoded as 0000000) + -- The remaining bits (3 octets) are the bit representation of the + -- Customer Group Identifier. All bits are significant. + +SubGroupID ::= BIT STRING (SIZE (16)) + +ClassOfServiceID ::= BIT STRING { + formatIndicator (0), + idHighBit (8), + idLowBit (15) } (SIZE(16)) + -- formatIndicator is encoded as follows: + -- 0 : International Format + -- 1 : Network Format + -- Bits 1-7 Unused (encoded as 0000000) + -- The remaining bits (one octet) is the bit representation of the + -- Class Of Service Identifier. All bits are significant. + +AccessTypeExt ::= SEQUENCE { + access Access, + version Version, + ...} + +Access ::= ENUMERATED { + gsm (1), + geran (2), + utran (3), + ...} + +Version ::= INTEGER (1..20) + +AccessSubscriptionListExt ::= SEQUENCE SIZE (1..10) OF + Access + +AllowedServiceData ::= BIT STRING { + amr-wb-allowed (0)} (SIZE(1..16)) + +AnyTimePO-BarringArg ::= SEQUENCE { + subscriberIdentity [0] SubscriberIdentity, + gsmSCF-Address [3] ISDN-AddressString, + gprs-Barring GprsBarring, + ...} + +AnyTimePO-BarringRes ::= SEQUENCE { + ...} + +GprsBarring ::= ENUMERATED { + gprsServiceBarring (0), + grantGPRS-Service (1), + ...} + +END diff --git a/epan/dissectors/asn1/gsm_map/SS-DataTypes.asn b/epan/dissectors/asn1/gsm_map/SS-DataTypes.asn new file mode 100644 index 00000000..854b32d8 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/SS-DataTypes.asn @@ -0,0 +1,599 @@ +-- 3GPP TS 24.080 V15.0.0 (2018-06) +-- 4.4.2 ASN.1 data types +SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) + ss-DataTypes (2) version12 (12)} + +DEFINITIONS + +IMPLICIT TAGS ::= + +BEGIN + +-- exports all data types defined in this module + +IMPORTS + +SS-Code +FROM MAP-SS-Code { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-SS-Code (15) version12 (12)} + +-- imports MAP-SS-DataTypes +SS-Status, USSD-DataCodingScheme, USSD-String, CCBS-Feature +-- USSD-DataCodingScheme, USSD-String were introduced because of CNAP. +FROM MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-SS-DataTypes (14) version12 (12)} + +CUG-Index, +NotificationToMSUser +FROM MAP-MS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-MS-DataTypes (11) version12 (12)} + +maxSignalInfoLength, +ISDN-AddressString, +ISDN-SubaddressString, +AlertingPattern, +LCSClientExternalID, +AddressString, +LCSServiceTypeID, +AgeOfLocationInformation, +GSN-Address +FROM MAP-CommonDataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-CommonDataTypes (18) version12 (12)} + +LocationType, +DeferredLocationEventType, +LCSClientName, +LCS-QoS, +Horizontal-Accuracy, +ResponseTime, +Ext-GeographicalInformation, +VelocityEstimate, +SupportedGADShapes, +Add-GeographicalInformation, +LCSRequestorID, +LCS-ReferenceNumber, +LCSCodeword, +AreaEventInfo, +ReportingPLMNList, +PeriodicLDRInfo, +SequenceNumber, +OccurrenceInfo, +IntervalTime + +FROM MAP-LCS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-LCS-DataTypes (25) version12 (12)} + +; + +-- data types definition + +SS-UserData ::= IA5String (SIZE (1.. maxSignalInfoLength)) + +NotifySS-Arg ::= SEQUENCE{ + ss-Code [1] SS-Code OPTIONAL, + ss-Status [4] SS-Status OPTIONAL, + ss-Notification [5] SS-Notification OPTIONAL, + callIsWaiting-Indicator [14] NULL OPTIONAL, + callOnHold-Indicator [15] CallOnHold-Indicator OPTIONAL, + mpty-Indicator [16] NULL OPTIONAL, + cug-Index [17] CUG-Index OPTIONAL, + clirSuppressionRejected [18] NULL OPTIONAL, + ... , + ect-Indicator [19] ECT-Indicator OPTIONAL, + nameIndicator [20] NameIndicator OPTIONAL, + ccbs-Feature [21] CCBS-Feature OPTIONAL, + alertingPattern [22] AlertingPattern OPTIONAL, + multicall-Indicator [23] Multicall-Indicator OPTIONAL} + +-- The nameIndicator is defined because of CNAP. + +Multicall-Indicator ::= ENUMERATED { + nbr-SNexceeded (0), + nbr-Userexceeded (1)} + +ForwardChargeAdviceArg ::= SEQUENCE{ + ss-Code [0] SS-Code, + chargingInformation [1] ChargingInformation, + ...} + +SS-Notification ::= OCTET STRING (SIZE (1)) + +-- Bit 8 7 6 5 4 00000 (Unused) + +-- Bit 3 Call is forwarded indication to A-subscriber +-- (calling subscriber) +-- 0 No information content +-- 1 Outgoing call has been forwarded to C + +-- Bit 2 Call is forwarded indication to B-subscriber +-- (forwarding subscriber) +-- 0 No information content +-- 1 Incoming call has been forwarded to C + +-- Bit 1 Call is forwarded indication to C-subscriber +-- (forwarded-to subscriber) +-- 0 No information content +-- 1 Incoming call is a forwarded call + +ChargingInformation ::= SEQUENCE{ + e1 [1] E1 OPTIONAL, + e2 [2] E2 OPTIONAL, + e3 [3] E3 OPTIONAL, + e4 [4] E4 OPTIONAL, + e5 [5] E5 OPTIONAL, + e6 [6] E6 OPTIONAL, + e7 [7] E7 OPTIONAL, + ...} + +E1 ::= INTEGER (0..max10TimesUnitsPerTime) +max10TimesUnitsPerTime INTEGER ::= 8191 + +E2 ::= INTEGER (0..max10TimesTimeInterval) +max10TimesTimeInterval INTEGER ::= 8191 + +E3 ::= INTEGER (0..max100TimesScalingFactor) +max100TimesScalingFactor INTEGER ::= 8191 + +E4 ::= INTEGER (0..max10TimesIncrement) +max10TimesIncrement INTEGER ::= 8191 + +E5 ::= INTEGER (0..max10TimesIncrementPerDataInterval) +max10TimesIncrementPerDataInterval INTEGER ::= 8191 + +E6 ::= INTEGER (0..maxNumberOfSegmentsPerDataInterval) +maxNumberOfSegmentsPerDataInterval INTEGER ::= 8191 + +E7 ::= INTEGER (0..max10TimesInitialTime) +max10TimesInitialTime INTEGER ::= 8191 + +CallOnHold-Indicator ::= ENUMERATED { + callRetrieved (0), + callOnHold (1)} + +ForwardCUG-InfoArg ::= SEQUENCE { + cug-Index [0] CUG-Index OPTIONAL, + suppressPrefCUG [1] NULL OPTIONAL, + suppressOA [2] NULL OPTIONAL, + ...} + +ECT-Indicator ::= SEQUENCE { + ect-CallState [0] ECT-CallState, + rdn [1] RDN OPTIONAL, + ...} + +ECT-CallState ::= ENUMERATED { + alerting (0), + active (1)} + + NameIndicator ::= SEQUENCE { + callingName [0] Name OPTIONAL, + ...} + + Name ::= CHOICE { + namePresentationAllowed [0] NameSet, + presentationRestricted [1] NULL, + nameUnavailable [2] NULL, + namePresentationRestricted [3] NameSet} + + NameSet ::= SEQUENCE { + dataCodingScheme [0] USSD-DataCodingScheme, + lengthInCharacters [1] INTEGER, + nameString [2] USSD-String, + ...} + +-- NameIndicator, Name and NameSet are defined because of CNAP. +-- The USSD-DataCodingScheme shall indicate use of the default alphabet through the +-- following encoding: +-- bit 7 6 5 4 3 2 1 0 +-- | 0 0 0 0 | 1 1 1 1| + +RDN ::= CHOICE { + presentationAllowedAddress [0] RemotePartyNumber, + presentationRestricted [1] NULL, + numberNotAvailableDueToInterworking [2] NULL, + presentationRestrictedAddress [3] RemotePartyNumber} + +RemotePartyNumber ::= SEQUENCE { + partyNumber [0] ISDN-AddressString, + partyNumberSubaddress [1] ISDN-SubaddressString OPTIONAL, + ...} + +AccessRegisterCCEntryArg ::= SEQUENCE { + ...} + +CallDeflectionArg ::= SEQUENCE { + deflectedToNumber [0] AddressString, + deflectedToSubaddress [1] ISDN-SubaddressString OPTIONAL, + ...} + +UserUserServiceArg ::= SEQUENCE { + uUS-Service [0] UUS-Service, + uUS-Required [1] BOOLEAN, + ... } + +UUS-Service ::= ENUMERATED { + uUS1 (1), + uUS2 (2), + uUS3 (3), + ... } + +-- exception handling: +-- In case of UUS-Service with any other value, indicated as "UUS required", +-- but not understood by the MS, the call will be cleared. + +LocationNotificationArg ::= SEQUENCE { + notificationType [0] NotificationToMSUser, + locationType [1] LocationType, + lcsClientExternalID [2] LCSClientExternalID OPTIONAL, + lcsClientName [3] LCSClientName OPTIONAL, + ... , + lcsRequestorID [4] LCSRequestorID OPTIONAL, + lcsCodeword [5] LCSCodeword OPTIONAL, + lcsServiceTypeID [6] LCSServiceTypeID OPTIONAL, + deferredLocationExt [7] DeferredLocationExt OPTIONAL } + +-- The notificationType may only be set to notifyLocationAllowed, +-- notifyAndVerify-LocationAllowedIfNoResponse, +-- or notifyAndVerify-LocationNotAllowedIfNoResponse. +-- The locationEstimateType field of the locationType may only be set to +-- currentLocation, currentOrLastKnownLocation, +-- notificationVerificationOnly, or activateDeferredLocation. +-- The deferredLocationEventType field of the locationType may only be set to +-- enteringIntoArea, and/or leavingFromArea, and/or beingInsideArea, +-- and/or periodicLDR. +-- For LCS location notification of MT-LR for current location, the +-- locationEstimateType field of the locationType shall be set to currentLocation. +-- For LCS location notification of MT-LR for current or last known location, the +-- locationEstimateType field of the locationType shall be set to currentOrLastKnownLocation. +-- For the LCS location notification for the LDR of MS available event, +-- the locationEstimateType field of the locationType shall be set to currentLocation. +-- For LCS location notification for the LDR of change of area event, +-- the locationEstimateType field of the locationType shall be set to +-- activateDeferredLocation, and the deferredLocationEventType shall be +-- set to enteringIntoArea, and/or leavingFromArea, and/or beingInsideArea. +-- For the post positioning LCS location notification, the locationEstimateType +-- field of the locationType shall be set to notificationVerificationOnly. +-- For LCS location notification for the LDR of periodic location event, +-- the locationEstimateType field of the locationType shall be set to +-- activateDeferredLocation, and the +-- deferredLocationEventType shall be set to periodicLDR. +-- For LCS location notification for the LDR of the motion event, +-- the locationEstimateType field of the locationType shall be set to +-- activateDeferredLocation, the deferredLocationEventType shall be omitted +-- and the deferredLocationExt shall be set to motionEvent. + + +-- exception handling: +-- At reception of an unrecognised notificationType value the receiver shall reject the +-- operation with a return error cause of unexpected data value. +-- At reception of an unrecognised locationType value the receiver shall reject the +-- operation with a return error cause of unexpected data value. +-- At reception of an unallowed notificationType value the receiver shall either ignore the +-- received operation or reject the operation with a return error cause of unexpected +-- data value. +-- At reception of an unallowed locationType value the receiver shall either ignore the +-- received operation or reject the operation with a return error cause of unexpected +-- data value. + +DeferredLocationExt ::= BIT STRING { + motionEvent (0) } (SIZE (1..16)) +-- A bit set to one indicates that the corresponding deferred location type is present. +-- A bit set to zero indicates that the corresponding deferred location type is absent. + + +LocationNotificationRes ::= SEQUENCE { + verificationResponse [0] VerificationResponse OPTIONAL, + ...} + +VerificationResponse::= ENUMERATED { + permissionDenied (0), + permissionGranted (1), + ... } + +-- exception handling: +-- an unrecognized value shall be treated the same as value 0 (permissionDenied) + +LCS-MOLRArg ::= SEQUENCE { + molr-Type [0] MOLR-Type, + locationMethod [1] LocationMethod OPTIONAL, + lcs-QoS [2] LCS-QoS OPTIONAL, + lcsClientExternalID [3] LCSClientExternalID OPTIONAL, + mlc-Number [4] ISDN-AddressString OPTIONAL, + gpsAssistanceData [5] GPSAssistanceData OPTIONAL, + ..., + supportedGADShapes [6] SupportedGADShapes OPTIONAL, + lcsServiceTypeID [7] LCSServiceTypeID OPTIONAL, + ageOfLocationInfo [8] AgeOfLocationInformation OPTIONAL, + locationType [9] LocationType OPTIONAL, + pseudonymIndicator [10] NULL OPTIONAL, + h-gmlc-address [11] GSN-Address OPTIONAL, + locationEstimate [12] Ext-GeographicalInformation OPTIONAL, + velocityEstimate [13] VelocityEstimate OPTIONAL, + referenceNumber [14] LCS-ReferenceNumber OPTIONAL, + periodicLDRInfo [15] PeriodicLDRInfo OPTIONAL, + locationUpdateRequest [16] NULL OPTIONAL, + sequenceNumber [17] SequenceNumber OPTIONAL, + terminationCause [18] TerminationCause OPTIONAL, + mo-lrShortCircuit [19] NULL OPTIONAL, + ganssAssistanceData [20] GANSSAssistanceData OPTIONAL, + multiplePositioningProtocolPDUs [21] MultiplePositioningProtocolPDUs OPTIONAL, + locationInfo [22] Location-Info OPTIONAL } +-- The parameter locationMethod shall be included if and only if the molr-Type is set to value +-- deCipheringKeys or assistanceData. +-- The parameter gpsAssistanceData shall be included if and only if the molr-Type is set to value +-- assistanceData and locationMethod is set to value assistedGPS or assistedGPSandGANSS. +-- The parameter ganssAssistanceData shall be included if and only if the molr-Type is set to value +-- assistanceData and locationMethod is set to value assistedGANSS or assistedGPSandGANSS. +-- supportedGADShapes shall not be included for deferred MO-LR initiation or deferred MO-LR or MT-LR +-- responses +-- multiplePositioningProtocolPDUs may only be included for E-UTRAN access for an EPC-MO-LR. +-- locationMethod shall not be included for E-UTRAN access. +-- gpsAssistanceData shall not be included for E-UTRAN access. +-- velocityEstimate shall not be included for E-UTRAN access. +-- periodicLDRInfo shall not be included for E-UTRAN access. +-- locationUpdateRequest shall not be included for E-UTRAN access. +-- sequenceNumber shall not be included for E-UTRAN access. +-- mo-lrShortCircuit shall not be included for E-UTRAN access. +-- ganssAssistanceData shall not be included for E-UTRAN access. +-- locationInfo shall be included if available for E-UTRAN access for a periodic and triggered +-- event report. + + + +MOLR-Type::= ENUMERATED { + locationEstimate (0), + assistanceData (1), + deCipheringKeys (2), + ... , + deferredMo-lrTTTPInitiation (3), + deferredMo-lrSelfLocationInitiation (4), + deferredMt-lrOrmo-lrTTTPLocationEstimate (5), + deferredMt-lrOrmo-lrCancellation (6), + periodicEvent (7), + enteringAreaEvent (8), + leavingAreaEvent (9), + beingInsideAreaEvent (10), + motionEvent (11), + maximumIntervalExpirationEvent (12) } +-- exception handling: +-- an unrecognized value shall be rejected by the receiver with a return error cause of +-- unexpected data value. +-- For E-UTRAN access, only locationEstimate, assistanceData, periodicEvent, +-- deferredMt-lrOrmo-lrCancellation, enteringAreaEvent, leavingAreaEvent, beingInsideAreaEvent, +-- motionEvent or maximumIntervalExpirationEvent shall be included + + +LocationMethod::= ENUMERATED { + msBasedEOTD (0), + msAssistedEOTD (1), + assistedGPS (2), + ..., + msBasedOTDOA (3), + assistedGANSS (4), + assistedGPSandGANSS (5) + } +-- exception handling: +-- When this parameter is received with value msBasedEOTD or msAssistedEOTD and the MS +-- is camped on an UMTS Service Area then the receiver shall reject it +-- with a return error cause of unexpected data value. +-- When this parameter is received with value msBasedOTDOA and the MS +-- is camped on a GSM Cell then the receiver shall reject it with a return error cause of +-- unexpected data value. +-- an unrecognized value shall be rejected by the receiver with a return error cause of +-- unexpected data value. + +GPSAssistanceData::= OCTET STRING (SIZE (1..38)) +-- Octets 1 to 38 are coded in the same way as the octets 3 to 7+2n of Requested GPS Data IE +-- in 3GPP TS 49.031 [14]. + +GANSSAssistanceData::= OCTET STRING (SIZE (1..40)) +-- Octets 1 to 40 are coded in the same way as the octets 3 to 9+2n of Requested GANSS Data IE +-- in 3GPP TS 49.031 [14] . + +TerminationCause ::= ENUMERATED { + subscriberTermination (0), + uETermination (1), + ...} + +MultiplePositioningProtocolPDUs ::= SEQUENCE (SIZE (1..maxNumLPPMsg)) OF PositioningProtocolPDU + +PositioningProtocolPDU ::= OCTET STRING +-- PositioningProtocolPDU contains a LPP message defined in 3GPP TS 36.355 [17]. + +maxNumLPPMsg INTEGER ::= 3 + + + +LCS-MOLRRes::= SEQUENCE { + locationEstimate [0] Ext-GeographicalInformation OPTIONAL, + decipheringKeys [1] DecipheringKeys OPTIONAL, + ..., + add-LocationEstimate [2] Add-GeographicalInformation OPTIONAL, + velocityEstimate [3] VelocityEstimate OPTIONAL, + referenceNumber [4] LCS-ReferenceNumber OPTIONAL, + h-gmlc-address [5] GSN-Address OPTIONAL, + mo-lrShortCircuit [6] NULL OPTIONAL, + reportingPLMNList [7] ReportingPLMNList OPTIONAL + } +-- Parameters locationEstimate or add-LocationEstimate (one but not both) +-- shall be included if and only if the +-- molr-Type in LocationRequestArg was set to value locationEstimate. +-- Parameter add-LocationEstimate shall not be included if the supportedGADShapes +-- parameter was not received in the LCS-MOLRArg. +-- The locationEstimate and the add-locationEstimate parameters shall not be sent if +-- the supportedGADShapes parameter has been received in LCS-MOLRArg +-- and the shape encoded in locationEstimate or add-LocationEstimate is not marked +-- as supported in supportedGADShapes. In such a case LCS-MOLRArg +-- shall be rejected with error FacilityNotSupported with additional indication +-- shapeOfLocationEstimateNotSupported. +-- Parameter decipheringKeys shall be included if and only if the molr-Type +-- in LocationRequestArg was set to value deCipheringKeys. +-- Parameter velocityEstimate may only be included if the lcs-QoS in LCS-MOLRarg includes +-- velocityRequest +-- decipheringKeys shall not be included for E-UTRAN access. +-- referenceNumber shall not be included for E-UTRAN access. +-- h-gmlc-address shall not be included for E-UTRAN access. +-- mo-lrShortCircuit shall not be included for E-UTRAN access. +-- reportingPLMNList shall not be included for E-UTRAN access. + + + +DecipheringKeys::= OCTET STRING (SIZE (15)) +-- Octets in DecipheringKeys are coded in the same way as the octets 3 to 17 of Deciphering Key IE +-- in 3GPP TS 49.031 [14]. I.e. these octets contain Current Deciphering Key, Next Deciphering Key and +-- Ciphering Key Flag. +LCS-AreaEventRequestArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber, + h-gmlc-address [1] GSN-Address, + deferredLocationEventType [3] DeferredLocationEventType, + areaEventInfo [4] AreaEventInfo, + ... } + +-- the msAvailableValue in the DeferredLocationEventType is not applicable for this procedure + +LCS-AreaEventReportArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber, + h-gmlc-address [1] GSN-Address, + ... } + +LCS-AreaEventCancellationArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber, + h-gmlc-address [1] GSN-Address, + ... } + + +LCS-PeriodicLocationRequestArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber, + periodicLDRInfo [1] PeriodicLDRInfo, + lcsClientExternalID [2] LCSClientExternalID, + qoS [3] LCS-QoS OPTIONAL, + h-gmlc-address [4] GSN-Address OPTIONAL, + mo-lrShortCircuit [5] NULL OPTIONAL, + reportingPLMNList [6] ReportingPLMNList OPTIONAL, + ... } + + +LCS-PeriodicLocationRequestRes ::= SEQUENCE { + mo-lrShortCircuit [0] NULL OPTIONAL, + ... } + + +LCS-LocationUpdateArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber OPTIONAL, + add-LocationEstimate[1] Add-GeographicalInformation OPTIONAL, + velocityEstimate [2] VelocityEstimate OPTIONAL, + sequenceNumber [3] SequenceNumber OPTIONAL, + ... } +-- add-LocationEstimate shall be included if and only if a location estimate was successfully +-- transferred towards an External LCS Client or was successfully obtained for UE self location +-- velocityEstimate may only be included if add-LocationEstimate is included + +LCS-LocationUpdateRes ::= SEQUENCE { + terminationCause [0] TerminationCause OPTIONAL, + ... } + +LCS-PeriodicLocationCancellationArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber, + h-gmlc-address [1] GSN-Address OPTIONAL, + ... } + +LCS-PeriodicTriggeredInvokeArg ::= SEQUENCE { + referenceNumber [0] LCS-ReferenceNumber, + h-gmlc-address [1] GSN-Address, + qoS [2] LCS-QoS OPTIONAL, + reportingPLMNList [3] ReportingPLMNList OPTIONAL, + periodicLocation [4] PeriodicLocation OPTIONAL, + areaEventReporting [5] AreaEventReporting OPTIONAL, + motionEventReporting [6] MotionEventReporting OPTIONAL, + ... } +-- Only one of periodicLocation, areaEventReporting and motionEventReporting shall be included. +-- responseTime and velocityRequest are not applicable in LCS-QoS. +-- reportingPLMNList provides a list of PLMNs in which event reporting is allowed. + +PeriodicLocation ::= SEQUENCE { + periodicLDRInfo [0] PeriodicLDRInfo, + ... } + +AreaEventReporting ::= SEQUENCE { + deferredLocationEventType [0] DeferredLocationEventType, + areaList [1] AreaList, + occurrenceInfo [2] OccurrenceInfo OPTIONAL, + intervalTime [3] IntervalTime OPTIONAL, + maximumInterval [4] MaximumInterval OPTIONAL, + samplingInterval [5] SamplingInterval OPTIONAL, + duration [6] Duration OPTIONAL, + locationInfo [7] Location-Info OPTIONAL, + ... } +-- msAvailable and periodicLDR in DeferredLocationEventType are not applicable. +-- intervalTime and maximumInterval are not applicable when OccurenceInfo is present with +-- the value of oneTimeEvent. + +AreaList ::= SEQUENCE SIZE (1..maxAreas) OF Area + +maxAreas INTEGER ::= 250 + +Area ::= SEQUENCE { + areaType [0] AreaType, + areaIdentification [1] AreaIdentification, + ...} + +AreaType ::= ENUMERATED { + trackingArea (0), + ecgi (1), + ... } + +AreaIdentification ::= OCTET STRING (SIZE (5..7)) +-- The internal structure is defined as follows: +-- octet 1 bits 4321 Mobile Country Code 1st digit +-- bits 8765 Mobile Country Code 2nd digit +-- octet 2 bits 4321 Mobile Country Code 3rd digit +-- bits 8765 Mobile Network Code 3rd digit if 3 digit MNC included +-- or filler (1111) +-- octet 3 bits 4321 Mobile Network Code 1st digit +-- bits 8765 Mobile Network Code 2nd digit +-- octets 4 and 5 Tracking Area Code for a Tracking Area (bit 8 of octet 4 is the most significant bit and bit 1 of octet 5 the least significant bit) +-- octets 4 until 7 E-UTRAN Cell Identity for an ECGI (bit 8 of octet 4 is the most significant bit and bit 5 of octet 7 the least significant bit) + +MaximumInterval ::= INTEGER (1..86400) +-- maximum time interval between consecutive event reports in seconds. + +SamplingInterval ::= INTEGER (1..3600) +-- maximum time interval between consecutive evaluations by a UE of a trigger event, +-- in seconds. + +Duration ::= INTEGER (1..8640000) +-- maximum duration of event reporting by a UE, in seconds + +Location-Info ::= BIT STRING { + locationEstimate (0) } (SIZE (1..32)) +-- A bit set to one indicates that the corresponding requirement is present. +-- A bit set to zero indicates that the corresponding requirement is absent. +-- The locationEstimate is a requirement to provide the UE location for an event report to +-- the external client, but the location may be provided by either the UE or network. + +MotionEventReporting ::= SEQUENCE { + linearDistance [0] LinearDistance, + occurrenceInfo [1] OccurrenceInfo OPTIONAL, + intervalTime [2] IntervalTime OPTIONAL, + maximumInterval [3] MaximumInterval OPTIONAL, + samplingInterval [4] SamplingInterval OPTIONAL, + duration [5] Duration OPTIONAL, + locationInfo [6] Location-Info OPTIONAL, + ... } +-- intervalTime and maximumInterval are not applicable when OccurenceInfo is present with +-- the value of oneTimeEvent. + +LinearDistance ::= INTEGER (1..10000) +-- the minimum straight line distance moved by a UE to trigger a motion event report, in meters. + +LCS-PeriodicTriggeredInvokeRes ::= SEQUENCE { + ...} + + +END diff --git a/epan/dissectors/asn1/gsm_map/SS-Errors.asn b/epan/dissectors/asn1/gsm_map/SS-Errors.asn new file mode 100644 index 00000000..cb063d6d --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/SS-Errors.asn @@ -0,0 +1,44 @@ +-- 3GPP TS 24.080 V15.0.0 (2018-06) +-- 4.3.1 Errors ASN.1 specification +-- The following ASN.1 module provides an ASN.1 specification of errors. Errors from MAP are imported in the SS Protocol module in subclause 4.5. The module defines errors by allocating them a local value. For the involved errors the same local values as in MAP are allocated. + +SS-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) + ss-Errors (1) version12 (12)} + +DEFINITIONS ::= + +BEGIN + +IMPORTS + +ERROR FROM +Remote-Operations-Information-Objects {joint-iso-itu-t remote-operations(4) + informationObjects(5) version1(0)}; + +-- The MAP errors +-- unknownSubscriber, bearerServiceNotProvisioned, teleserviceNotProvisioned, +-- illegalSS-Operation, ss-ErrorStatus, ss-NotAvailable, ss-SubscriptionViolation, +-- ss-Incompatibility, systemFailure, dataMissing, unexpectedDataValue, facilityNotSupported, +-- pw-RegistrationFailure, negativePW-Check, callBarred, numberOfPW-AttemptsViolation, +-- absentSubscriber, illegalSubscriber, illegalEquipment, ussd-Busy, unknownAlphabet, +-- forwardingViolation, forwardingFailed, resourceLimitation +-- are imported from MAP-Errors in SS-Protocol module. + +-- errors definition +resourcesNotAvailable ERROR ::= { + CODE local:127 } +maxNumberOfMPTY-ParticipantsExceeded ERROR ::= { + CODE local:126 } +invalidDeflectedToNumber ERROR ::= { + CODE local:125 } +specialServiceCode ERROR ::= { + CODE local:124 } +deflectionToServedSubscriber ERROR ::= { + CODE local:123 } +rejectedByNetwork ERROR ::= { + CODE local:122 } +rejectedByUser ERROR ::= { + CODE local:121 } + +END diff --git a/epan/dissectors/asn1/gsm_map/SS-Operations.asn b/epan/dissectors/asn1/gsm_map/SS-Operations.asn new file mode 100644 index 00000000..a8e1d047 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/SS-Operations.asn @@ -0,0 +1,311 @@ +-- 3GPP TS 24.080 V15.0.0 (2018-06) +-- 4.2 Operation types +SS-Operations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) + ss-Operations (0) version12 (12)} + +DEFINITIONS ::= + +BEGIN + +EXPORTS + +-- exports operations + +-- operations defined in this specification +processUnstructuredSS-Data, notifySS, forwardChargeAdvice, forwardCUG-Info, buildMPTY, holdMPTY, retrieveMPTY, splitMPTY, explicitCT, accessRegisterCCEntry, callDeflection, userUserService, +lcs-LocationNotification, lcs-MOLR, lcs-AreaEventRequest, lcs-AreaEventReport, lcs-AreaEventCancellation, lcs-PeriodicLocationRequest, lcs-LocationUpdate, lcs-PeriodicLocationCancellation, lcs-PeriodicTriggeredInvoke; + +IMPORTS + +OPERATION FROM +Remote-Operations-Information-Objects { + joint-iso-itu-t remote-operations(4) + informationObjects(5) version1(0)} + +-- The MAP operations: +-- registerSS, eraseSS, activateSS, deactivateSS, interrogateSS, registerPassword, +-- getPassword, processUnstructuredSS-Request, unstructuredSS-Request, unstructuredSS-Notify +-- forwardCheckSS-Indication +-- are imported from MAP-Operations in SS-Protocol module. + +-- imports SS-data types +NotifySS-Arg, +ForwardChargeAdviceArg, +ForwardCUG-InfoArg, +SS-UserData, +AccessRegisterCCEntryArg, +CallDeflectionArg, +UserUserServiceArg, +LocationNotificationArg, +LocationNotificationRes, +LCS-MOLRArg, +LCS-MOLRRes, +LCS-AreaEventRequestArg, +LCS-AreaEventReportArg, +LCS-AreaEventCancellationArg, +LCS-PeriodicLocationRequestArg, +LCS-PeriodicLocationRequestRes, +LCS-LocationUpdateArg, +LCS-LocationUpdateRes, +LCS-PeriodicLocationCancellationArg, +LCS-PeriodicTriggeredInvokeArg, +LCS-PeriodicTriggeredInvokeRes + + +FROM SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) + ss-DataTypes (2) version12 (12)} + +-- imports MAP-SS-data types +RegisterCC-EntryRes +FROM MAP-SS-DataTypes { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Network (1) modules (3) map-SS-DataTypes (14) version12 (12)} + +-- imports MAP-errors +illegalSS-Operation, ss-ErrorStatus, ss-NotAvailable, ss-SubscriptionViolation, +ss-Incompatibility, systemFailure, facilityNotSupported, callBarred, unexpectedDataValue, shortTermDenial, longTermDenial, dataMissing, forwardingViolation, forwardingFailed, positionMethodFailure, resourceLimitation +FROM MAP-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-Errors (10) version12 (12)} + +-- imports SS-Errors +resourcesNotAvailable, maxNumberOfMPTY-ParticipantsExceeded, deflectionToServedSubscriber, invalidDeflectedToNumber, specialServiceCode, rejectedByUser, rejectedByNetwork +FROM SS-Errors { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) + ss-Errors (1) version12 (12)} +; + +-- operations definition + +processUnstructuredSS-Data OPERATION ::= { -- Timer T(PUSSD)= 15s to 30s + ARGUMENT SS-UserData + RESULT SS-UserData + -- optional + ERRORS { + systemFailure | + unexpectedDataValue} + CODE local:19 } + +notifySS OPERATION ::= { + ARGUMENT NotifySS-Arg + CODE local:16 } + +forwardChargeAdvice OPERATION ::= { -- Timer T(AoC)= 1s to 40s + ARGUMENT ForwardChargeAdviceArg + RETURN RESULT TRUE + CODE local:125 } + +forwardCUG-Info OPERATION ::= { + ARGUMENT ForwardCUG-InfoArg + CODE local:120 } + +buildMPTY OPERATION ::= { -- Timer T(BuildMPTY)= 5s to 30s + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-NotAvailable | + ss-Incompatibility | + systemFailure | + resourcesNotAvailable | + maxNumberOfMPTY-ParticipantsExceeded} + CODE local:124 } + +holdMPTY OPERATION ::= { -- Timer T(HoldMPTY)= 5s to 30s + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-Incompatibility | + facilityNotSupported | + systemFailure} + CODE local:123 } + +retrieveMPTY OPERATION ::= { -- Timer T(RetrieveMPTY)= 5s to 30s + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-Incompatibility | + facilityNotSupported | + systemFailure} + CODE local:122 } + +splitMPTY OPERATION ::= { -- Timer T(SplitMPTY)= 5s to 30s + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-Incompatibility | + facilityNotSupported | + systemFailure} + CODE local:121 } + +explicitCT OPERATION ::= { -- Timer T(ECT)= 5s to 15s + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-NotAvailable | + ss-Incompatibility | + facilityNotSupported | + systemFailure | + resourcesNotAvailable | + callBarred} + CODE local:126 } + +accessRegisterCCEntry OPERATION ::= { -- Timer T(AccRegCCEntry)= 30s + ARGUMENT AccessRegisterCCEntryArg + RESULT RegisterCC-EntryRes + ERRORS { + systemFailure | + dataMissing | + unexpectedDataValue | + callBarred | + illegalSS-Operation | + ss-ErrorStatus | + ss-Incompatibility | + shortTermDenial | + longTermDenial | + facilityNotSupported} + CODE local:119 } + +-- the timer value is defined by T308, see also in TS 24.008 for definition of timer T308 + +callDeflection OPERATION ::= { -- Timer T(CD)= 30s + ARGUMENT CallDeflectionArg + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-NotAvailable | + ss-Incompatibility | + facilityNotSupported | + systemFailure | + resourcesNotAvailable | + forwardingViolation | + callBarred | + deflectionToServedSubscriber | + invalidDeflectedToNumber | + specialServiceCode | + forwardingFailed} + CODE local:117 } + +-- the timer value is defined by T305, see also in TS 24.008 for definition of timer T305 +-- extensionContainer shall not be used with this operation + +userUserService OPERATION ::= { -- Timer T(UUS3)= 10s + ARGUMENT UserUserServiceArg + RETURN RESULT TRUE + ERRORS { + illegalSS-Operation | + ss-ErrorStatus | + ss-NotAvailable | + ss-Incompatibility | + facilityNotSupported | + systemFailure | + resourcesNotAvailable | + rejectedByNetwork | + rejectedByUser} + CODE local:118 } + +-- The timer value for UUS3 is 10s; it is applicable only if UUS3 is activated by FACILITY +-- message. If UUS service (UUS1, UUS2 or UUS3) is activated by SETUP message, no timers are +-- needed. In those cases Return Result or Return Error must be received within certain call +-- control messages, see 3GPP TS 24.087. +-- extensionContainer shall not be used with this operation. + + +lcs-LocationNotification OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LocationNotificationArg + RESULT LocationNotificationRes + ERRORS { + systemFailure | + unexpectedDataValue} + CODE local:116 } + + +lcs-MOLR OPERATION ::= { -- Timer T(LCSL)= 10s to 300s + ARGUMENT LCS-MOLRArg + RESULT LCS-MOLRRes + ERRORS { + systemFailure | + unexpectedDataValue | + dataMissing | + facilityNotSupported | + ss-SubscriptionViolation | + positionMethodFailure} + CODE local:115 } + + +lcs-AreaEventRequest OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LCS-AreaEventRequestArg + RETURN RESULT TRUE + ERRORS { + systemFailure | + facilityNotSupported | + unexpectedDataValue} + CODE local:114 } + + +lcs-AreaEventReport OPERATION ::= { -- Timer T(LCSL)= 10s to 300s + ARGUMENT LCS-AreaEventReportArg + RETURN RESULT TRUE + ERRORS { + systemFailure | + unexpectedDataValue | + facilityNotSupported} + CODE local:113 } + + +lcs-AreaEventCancellation OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LCS-AreaEventCancellationArg + RETURN RESULT TRUE + ERRORS { + systemFailure | + facilityNotSupported | + unexpectedDataValue} + CODE local:112 } + +lcs-PeriodicLocationRequest OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LCS-PeriodicLocationRequestArg + RESULT LCS-PeriodicLocationRequestRes + ERRORS { + systemFailure | + facilityNotSupported | + unexpectedDataValue | + dataMissing } + CODE local: 111 } + +lcs-LocationUpdate OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LCS-LocationUpdateArg + RESULT LCS-LocationUpdateRes + ERRORS { + systemFailure | + unexpectedDataValue} + CODE local: 110 } + +lcs-PeriodicLocationCancellation OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LCS-PeriodicLocationCancellationArg + RETURN RESULT TRUE + ERRORS { + systemFailure | + unexpectedDataValue} + CODE local: 109 } + + +lcs-PeriodicTriggeredInvoke OPERATION ::= { -- Timer T(LCSN)= 10s to 20s + ARGUMENT LCS-PeriodicTriggeredInvokeArg + RESULT LCS-PeriodicTriggeredInvokeRes + ERRORS { + systemFailure | + facilityNotSupported | + unexpectedDataValue | + dataMissing | + resourceLimitation } + CODE local: 108 } + +END + diff --git a/epan/dissectors/asn1/gsm_map/SS-Protocol.asn b/epan/dissectors/asn1/gsm_map/SS-Protocol.asn new file mode 100644 index 00000000..517edb63 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/SS-Protocol.asn @@ -0,0 +1,53 @@ +-- 3GPP TS 24.080 V15.0.0 (2018-06) +-- 4.5 Operations and errors implementation +-- For the actual implementation of supplementary services, operations and errors have to be defined by value. The following ASN.1 module, imports operation from the ASN.1 module described in subclause 4.2 and operations and errors from MAP. + +SS-Protocol { + itu-t identified-organization (4) etsi (0) mobileDomain (0) + gsm-Access (2) modules (3) ss-Protocol (3) version12 (12)} + +DEFINITIONS ::= + +BEGIN + +IMPORTS + +OPERATION +FROM Remote-Operations-Information-Objects { +joint-iso-itu-t remote-operations(4) informationObjects(5) version1(0)} + +-- imports operations + +-- imports operation from MAP-MobileServiceOperations +forwardCheckSS-Indication +FROM MAP-MobileServiceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-MobileServiceOperations (5) version12 (12)} + +-- imports operations from MAP-SupplementaryServiceOperations +registerSS, eraseSS, activateSS, deactivateSS, interrogateSS, registerPassword, getPassword, +processUnstructuredSS-Request, unstructuredSS-Request, unstructuredSS-Notify, eraseCC-Entry +FROM MAP-SupplementaryServiceOperations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) + map-SupplementaryServiceOperations (8) version12 (12)} + +-- imports operations from SS-Operations +processUnstructuredSS-Data, notifySS, forwardChargeAdvice, buildMPTY, holdMPTY, retrieveMPTY, +splitMPTY, explicitCT, forwardCUG-Info, accessRegisterCCEntry, callDeflection, userUserService, +lcs-LocationNotification, lcs-MOLR, lcs-AreaEventRequest, lcs-AreaEventReport, lcs-AreaEventCancellation, lcs-PeriodicLocationRequest, lcs-LocationUpdate, lcs-PeriodicLocationCancellation +FROM SS-Operations { + itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) + ss-Operations (0) version12 (12)} + +; + +Supported-SS-Operations OPERATION ::= {forwardCheckSS-Indication | registerSS | eraseSS | + activateSS | deactivateSS | interrogateSS | registerPassword | getPassword | + processUnstructuredSS-Request | unstructuredSS-Request | unstructuredSS-Notify | eraseCC-Entry | + processUnstructuredSS-Data | notifySS | forwardChargeAdvice | buildMPTY | holdMPTY | + retrieveMPTY | splitMPTY | explicitCT | forwardCUG-Info | accessRegisterCCEntry | + callDeflection | userUserService | lcs-LocationNotification | lcs-MOLR | lcs-AreaEventRequest | lcs-AreaEventReport | lcs-AreaEventCancellation | lcs-PeriodicLocationRequest | lcs-LocationUpdate | lcs-PeriodicLocationCancellation | lcs-PeriodicTriggeredInvoke } + + + +END diff --git a/epan/dissectors/asn1/gsm_map/gsm_map.cnf b/epan/dissectors/asn1/gsm_map/gsm_map.cnf new file mode 100644 index 00000000..4547facd --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/gsm_map.cnf @@ -0,0 +1,1213 @@ +#.OPT +-b +#-d satcom +#-s packet-gsm_map-tmp +#-k +-o gsm_map +#.END + +#.MODULE +MAP-BS-Code gsm_map +MAP-TS-Code gsm_map +MAP-SS-Code gsm_map +MAP-ExtensionDataTypes gsm_map +MAP-CommonDataTypes gsm_map + +MAP-SS-DataTypes gsm_map.ss +MAP-OM-DataTypes gsm_map.om +MAP-ER-DataTypes gsm_map.er +MAP-SM-DataTypes gsm_map.sm +MAP-MS-DataTypes gsm_map.ms +MAP-LCS-DataTypes gsm_map.lcs +MAP-GR-DataTypes gsm_map.gr +MAP-CH-DataTypes gsm_map.ch + +MAP-Errors gsm_map +MAP-LocationServiceOperations gsm_map +MAP-Group-Call-Operations gsm_map +MAP-ShortMessageServiceOperations gsm_map +MAP-SupplementaryServiceOperations gsm_map +MAP-CallHandlingOperations gsm_map +MAP-OperationAndMaintenanceOperations gsm_map +MAP-MobileServiceOperations gsm_map +MAP-Protocol gsm_map +MAP-DialogueInformation gsm_map.dialogue +MAP-ApplicationContexts gsm_map +SS-DataTypes gsm_ss +SS-Operations gsm_ss +DummyMAP gsm_old +EricssonMAP gsm_map.ericsson + +Remote-Operations-Information-Objects ROS + +#.NO_EMIT ONLY_VALS +CallBarredParam +PW-RegistrationFailureCause +SystemFailureParam +ExtensionType +NumberPorted/_untag + +#.OMIT_ASSIGNMENT +Code +Priority +CommonComponentId +GuidanceInfo +SS-InfoList +# Omitting SubscriberData makes CONTENT OF fail and InsertSubscriberDataArg will not get all its tags +# Not yet used Nokia extensions +SS-DataEmoInExt +EmoInCategoryKey +ANSIIsdArgExt +ANSISriResExt +PrefCarrierIdList +USSD-Extension +CosInfo +AnyTimePO-BarringArg +AnyTimePO-BarringRes +CarrierIdCode +COS-FeatureList +GprsBarring +COS-Feature +CustomerGroupID +SubGroupID +ClassOfServiceID +#.END +#.PDU +LCS-ClientID +ISDN-AddressString + +#.USE_VALS_EXT +GSMMAPOperationLocalvalue +OperationLocalvalue + +#.EXPORTS +AddressString +Add-GeographicalInformation +AgeOfLocationInformation +AlertingPattern +AreaEventInfo +BasicServiceCode +CallReferenceNumber +CCBS-Feature +CellGlobalIdOrServiceAreaIdOrLAI +CellGlobalIdOrServiceAreaIdFixedLength +CUG-CheckInfo +CUG-Index +CUG-Interlock +CUG-Info +CurrentPassword +D-CSI +DeferredLocationEventType +DefaultGPRS-Handling +DefaultSMS-Handling +EraseCC-EntryArg +EraseCC-EntryRes +Ext-BasicServiceCode +Ext-ForwOptions +Ext-GeographicalInformation EXTERN WS_DLL +Ext-NoRepCondTime +Ext-QoS-Subscribed +Ext2-QoS-Subscribed +Ext3-QoS-Subscribed +ExtensionContainer +ExternalSignalInfo +ForwardingOptions +GeographicalInformation +GetPasswordArg +GlobalCellId EXTERN WS_DLL +GPRSChargingID +GPRSMSClass +GSMMAPLocalErrorcode +GSN-Address +IMEI +IMSI EXTERN WS_DLL +InterrogateSS-Res +ISDN-AddressString EXTERN WS_DLL +ISDN-AddressString_PDU EXTERN WS_DLL +ISDN-SubaddressString +LAIFixedLength +LCSClientExternalID +LCS-ClientID +LCS-ClientID_PDU +LCSClientInternalID +LCSClientName +LCSClientType +LCSRequestorID +LCSCodeword +LCS-Priority +LCSServiceTypeID +LCS-ReferenceNumber +LCS-QoS +LocationInformation +LocationMethod +LocationType +LSAIdentity +MS-Classmark2 +NAEA-CIC +NetworkResource +NewPassword +NotificationToMSUser +O-CSI +O-BcsmCamelTDPCriteriaList +OfferedCamel4Functionalities +PositionMethodFailure-Diagnostic +ProtectedPayload +QoS-Subscribed +RAIdentity +RegisterCC-EntryRes +RegisterSS-Arg +SM-RP-DA +SM-RP-OA +SubscriberState +SecurityHeader +ServiceKey +SupportedCamelPhases +SupportedGADShapes +SuppressionOfAnnouncement +SS-Code +SS-Status +SS-Info +SS-ForBS-Code +TBCD-STRING +UnauthorizedLCSClient-Diagnostic +USSD-DataCodingScheme +USSD-String +USSD-Arg +USSD-Res +UU-Data +VelocityEstimate +#.END +#.REGISTER +MAP-DialoguePDU B "0.4.0.0.1.1.1.1" "map-DialogueAS" + +# This table creates the value_sting to name GSM MAP operation codes and errors +# in file packet-camel-table.c which is included in the template file +# +#.TABLE_BODY OPERATION + { %(&operationCode)s, "%(_ident)s" }, +#.END + +#.TABLE2_BODY ERROR + { %(&errorCode)s, "%(_ident)s" }, +#.END + + +# Conformance for ROS stuff + +#.FN_BODY InvokeParameter + offset = dissect_invokeData(tree, tvb, offset, actx); + +#.FN_BODY ReturnResultParameter + offset = dissect_returnResultData(tree, tvb, offset, actx); + +#.FN_BODY ReturnErrorParameter + offset = dissect_returnErrorData(tree, tvb, offset, actx); + +#.FN_PARS GSMMAPOperationLocalvalue + + VAL_PTR = &opcode + +#.FN_BODY GSMMAPOperationLocalvalue + const char *opcode_string; + +%(DEFAULT_BODY)s + /* Retrieve opcode string and eventually update item value */ + opcode_string = gsm_map_opr_code(opcode, actx->created_item); + col_append_str(actx->pinfo->cinfo, COL_INFO, opcode_string); + col_append_str(actx->pinfo->cinfo, COL_INFO, " "); + +#.FN_PARS GSMMAPLocalErrorcode + + VAL_PTR = &errorCode +# End ROS +#---------------------------------------------------------------------------------------- + +#.FN_BODY PrivateExtension/extId FN_VARIANT = _str VAL_PTR = &actx->external.direct_reference +%(DEFAULT_BODY)s + actx->external.direct_ref_present = (actx->external.direct_reference != NULL) ? TRUE : FALSE; + +#.FN_BODY PrivateExtension/extType + proto_tree *ext_tree; + ext_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_gsm_map_extension_data, NULL, "Extension Data"); + if (actx->external.direct_ref_present){ + offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, ext_tree, NULL); + }else{ + call_data_dissector(tvb, actx->pinfo, ext_tree); + offset = tvb_reported_length_remaining(tvb,offset); + } + +#.FN_PARS AccessNetworkProtocolId + + VAL_PTR = &AccessNetworkProtocolId + +#.FN_BODY AddressString VAL_PTR = ¶meter_tvb + + tvbuff_t *parameter_tvb; + proto_tree *subtree; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_isdn_address_string); + dissect_gsm_map_msisdn(parameter_tvb, actx->pinfo , subtree); + if (!PINFO_FD_VISITED(actx->pinfo)) + actx->private_data = tvb_bytes_to_str(wmem_file_scope(), parameter_tvb, 0, tvb_captured_length(parameter_tvb)); + +#.FN_BODY IMSI VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + const char *imsi_str; + + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, ¶meter_tvb); + + if (!parameter_tvb) + return offset; + if(tvb_reported_length(parameter_tvb)==0) + return offset; + + /* Hide the octet string default printout */ + proto_item_set_hidden(actx->created_item); + imsi_str = dissect_e212_imsi(parameter_tvb, actx->pinfo, tree, + 0, tvb_reported_length(parameter_tvb), FALSE); + if (!PINFO_FD_VISITED(actx->pinfo)) + actx->private_data = wmem_strdup(wmem_file_scope(), imsi_str); + +#.FN_BODY LMSI VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; +%(DEFAULT_BODY)s + if (parameter_tvb && !PINFO_FD_VISITED(actx->pinfo)) { + actx->private_data = tvb_bytes_to_str(wmem_file_scope(), parameter_tvb, 0, tvb_captured_length(parameter_tvb)); + } + +#.FN_BODY TBCD-STRING VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + proto_tree *subtree; + + + %(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + if(tvb_reported_length(parameter_tvb)==0) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_tbcd_digits); + proto_tree_add_item(subtree, hf_gsm_map_TBCD_digits, parameter_tvb, 0, -1, ENC_KEYPAD_ABC_TBCD); + +#---------------------------------------------------------------------------------------- +#.FN_BODY LongSignalInfo VAL_PTR = ¶meter_tvb +# +#7.6.9.1 AN-apdu +#This parameter includes one or two concatenated complete 3GPP TS 25.413 or 3GPP TS 48.006 [48] messages, as +#described in 3GPP TS 23.009 and 3GPP TS 29.010. The access network protocol ID indicates that the message or +#messages are according to either 3GPP TS 48.006 [48] or 3GPP TS 25.413. For the coding of the messages see 3GPP +#TS 25.413, 3GPP TS 48.006 [48] and 3GPP TS 48.008 [49]. + + tvbuff_t *parameter_tvb; + guint8 octet; + tvbuff_t *next_tvb; + proto_tree *subtree; + gsm_map_private_info_t *gsm_map_priv; + sccp_msg_info_t *sccp_msg_info; + + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + sccp_msg_info = gsm_map_priv ? gsm_map_priv->sccp_msg_info : NULL; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LongSignalInfo); + + switch (AccessNetworkProtocolId){ + /* ts3G-48006 */ + case 1: + octet = tvb_get_guint8(parameter_tvb,0); + /* Discrimination parameter */ + proto_tree_add_item(subtree, hf_gsm_map_disc_par, parameter_tvb, 0,1,ENC_BIG_ENDIAN); + if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */ + /* Strip off discrimination and length */ + proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 1,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining(parameter_tvb, 2); + call_dissector_with_data(bssap_handle, next_tvb, actx->pinfo, subtree, sccp_msg_info); + }else if(octet==1){ + proto_tree_add_item(subtree, hf_gsm_map_dlci, parameter_tvb, 1,1,ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_len, parameter_tvb, 2,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining(parameter_tvb, 3); + call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree); + } + break; + /* ts3G-25413 */ + case 2: + call_dissector(ranap_handle, parameter_tvb, actx->pinfo, tree); + break; + default: + break; + + } +# Set SENT/RECEIVED depending if ISDN-AddressString or AddressString is used. +# as it's a CHOICE only one is present. +#.FN_BODY SM-RP-OAold/serviceCentreAddressOA + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_SENT; +%(DEFAULT_BODY)s + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_oa_id = GSM_MAP_SM_RP_OA_SERVICE_CENTER_ADDRESS; + gsm_map_pi->sm_rp_oa_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + +#.FN_BODY SM-RP-OA/serviceCentreAddressOA + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_SENT; +%(DEFAULT_BODY)s + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_oa_id = GSM_MAP_SM_RP_OA_SERVICE_CENTER_ADDRESS; + gsm_map_pi->sm_rp_oa_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + +#.FN_BODY SM-RP-DAold/imsi + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_SENT; +%(DEFAULT_BODY)s + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_da_id = GSM_MAP_SM_RP_DA_IMSI; + gsm_map_pi->sm_rp_da_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + +#.FN_BODY SM-RP-DAold/lmsi + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_SENT; +%(DEFAULT_BODY)s + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_da_id = GSM_MAP_SM_RP_DA_LMSI; + gsm_map_pi->sm_rp_da_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + +#.FN_BODY SM-RP-DA/imsi + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_SENT; +%(DEFAULT_BODY)s + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_da_id = GSM_MAP_SM_RP_DA_IMSI; + gsm_map_pi->sm_rp_da_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + +#.FN_BODY SM-RP-DA/lmsi + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_SENT; +%(DEFAULT_BODY)s + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_da_id = GSM_MAP_SM_RP_DA_LMSI; + gsm_map_pi->sm_rp_da_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + +#.FN_BODY SM-RP-OAold/msisdn + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_RECV; +%(DEFAULT_BODY)s + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_oa_id = GSM_MAP_SM_RP_OA_MSISDN; + gsm_map_pi->sm_rp_oa_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + +#.FN_BODY SM-RP-OA/msisdn + actx->pinfo->p2p_dir = P2P_DIR_RECV; +%(DEFAULT_BODY)s + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_oa_id = GSM_MAP_SM_RP_OA_MSISDN; + gsm_map_pi->sm_rp_oa_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + +#.FN_BODY SM-RP-DAold/serviceCentreAddressDA + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_RECV; +%(DEFAULT_BODY)s + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_da_id = GSM_MAP_SM_RP_DA_SERVICE_CENTER_ADDRESS; + gsm_map_pi->sm_rp_da_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + +#.FN_BODY SM-RP-DA/serviceCentreAddressDA + actx->private_data = NULL; + actx->pinfo->p2p_dir = P2P_DIR_RECV; +%(DEFAULT_BODY)s + if (actx->private_data) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, TRUE); + gsm_map_pi->sm_rp_da_id = GSM_MAP_SM_RP_DA_SERVICE_CENTER_ADDRESS; + gsm_map_pi->sm_rp_da_str = (const gchar*)actx->private_data; + actx->private_data = NULL; + } + +#.FN_BODY SM-RP-OAold/noSM-RP-OA +%(DEFAULT_BODY)s + if (!PINFO_FD_VISITED(actx->pinfo)) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, FALSE); + gsm_map_packet_info_t *prev_packet_info = gsm_map_get_matching_tcap_info(actx); + if (prev_packet_info) { + gsm_map_pi->sm_rp_oa_id = prev_packet_info->sm_rp_oa_id; + gsm_map_pi->sm_rp_oa_str = wmem_strdup(wmem_file_scope(), prev_packet_info->sm_rp_oa_str); + } + } + +#.FN_BODY SM-RP-OA/noSM-RP-OA +%(DEFAULT_BODY)s + if (!PINFO_FD_VISITED(actx->pinfo)) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, FALSE); + gsm_map_packet_info_t *prev_packet_info = gsm_map_get_matching_tcap_info(actx); + if (prev_packet_info) { + gsm_map_pi->sm_rp_oa_id = prev_packet_info->sm_rp_oa_id; + gsm_map_pi->sm_rp_oa_str = wmem_strdup(wmem_file_scope(), prev_packet_info->sm_rp_oa_str); + } + } + +#.FN_BODY SM-RP-DAold/noSM-RP-DA +%(DEFAULT_BODY)s + if (!PINFO_FD_VISITED(actx->pinfo)) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, FALSE); + gsm_map_packet_info_t *prev_packet_info = gsm_map_get_matching_tcap_info(actx); + if (prev_packet_info) { + gsm_map_pi->sm_rp_da_id = prev_packet_info->sm_rp_da_id; + gsm_map_pi->sm_rp_da_str = wmem_strdup(wmem_file_scope(), prev_packet_info->sm_rp_da_str); + } + } + +#.FN_BODY SM-RP-DA/noSM-RP-DA +%(DEFAULT_BODY)s + if (!PINFO_FD_VISITED(actx->pinfo)) { + gsm_map_packet_info_t *gsm_map_pi = gsm_map_get_packet_info(actx, FALSE); + gsm_map_packet_info_t *prev_packet_info = gsm_map_get_matching_tcap_info(actx); + if (prev_packet_info) { + gsm_map_pi->sm_rp_da_id = prev_packet_info->sm_rp_da_id; + gsm_map_pi->sm_rp_da_str = wmem_strdup(wmem_file_scope(), prev_packet_info->sm_rp_da_str); + } + } + +#.FN_BODY SignalInfo VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + +%(DEFAULT_BODY)s + if (gsm_map_priv) + gsm_map_priv->signal_info_tvb = parameter_tvb; + + +#.FN_BODY SM-DeliveryFailureCause + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + guint8 oct; + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; +%(DEFAULT_BODY)s + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + /* Detailed diagnostic information contains either a SMS-SUBMIT-REPORT or a SMS-DELIVERY-REPORT */ + oct = tvb_get_guint8(gsm_map_priv->signal_info_tvb, 0); + actx->pinfo->p2p_dir = ((oct & 0x03) == 0) ? P2P_DIR_RECV : P2P_DIR_SENT; + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + +#.FN_BODY ForwardSM-Arg + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; +%(DEFAULT_BODY)s + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + if (gsmmap_pdu_type == 1) { + actx->pinfo->p2p_dir = P2P_DIR_SENT; + } else { + actx->pinfo->p2p_dir = P2P_DIR_RECV; + } + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + +#.FN_BODY MO-ForwardSM-Arg + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; +%(DEFAULT_BODY)s + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + actx->pinfo->p2p_dir = P2P_DIR_RECV; + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + +#.FN_BODY MO-ForwardSM-Res + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; +%(DEFAULT_BODY)s + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + actx->pinfo->p2p_dir = P2P_DIR_SENT; + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + +#.FN_BODY MT-ForwardSM-Arg + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; +%(DEFAULT_BODY)s + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + actx->pinfo->p2p_dir = P2P_DIR_SENT; + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + +#.FN_BODY MT-ForwardSM-Res + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; +%(DEFAULT_BODY)s + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + actx->pinfo->p2p_dir = P2P_DIR_RECV; + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + +#.FN_BODY MT-ForwardSM-VGCS-Arg + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; +%(DEFAULT_BODY)s + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + actx->pinfo->p2p_dir = P2P_DIR_SENT; + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + +#.FN_BODY MT-ForwardSM-VGCS-Res + /* dissect_gsm_map_SignalInfo will return parameter_tvb in actx */ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; +%(DEFAULT_BODY)s + + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + if (actx->pinfo->p2p_dir == P2P_DIR_UNKNOWN) { + actx->pinfo->p2p_dir = P2P_DIR_RECV; + } + call_dissector_only(gsm_sms_handle, gsm_map_priv->signal_info_tvb, actx->pinfo, actx->subtree.top_tree, NULL); + +#.FN_BODY SS-Status VAL_PTR = ¶meter_tvb + + tvbuff_t *parameter_tvb; + guint8 octet; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + octet = tvb_get_guint8(parameter_tvb,0); + + proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet); + if ((octet & 0x01)== 1) + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet); + + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet); + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet); + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet); + +#.FN_BODY Ext-SS-Status VAL_PTR = ¶meter_tvb + /* Note Ext-SS-Status can have more than one byte */ + + tvbuff_t *parameter_tvb; + guint8 octet; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + octet = tvb_get_guint8(parameter_tvb,0); + + proto_tree_add_uint(tree, hf_gsm_map_Ss_Status_unused, parameter_tvb, 0,1,octet); + if ((octet & 0x01)== 1) + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_q_bit, parameter_tvb, 0,1,octet); + + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_p_bit, parameter_tvb, 0,1,octet); + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_r_bit, parameter_tvb, 0,1,octet); + proto_tree_add_boolean(tree, hf_gsm_map_Ss_Status_a_bit, parameter_tvb, 0,1,octet); + +#.END + +#.FN_BODY USSD-DataCodingScheme VAL_PTR = ¶meter_tvb + /*The structure of the USSD-DataCodingScheme is defined by + * the Cell Broadcast Data Coding Scheme as described in + * TS 3GPP TS 23.038 + * TODO: Should dissect_cbs_data_coding_scheme return encoding type? - like 7bit Alphabet + */ + tvbuff_t *parameter_tvb; + proto_tree *subtree; + +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_cbs_data_coding); + dissect_cbs_data_coding_scheme(parameter_tvb, actx->pinfo, subtree, 0); + +#.FN_BODY USSD-String VAL_PTR = ¶meter_tvb + + tvbuff_t *parameter_tvb; + guint length; + proto_tree *subtree; + +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + + length = tvb_ensure_captured_length_remaining(parameter_tvb,0); + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ussd_string); + switch(sms_encoding){ + case SMS_ENCODING_7BIT: + case SMS_ENCODING_7BIT_LANG: + proto_tree_add_item(subtree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, ENC_3GPP_TS_23_038_7BITS|ENC_NA); + break; + case SMS_ENCODING_8BIT: + /* XXX - ASCII, or some extended ASCII? */ + proto_tree_add_item(subtree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, ENC_ASCII); + break; + case SMS_ENCODING_UCS2: + case SMS_ENCODING_UCS2_LANG: + proto_tree_add_item(subtree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, ENC_UCS_2|ENC_BIG_ENDIAN); + break; + default: + break; + } + +#.FN_FTR ForwardingOptions + + proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,ENC_BIG_ENDIAN); +#.FN_FTR Ext-ForwFeature/forwardingOptions + + proto_tree_add_item(tree, hf_gsm_map_notification_to_forwarding_party, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_redirecting_presentation, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_notification_to_calling_party, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_forwarding_reason, tvb, 0,1,ENC_BIG_ENDIAN); + + +#.FN_BODY PDP-Type VAL_PTR = ¶meter_tvb + guint8 pdp_type_org; + tvbuff_t *parameter_tvb; + + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + proto_tree_add_item(tree, hf_gsm_map_pdp_type_org, parameter_tvb, 0,1,ENC_BIG_ENDIAN); + pdp_type_org = tvb_get_guint8(parameter_tvb,1); + switch (pdp_type_org){ + case 0: /* ETSI */ + proto_tree_add_item(tree, hf_gsm_map_etsi_pdp_type_number, parameter_tvb, 0,1,ENC_BIG_ENDIAN); + break; + case 1: /* IETF */ + proto_tree_add_item(tree, hf_gsm_map_ietf_pdp_type_number, parameter_tvb, 0,1,ENC_BIG_ENDIAN); + break; + default: + break; + } + +#.FN_BODY QoS-Subscribed VAL_PTR = ¶meter_tvb + + + tvbuff_t *parameter_tvb; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + de_sm_qos(parameter_tvb, tree, actx->pinfo, 0, 3, NULL,0); + +#.FN_BODY Ext-QoS-Subscribed VAL_PTR = ¶meter_tvb + + tvbuff_t *parameter_tvb; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + dissect_gsm_map_ext_qos_subscribed(tvb, actx->pinfo, tree, actx); + +#.FN_BODY Ext2-QoS-Subscribed VAL_PTR = ¶meter_tvb + + tvbuff_t *parameter_tvb; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + dissect_gsm_map_ext2_qos_subscribed(tvb, actx->pinfo, tree, actx); + +#.FN_BODY Ext3-QoS-Subscribed VAL_PTR = ¶meter_tvb + + tvbuff_t *parameter_tvb; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + dissect_gsm_map_ext3_qos_subscribed(tvb, actx->pinfo, tree, actx); + +#.FN_BODY Ext4-QoS-Subscribed VAL_PTR = ¶meter_tvb + + tvbuff_t *parameter_tvb; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + dissect_gsm_map_ext4_qos_subscribed(tvb, actx->pinfo, tree, actx); + +#.FN_BODY GSN-Address VAL_PTR = ¶meter_tvb + + tvbuff_t *parameter_tvb; + guint8 octet; + proto_tree *subtree; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_pdptypenumber); + + octet = tvb_get_guint8(parameter_tvb,0); + switch(octet){ + case 0x04: /* IPv4 */ + proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv4, parameter_tvb, 1, 4, ENC_BIG_ENDIAN); + break; + case 0x50: /* IPv6 */ + proto_tree_add_item(subtree, hf_gsm_map_GSNAddress_IPv6, parameter_tvb, 1, 16, ENC_NA); + break; + default: + break; + } + +#.FN_BODY RAIdentity VAL_PTR = ¶meter_tvb + + tvbuff_t *parameter_tvb; + proto_tree *subtree; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_RAIdentity); + de_gmm_rai(parameter_tvb, subtree, actx->pinfo, 0, 3, NULL,0); + +#.FN_BODY LAIFixedLength VAL_PTR = ¶meter_tvb + + tvbuff_t *parameter_tvb; + proto_tree *subtree; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LAIFixedLength); + dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, E212_LAI, TRUE); + +#.FN_BODY RadioResourceInformation VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + proto_tree *subtree; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_RadioResourceInformation); + be_chan_type(parameter_tvb, subtree, actx->pinfo, 0, tvb_reported_length_remaining(tvb,0), NULL, 0); + +#.FN_BODY RANAP-ServiceHandover VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + asn1_ctx_t asn1_ctx; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo); + dissect_ranap_Service_Handover(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_ranap_service_Handover); + +#.FN_BODY IntegrityProtectionInformation VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + asn1_ctx_t asn1_ctx; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo); + dissect_ranap_IntegrityProtectionInformation(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_IntegrityProtectionInformation); + +#.FN_BODY EncryptionInformation VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + asn1_ctx_t asn1_ctx; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, actx->pinfo); + dissect_ranap_EncryptionInformation(parameter_tvb, 0, &asn1_ctx, tree, hf_gsm_map_EncryptionInformation); + +#.FN_PARS ProtocolId VAL_PTR = &ProtocolId +#.FN_BODY Bss-APDU + guint8 octet; + guint8 length; + tvbuff_t *next_tvb; + proto_tree *subtree; +/* +ETS 300 599: December 2000 (GSM 09.02 version 4.19.1) +5.6.9.1 BSS-apdu +This parameter includes one or two concatenated complete 08.06 messages, as described in GSM 03.09 +and GSM 09.10. The Protocol ID indicates that the message or messages are according to GSM 08.06. +For the coding of the messages see GSM 08.06 and GSM 08.08. +*/ + ProtocolId = 0xffffffff; + gsm_map_private_info_t *gsm_map_priv; +%(DEFAULT_BODY)s + gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; +if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_externalsignalinfo); + switch (ProtocolId){ + case 1: + /* gsm-0408 */ + /* As per comment abowe Individual IE:(s) will be found here in TLV format + * Unfortunatly a branch for each IE must be made to call the apropriate + * function + */ + /* Get tag */ + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + proto_tree_add_item(subtree, hf_gsm_map_ie_tag, gsm_map_priv->signal_info_tvb, 0,1,ENC_BIG_ENDIAN); + /* get length */ + length = tvb_get_guint8(gsm_map_priv->signal_info_tvb,1); + proto_tree_add_item(subtree, hf_gsm_map_len, gsm_map_priv->signal_info_tvb, 1,1,ENC_BIG_ENDIAN); + /* Branch on tag */ + switch(octet){ + case 4: + /* Dissect the data part */ + de_bearer_cap(gsm_map_priv->signal_info_tvb, subtree, actx->pinfo, 2, length, NULL, 0); + /* TODO: There may be more than one IE */ + break; + default: + proto_tree_add_expert(subtree, actx->pinfo, &ei_gsm_map_undecoded, gsm_map_priv->signal_info_tvb, 0, length); + break; + }/* switch(octet) */ + break; + case 2: + /* gsm-0806 */ + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + /* Discrimination parameter */ + proto_tree_add_item(subtree, hf_gsm_map_disc_par, gsm_map_priv->signal_info_tvb, 0,1,ENC_BIG_ENDIAN); + if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */ + /* Strip off discrimination and length */ + proto_tree_add_item(subtree, hf_gsm_map_len, gsm_map_priv->signal_info_tvb, 1,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining(gsm_map_priv->signal_info_tvb, 2); + call_dissector_with_data(bssap_handle, next_tvb, actx->pinfo, subtree, gsm_map_priv->sccp_msg_info); + }else if(octet==1){ + proto_tree_add_item(subtree, hf_gsm_map_dlci, gsm_map_priv->signal_info_tvb, 1,1,ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_len, gsm_map_priv->signal_info_tvb, 2,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining(gsm_map_priv->signal_info_tvb, 3); + call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree); + } + break; + case 3: + /* gsm-BSSMAP -- Value 3 is reserved and must not be used*/ + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + if ( octet == 0) {/* DISCRIMINATION TS 48 006 */ + next_tvb = tvb_new_subset_remaining(gsm_map_priv->signal_info_tvb, 2); + call_dissector_with_data(bssap_handle, next_tvb, actx->pinfo, subtree, gsm_map_priv->sccp_msg_info); + } + break; + /* ets-300102-1 (~Q.931 ) */ + case 4: + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + length = tvb_get_guint8(gsm_map_priv->signal_info_tvb,1); + if ( octet == 4 ) + dissect_q931_bearer_capability_ie(gsm_map_priv->signal_info_tvb, 2, length, subtree); + break; + default: + break; + }/*switch (ProtocolId)*/ + +#.FN_BODY ExternalSignalInfo +/* +-- Information about the internal structure is given in +-- clause 7.6.9. +7.6.9.4 External Signal Information +This parameter contains concatenated information elements (including tag and length) which are defined by a common +protocol version, preceded by the associated protocol ID. It is used to transport information of the indicated protocol via +MAP interfaces +*/ + guint8 octet; + guint8 length; + tvbuff_t *next_tvb; + proto_tree *subtree; + gsm_map_private_info_t *gsm_map_priv; + + ProtocolId = 0xffffffff; +%(DEFAULT_BODY)s + gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + if (!gsm_map_priv || !gsm_map_priv->signal_info_tvb) + return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_externalsignalinfo); + switch (ProtocolId){ + case 1: + /* gsm-0408 */ + /* As per comment abowe Individual IE:(s) will be found here in TLV format + * Unfortunatly a branch for each IE must be made to call the apropriate + * function + */ + /* Get tag */ + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + proto_tree_add_item(subtree, hf_gsm_map_ie_tag, gsm_map_priv->signal_info_tvb, 0,1,ENC_BIG_ENDIAN); + /* get length */ + length = tvb_get_guint8(gsm_map_priv->signal_info_tvb,1); + proto_tree_add_item(subtree, hf_gsm_map_len, gsm_map_priv->signal_info_tvb, 1,1,ENC_BIG_ENDIAN); + /* Branch on tag */ + switch(octet){ + case 4: + /* Dissect the data part */ + de_bearer_cap(gsm_map_priv->signal_info_tvb, subtree, actx->pinfo, 2, length, NULL, 0); + /* TODO: There may be more than one IE */ + break; + default: + proto_tree_add_expert(subtree, actx->pinfo, &ei_gsm_map_undecoded, gsm_map_priv->signal_info_tvb, 0, length); + break; + }/* switch(octet) */ + break; + case 2: + /* gsm-0806 */ + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + /* Discrimination parameter */ + proto_tree_add_item(subtree, hf_gsm_map_disc_par, gsm_map_priv->signal_info_tvb, 0,1,ENC_BIG_ENDIAN); + if ( octet == 0) {/* DISCRIMINATION TS 48 006(GSM 08.06 version 5.3.0) */ + /* Strip off discrimination and length */ + proto_tree_add_item(subtree, hf_gsm_map_len, gsm_map_priv->signal_info_tvb, 1,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining(gsm_map_priv->signal_info_tvb, 2); + call_dissector_with_data(bssap_handle, next_tvb, actx->pinfo, subtree, gsm_map_priv->sccp_msg_info); + }else if(octet==1){ + proto_tree_add_item(subtree, hf_gsm_map_dlci, gsm_map_priv->signal_info_tvb, 1,1,ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_len, gsm_map_priv->signal_info_tvb, 2,1,ENC_BIG_ENDIAN); + next_tvb = tvb_new_subset_remaining(gsm_map_priv->signal_info_tvb, 3); + call_dissector(dtap_handle, next_tvb, actx->pinfo, subtree); + } + break; + case 3: + /* gsm-BSSMAP TODO Is it correct to stripp off two first octets here?*/ + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + if ( octet == 0) {/* DISCRIMINATION TS 48 006 */ + next_tvb = tvb_new_subset_remaining(gsm_map_priv->signal_info_tvb, 2); + call_dissector_with_data(bssap_handle, next_tvb, actx->pinfo, subtree, gsm_map_priv->sccp_msg_info); + } + break; + /* ets-300102-1 (~Q.931 ) */ + case 4: + octet = tvb_get_guint8(gsm_map_priv->signal_info_tvb,0); + length = tvb_get_guint8(gsm_map_priv->signal_info_tvb,1); + if ( octet == 4 ) + dissect_q931_bearer_capability_ie(gsm_map_priv->signal_info_tvb, 2, length, subtree); + break; + default: + break; + }/*switch (ProtocolId)*/ + +#.FN_BODY GlobalCellId VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + proto_tree *subtree; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_GlobalCellId); + be_cell_id_aux(parameter_tvb, subtree, actx->pinfo, 0, tvb_reported_length_remaining(tvb,0), NULL, 0, 0); + +#.FN_BODY Ext-GeographicalInformation VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + proto_tree *subtree; + +%(DEFAULT_BODY)s + + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_GeographicalInformation); + dissect_geographical_description(parameter_tvb, actx->pinfo, subtree); + + +# APN ::= OCTET STRING (SIZE (2..63)) +# Octets are coded according to TS 3GPP TS 23.003 +# 9.1 Structure of APN +# : +# The APN consists of one or more labels. Each label is coded as a one octet length field followed by that number of +# octets coded as 8 bit ASCII characters. Following RFC 1035 [19] the labels shall consist only of the alphabetic +# characters (A-Z and a-z), digits (0-9) and the hyphen (-). Following RFC 1123 [20], the label shall begin and end with +# either an alphabetic character or a digit. The case of alphabetic characters is not significant. The APN is not terminated +# by a length byte of zero. +#.FN_BODY APN VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + proto_tree *subtree; + const guint8 *apn_str = NULL; + +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_apn_str); + proto_tree_add_item_ret_string(subtree, hf_gsm_apn_str, parameter_tvb, 0, -1, ENC_APN_STR | ENC_NA, actx->pinfo->pool, &apn_str); + proto_item_append_text(actx->created_item, " - %%s", apn_str); + + +#.FN_BODY LocationNumber VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + proto_tree *subtree; +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_LocationNumber); + dissect_isup_location_number_parameter(parameter_tvb, actx->pinfo, subtree, NULL); + +#.FN_BODY EnhancedCheckIMEI-Arg/locationInformation VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + proto_tree *subtree; + guint8 rat; +%(DEFAULT_BODY)s + if (parameter_tvb) { + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ericsson_locationInformation); + rat = tvb_get_guint8(parameter_tvb, 0); + proto_tree_add_uint(subtree, hf_gsm_map_ericsson_locationInformation_rat, parameter_tvb, 0, 1, rat); + switch (rat) { + case 0: + /* GSM */ + proto_tree_add_item(subtree, hf_gsm_map_ericsson_locationInformation_lac, parameter_tvb, 1, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_ericsson_locationInformation_ci, parameter_tvb, 3, 2, ENC_BIG_ENDIAN); + break; + case 1: + /* UMTS */ + proto_tree_add_item(subtree, hf_gsm_map_ericsson_locationInformation_lac, parameter_tvb, 1, 2, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_ericsson_locationInformation_sac, parameter_tvb, 3, 2, ENC_BIG_ENDIAN); + break; + default: + break; + } + } + +#.FN_BODY SM-RP-SMEA VAL_PTR=&payload_tvb + tvbuff_t *payload_tvb; +%(DEFAULT_BODY)s + if (payload_tvb) { + guint32 tvb_offset = 0; + proto_item_set_hidden(actx->created_item); + dis_field_addr(payload_tvb, actx->pinfo, tree, &tvb_offset, "SM-RP-SMEA"); + } + + +#.FN_BODY E-UTRAN-CGI VAL_PTR=¶meter_tvb + tvbuff_t *parameter_tvb; + proto_tree *subtree; +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_e_utranCellGlobalIdentity); + de_sgsap_ecgi(parameter_tvb, subtree, actx->pinfo, 0, tvb_reported_length(tvb), NULL, 0); + +#.FN_BODY TA-Id VAL_PTR=¶meter_tvb + tvbuff_t *parameter_tvb; + proto_tree *subtree; +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_TA_id); + de_emm_trac_area_id(parameter_tvb, subtree, actx->pinfo, 0, tvb_reported_length(tvb), NULL, 0); + +#.FN_BODY GeographicalInformation VAL_PTR = ¶meter_tvb + tvbuff_t *parameter_tvb; + proto_tree *subtree; +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_GeographicalInformation); + dissect_geographical_description(parameter_tvb, actx->pinfo, subtree); + +#.FN_BODY GeodeticInformation VAL_PTR=¶meter_tvb + tvbuff_t *parameter_tvb; + proto_tree *subtree; +%(DEFAULT_BODY)s + if (!parameter_tvb) + return offset; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_GeodeticInformation); + dissect_isup_calling_geodetic_location_parameter(parameter_tvb, actx->pinfo, subtree, NULL); + +#.TYPE_ATTR +LAC TYPE = FT_UINT16 DISPLAY = BASE_DEC_HEX +#.FN_BODY LAC VAL_PTR = ¶meter_tvb HF_INDEX = -1 + tvbuff_t *parameter_tvb = NULL; +%(DEFAULT_BODY)s + if (parameter_tvb) { + actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 2, ENC_BIG_ENDIAN); + } + +# Make dissector table for V3 messages +#.REGISTER + +SendAuthenticationInfoArg N gsm_map.v3.arg.opcode 56 +SendAuthenticationInfoRes N gsm_map.v3.res.opcode 56 + +#---------------------------------------------------------------------------------------- +#.TYPE_ATTR +SS-Code TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(ssCode_vals) +Teleservice TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Teleservice_vals) +Bearerservice TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Bearerservice_vals) +TeleserviceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Teleservice_vals) +BearerServiceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Bearerservice_vals) +Ext-TeleserviceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Teleservice_vals) +Ext-BearerServiceCode TYPE = FT_UINT8 DISPLAY = BASE_DEC STRINGS = VALS(Bearerservice_vals) +ChargingCharacteristics TYPE = FT_UINT16 DISPLAY = BASE_DEC BITMASK = 0x0f00 STRINGS = VALS(chargingcharacteristics_values) +RoutingInfo TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(gsm_map_ch_RoutingInfo_vals) +DiameterIdentity TYPE = FT_STRING DISPLAY = BASE_NONE + +#---------------------------------------------------------------------------------------- +#.FIELD_ATTR +RequestedInfo/imei ABBREV = imei_null + +#.END diff --git a/epan/dissectors/asn1/gsm_map/packet-gsm_map-template.c b/epan/dissectors/asn1/gsm_map/packet-gsm_map-template.c new file mode 100644 index 00000000..a46309c0 --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/packet-gsm_map-template.c @@ -0,0 +1,3471 @@ +/* XXX see bug 1852: + * + * packet-gsm_map.c: There are 1174 display filter fields registered. Most are + * prefixed appropriately as "gsm_map", but many others are prefixed as + * "gsm_old", or even "gad", "gsm_ss", or with no prefix at all. I don't know + * if the ones with "gsm_old" are simply obsolete display filter fields or if + * they should be prefixed as "gsm_map.old." or what. Similar uncertainties + * for the others. Someone more knowledgeable than I am with respect to this + * dissector should provide a patch for it. + */ + +/* packet-gsm_map-template.c + * Routines for GSM MobileApplication packet dissection + * including GSM SS. + * Copyright 2004 - 2010 , Anders Broman <anders.broman [AT] ericsson.com> + * Based on the dissector by: + * Felix Fei <felix.fei [AT] utstar.com> + * and Michael Lum <mlum [AT] telostech.com> + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + * References GSM MAP: + * ETSI TS 129 002 + * Updated to ETSI TS 129 002 V7.5.0 (3GPP TS 29.002 V7.5.0 (2006-09) Release 7) + * Updated to ETSI TS 129 002 V8.4.0 (3GPP TS 29.002 V8.1.0 (2007-06) Release 8) + * References GSM SS + * References: 3GPP TS 24.080 + */ + +#include "config.h" + +#include <stdlib.h> + +#include <epan/packet.h> +#include <epan/prefs.h> +#include <epan/stat_tap_ui.h> +#include <epan/tap.h> +#include <epan/oids.h> +#include <epan/expert.h> +#include <epan/proto_data.h> +#include <epan/conversation.h> +#include <wsutil/strtoi.h> + +#include <epan/asn1.h> +#include "packet-ber.h" +#include "packet-per.h" +#include "packet-q931.h" +#include "packet-gsm_map.h" +#include "packet-gsm_a_common.h" +#include "packet-tcap.h" +#include "packet-e164.h" +#include "packet-e212.h" +#include "packet-smpp.h" +#include "packet-gsm_sms.h" +#include "packet-ranap.h" +#include "packet-isup.h" + +#define PNAME "GSM Mobile Application" +#define PSNAME "GSM_MAP" +#define PFNAME "gsm_map" + +void proto_register_gsm_map(void); +void proto_reg_handoff_gsm_map(void); + +/* Initialize the protocol and registered fields */ +static int proto_gsm_map = -1; +static int proto_gsm_map_dialogue = -1; +static int proto_gsm_map_ms = -1; + +static int hf_gsm_map_old_Component_PDU = -1; +static int hf_gsm_map_getPassword = -1; +static int hf_gsm_map_currentPassword = -1; +static int hf_gsm_map_extension = -1; +static int hf_gsm_map_nature_of_number = -1; +static int hf_gsm_map_number_plan = -1; +static int hf_gsm_map_address_digits = -1; +static int hf_gsm_map_TBCD_digits = -1; +static int hf_gsm_map_Ss_Status_unused = -1; +static int hf_gsm_map_Ss_Status_q_bit = -1; +static int hf_gsm_map_Ss_Status_p_bit = -1; +static int hf_gsm_map_Ss_Status_r_bit = -1; +static int hf_gsm_map_Ss_Status_a_bit = -1; +static int hf_gsm_map_notification_to_forwarding_party = -1; +static int hf_gsm_map_redirecting_presentation = -1; +static int hf_gsm_map_notification_to_calling_party = -1; +static int hf_gsm_map_forwarding_reason = -1; +static int hf_gsm_map_pdp_type_org = -1; +static int hf_gsm_map_etsi_pdp_type_number = -1; +static int hf_gsm_map_ietf_pdp_type_number = -1; +static int hf_gsm_map_ext_qos_subscribed_pri = -1; + +static int hf_gsm_map_qos_traffic_cls = -1; +static int hf_gsm_map_qos_del_order = -1; +static int hf_gsm_map_qos_del_of_err_sdu = -1; +static int hf_gsm_map_qos_ber = -1; +static int hf_gsm_map_qos_sdu_err_rat = -1; +static int hf_gsm_map_qos_traff_hdl_pri = -1; +static int hf_gsm_map_qos_max_sdu = -1; +static int hf_gsm_map_max_brate_ulink = -1; +static int hf_gsm_map_max_brate_dlink = -1; +static int hf_gsm_map_qos_transfer_delay = -1; +static int hf_gsm_map_guaranteed_max_brate_ulink = -1; +static int hf_gsm_map_guaranteed_max_brate_dlink = -1; +static int hf_gsm_map_GSNAddress_IPv4 = -1; +static int hf_gsm_map_GSNAddress_IPv6 = -1; +static int hf_gsm_map_ranap_service_Handover = -1; +static int hf_gsm_map_IntegrityProtectionInformation = -1; +static int hf_gsm_map_EncryptionInformation = -1; +static int hf_gsm_map_ss_SS_UserData = -1; +static int hf_gsm_map_cbs_coding_grp = -1; +static int hf_gsm_map_cbs_coding_grp0_lang = -1; +static int hf_gsm_map_cbs_coding_grp1_lang = -1; +static int hf_gsm_map_cbs_coding_grp2_lang = -1; +static int hf_gsm_map_cbs_coding_grp3_lang = -1; +static int hf_gsm_map_cbs_coding_grp4_7_comp = -1; +static int hf_gsm_map_cbs_coding_grp4_7_class_ind = -1; +static int hf_gsm_map_cbs_coding_grp4_7_char_set = -1; +static int hf_gsm_map_cbs_coding_grp4_7_class = -1; +static int hf_gsm_map_cbs_coding_grp15_mess_code = -1; +static int hf_gsm_map_cbs_coding_grp15_class = -1; +static int hf_gsm_map_ie_tag = -1; +static int hf_gsm_map_len = -1; +static int hf_gsm_map_disc_par = -1; +static int hf_gsm_map_dlci = -1; +static int hf_gsm_apn_str = -1; +static int hf_gsm_map_ericsson_locationInformation_rat = -1; +static int hf_gsm_map_ericsson_locationInformation_lac = -1; +static int hf_gsm_map_ericsson_locationInformation_ci = -1; +static int hf_gsm_map_ericsson_locationInformation_sac = -1; +static int hf_gsm_map_ussd_string = -1; +static int hf_gsm_map_spare_bits = -1; +static int hf_gsm_map_qos_signalling_ind = -1; +static int hf_gsm_map_qos_source_stat_desc = - 1; +static int hf_gsm_map_qos_max_bitrate_upl_ext = -1; +static int hf_gsm_map_qos_max_bitrate_downl_ext = -1; +static int hf_gsm_map_qos_guar_bitrate_upl_ext = -1; +static int hf_gsm_map_qos_guar_bitrate_downl_ext = -1; +/* +static int hf_gsm_map_qos_max_bitrate_upl_ext2 = -1; +static int hf_gsm_map_qos_max_bitrate_downl_ext2 = -1; +static int hf_gsm_map_qos_guar_bitrate_upl_ext2 = -1; +static int hf_gsm_map_qos_guar_bitrate_downl_ext2 = -1; +*/ +static int hf_gsm_map_earp_pci = -1; +static int hf_gsm_map_earp_pl = -1; +static int hf_gsm_map_earp_pvi = -1; + +#include "packet-gsm_map-hf.c" + +/* Initialize the subtree pointers */ +static gint ett_gsm_map = -1; +static gint ett_gsm_map_InvokeId = -1; +static gint ett_gsm_map_InvokePDU = -1; +static gint ett_gsm_map_ReturnResultPDU = -1; +static gint ett_gsm_map_ReturnErrorPDU = -1; +static gint ett_gsm_map_ReturnResult_result = -1; +static gint ett_gsm_map_ReturnError_result = -1; +static gint ett_gsm_map_GSMMAPPDU = -1; +static gint ett_gsm_map_ext_qos_subscribed = -1; +static gint ett_gsm_map_pdptypenumber = -1; +static gint ett_gsm_map_RAIdentity = -1; +static gint ett_gsm_map_LAIFixedLength = -1; +static gint ett_gsm_map_isdn_address_string = -1; +static gint ett_gsm_map_geo_desc = -1; +static gint ett_gsm_map_LongSignalInfo = -1; +static gint ett_gsm_map_RadioResourceInformation =-1; +static gint ett_gsm_map_MSNetworkCapability =-1; +static gint ett_gsm_map_MSRadioAccessCapability = -1; +static gint ett_gsm_map_externalsignalinfo = -1; +static gint ett_gsm_map_cbs_data_coding = -1; +static gint ett_gsm_map_GlobalCellId = -1; +static gint ett_gsm_map_GeographicalInformation = -1; +static gint ett_gsm_map_apn_str = -1; +static gint ett_gsm_map_LocationNumber = -1; +static gint ett_gsm_map_ericsson_locationInformation = -1; +static gint ett_gsm_map_extension_data = -1; +static gint ett_gsm_map_tbcd_digits = -1; +static gint ett_gsm_map_ussd_string = -1; +static gint ett_gsm_map_ext2_qos_subscribed = -1; +static gint ett_gsm_map_ext3_qos_subscribed = -1; +static gint ett_gsm_map_e_utranCellGlobalIdentity = -1; +static gint ett_gsm_map_TA_id = -1; +static gint ett_gsm_map_GeodeticInformation = -1; + +#include "packet-gsm_map-ett.c" + +static expert_field ei_gsm_map_unknown_sequence3 = EI_INIT; +static expert_field ei_gsm_map_unknown_sequence = EI_INIT; +static expert_field ei_gsm_map_unknown_parameter = EI_INIT; +static expert_field ei_gsm_map_unknown_invokeData = EI_INIT; +static expert_field ei_gsm_map_undecoded = EI_INIT; + +static dissector_handle_t gsm_sms_handle; /* SMS TPDU */ +static dissector_handle_t ranap_handle; +static dissector_handle_t dtap_handle; +static dissector_handle_t map_handle; +static dissector_handle_t bssap_handle; +static dissector_table_t map_prop_arg_opcode_table; /* prorietary operation codes */ +static dissector_table_t map_prop_res_opcode_table; /* prorietary operation codes */ +static dissector_table_t map_prop_err_opcode_table; /* prorietary operation codes */ +/* Preferenc settings default */ +#define MAX_SSN 254 +static range_t *global_ssn_range; +#define APPLICATON_CONTEXT_FROM_TRACE 0 +static gint pref_application_context_version = APPLICATON_CONTEXT_FROM_TRACE; +static gboolean pref_ericsson_proprietary_ext = FALSE; + +/* Global variables */ +static guint32 opcode=0; +static guint32 errorCode; +static int application_context_version; +static guint ProtocolId; +static guint AccessNetworkProtocolId; +static int gsm_map_tap = -1; +static guint8 gsmmap_pdu_type = 0; +static guint8 gsm_map_pdu_size = 0; + +#define SMS_ENCODING_NOT_SET 0 +#define SMS_ENCODING_7BIT 1 +#define SMS_ENCODING_8BIT 2 +#define SMS_ENCODING_UCS2 3 +#define SMS_ENCODING_7BIT_LANG 4 +#define SMS_ENCODING_UCS2_LANG 5 + +static guint8 sms_encoding; + +/* Forward declarations */ +static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx); +static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx); +static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx); +const gchar* gsm_map_opr_code(guint32 val, proto_item *item); + +typedef struct { + struct tcap_private_t * tcap_private; + sccp_msg_info_t *sccp_msg_info; + tvbuff_t *signal_info_tvb; +} gsm_map_private_info_t; + +typedef struct { + wmem_tree_t *packets; +} gsm_map_conv_info_t; + +static gsm_map_packet_info_t *gsm_map_get_packet_info(asn1_ctx_t *actx, bool store_conv_info) +{ + gsm_map_packet_info_t *gsm_map_pi = (gsm_map_packet_info_t*)p_get_proto_data(wmem_file_scope(), actx->pinfo, proto_gsm_map, 0); + if (!gsm_map_pi) { + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + gsm_map_pi = wmem_new0(wmem_file_scope(), gsm_map_packet_info_t); + p_add_proto_data(wmem_file_scope(), actx->pinfo, proto_gsm_map, 0, gsm_map_pi); + if (gsm_map_priv && gsm_map_priv->tcap_private) { + gsm_map_pi->tcap_src_tid = gsm_map_priv->tcap_private->src_tid; + if (store_conv_info) { + conversation_t *conversation; + gsm_map_conv_info_t *gsm_map_info; + wmem_tree_key_t key[3]; + conversation = find_or_create_conversation(actx->pinfo); + gsm_map_info = (gsm_map_conv_info_t *)conversation_get_proto_data(conversation, proto_gsm_map); + if (!gsm_map_info) { + gsm_map_info = wmem_new(wmem_file_scope(), gsm_map_conv_info_t); + gsm_map_info->packets = wmem_tree_new(wmem_file_scope()); + conversation_add_proto_data(conversation, proto_gsm_map, gsm_map_info); + } + key[0].length = 1; + key[0].key = &gsm_map_priv->tcap_private->src_tid; + key[1].length = 1; + key[1].key = &actx->pinfo->num; + key[2].length = 0; + key[2].key = NULL; + wmem_tree_insert32_array(gsm_map_info->packets, key, (void *)gsm_map_pi); + } + } + } + return gsm_map_pi; +} + +static gsm_map_packet_info_t *gsm_map_get_matching_tcap_info(asn1_ctx_t *actx) +{ + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + if (gsm_map_priv && gsm_map_priv->tcap_private) { + conversation_t *conversation; + gsm_map_conv_info_t *gsm_map_info; + wmem_tree_key_t key[3]; + gsm_map_packet_info_t *gsm_map_pi; + conversation = find_or_create_conversation(actx->pinfo); + gsm_map_info = (gsm_map_conv_info_t *)conversation_get_proto_data(conversation, proto_gsm_map); + if (!gsm_map_info) { + gsm_map_info = wmem_new(wmem_file_scope(), gsm_map_conv_info_t); + gsm_map_info->packets = wmem_tree_new(wmem_file_scope()); + conversation_add_proto_data(conversation, proto_gsm_map, gsm_map_info); + } + key[0].length = 1; + key[0].key = &gsm_map_priv->tcap_private->src_tid; + key[1].length = 1; + key[1].key = &actx->pinfo->num; + key[2].length = 0; + key[2].key = NULL; + gsm_map_pi = (gsm_map_packet_info_t*)wmem_tree_lookup32_array_le(gsm_map_info->packets, key); + if (gsm_map_pi && gsm_map_pi->tcap_src_tid == gsm_map_priv->tcap_private->src_tid) + return gsm_map_pi; + } + return NULL; +} + +/* Value strings */ + +const value_string gsm_map_PDP_Type_Organisation_vals[] = { + { 0, "ETSI" }, + { 1, "IETF" }, + { 0, NULL } +}; + +const value_string gsm_map_ietf_defined_pdp_vals[] = { + { 0x21, "IPv4 Address" }, + { 0x57, "IPv6 Address" }, + { 0, NULL } +}; + +const value_string gsm_map_etsi_defined_pdp_vals[] = { + { 1, "PPP" }, + { 0, NULL } +}; + +static const value_string gsm_map_tag_vals[] = { + { 0x4, "Bearer Capability" }, + { 0, NULL } +}; + +static const value_string gsm_map_disc_par_vals[] = { + { 0, "Not Transparent" }, + { 1, "Transparent" }, + { 0, NULL } +}; + +static const value_string gsm_map_ericsson_locationInformation_rat_vals[] = { + { 0x0, "GSM" }, + { 0x1, "UMTS" }, + { 0x2, "LTE" }, + { 0xf, "No information" }, + { 0, NULL } +}; + + +/* returns value in kb/s */ +static guint +gsm_map_calc_bitrate(guint8 value){ + + guint8 granularity; + guint returnvalue; + + if (value == 0xff) + return 0; + + granularity = value >> 6; + returnvalue = value & 0x7f; + switch (granularity){ + case 0: + break; + case 1: + returnvalue = ((returnvalue - 0x40) << 3)+64; + break; + case 2: + returnvalue = (returnvalue << 6)+576; + break; + case 3: + returnvalue = (returnvalue << 6)+576; + break; + } + return returnvalue; + +} + +static void +dissect_gsm_map_ext_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx){ + int offset = 0; + proto_tree *subtree; + guint8 octet; + guint16 value; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ext_qos_subscribed); + /* OCTET 1: + Allocation/Retention Priority (This octet encodes each priority level defined in + 23.107 as the binary value of the priority level, declaration in 29.060) + Octets 2-9 are coded according to 3GPP TS 24.008[35] Quality of Service Octets + 6-13. + */ + /* Allocation/Retention Priority */ + proto_tree_add_item(subtree, hf_gsm_map_ext_qos_subscribed_pri, tvb, offset, 1, ENC_BIG_ENDIAN); + offset++; + + /* Quality of Service Octets 6-13.( Octet 2 - 9 Here) */ + + /* Traffic class, octet 6 (see 3GPP TS 23.107) Bits 8 7 6 */ + proto_tree_add_item(subtree, hf_gsm_map_qos_traffic_cls, tvb, offset, 1, ENC_BIG_ENDIAN); + /* Delivery order, octet 6 (see 3GPP TS 23.107) Bits 5 4 */ + proto_tree_add_item(subtree, hf_gsm_map_qos_del_order, tvb, offset, 1, ENC_BIG_ENDIAN); + /* Delivery of erroneous SDUs, octet 6 (see 3GPP TS 23.107) Bits 3 2 1 */ + proto_tree_add_item(subtree, hf_gsm_map_qos_del_of_err_sdu, tvb, offset, 1, ENC_BIG_ENDIAN); + offset++; + + /* Maximum SDU size, octet 7 (see 3GPP TS 23.107) */ + octet = tvb_get_guint8(tvb,offset); + switch (octet){ + case 0: + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, octet, "Reserved"); + break; + case 0x93: + value = 1502; + proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value); + break; + case 0x98: + value = 1510; + proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value); + break; + case 0x99: + value = 1532; + proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value); + break; + default: + if (octet<0x97){ + value = octet * 10; + proto_tree_add_uint(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, value); + }else{ + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_max_sdu, tvb, offset, 1, octet, "0x%x not defined in TS 24.008", octet); + } + } + offset++; + + /* Maximum bit rate for uplink, octet 8 */ + octet = tvb_get_guint8(tvb,offset); + if (octet == 0 ){ + proto_tree_add_uint_format_value(subtree, hf_gsm_map_max_brate_ulink, tvb, offset, 1, octet, "Reserved" ); + }else{ + proto_tree_add_uint(subtree, hf_gsm_map_max_brate_ulink, tvb, offset, 1, gsm_map_calc_bitrate(octet)); + } + offset++; + /* Maximum bit rate for downlink, octet 9 (see 3GPP TS 23.107) */ + octet = tvb_get_guint8(tvb,offset); + if (octet == 0 ){ + proto_tree_add_uint_format_value(subtree, hf_gsm_map_max_brate_dlink, tvb, offset, 1, octet, "Reserved" ); + }else{ + proto_tree_add_uint(subtree, hf_gsm_map_max_brate_dlink, tvb, offset, 1, gsm_map_calc_bitrate(octet)); + } + offset++; + /* Residual Bit Error Rate (BER), octet 10 (see 3GPP TS 23.107) Bits 8 7 6 5 */ + proto_tree_add_item(subtree, hf_gsm_map_qos_ber, tvb, offset, 1, ENC_BIG_ENDIAN); + /* SDU error ratio, octet 10 (see 3GPP TS 23.107) */ + proto_tree_add_item(subtree, hf_gsm_map_qos_sdu_err_rat, tvb, offset, 1, ENC_BIG_ENDIAN); + offset++; + + /* Transfer delay, octet 11 (See 3GPP TS 23.107) Bits 8 7 6 5 4 3 */ + proto_tree_add_item(subtree, hf_gsm_map_qos_transfer_delay, tvb, offset, 1, ENC_BIG_ENDIAN); + /* Traffic handling priority, octet 11 (see 3GPP TS 23.107) Bits 2 1 */ + proto_tree_add_item(subtree, hf_gsm_map_qos_traff_hdl_pri, tvb, offset, 1, ENC_BIG_ENDIAN); + offset++; + + /* Guaranteed bit rate for uplink, octet 12 (See 3GPP TS 23.107) + Coding is identical to that of Maximum bit rate for uplink. + */ + octet = tvb_get_guint8(tvb,offset); + if (octet == 0 ){ + proto_tree_add_uint_format_value(subtree, hf_gsm_map_guaranteed_max_brate_ulink, tvb, offset, 1, octet, "Subscribed guaranteed bit rate for uplink/reserved"); + }else{ + proto_tree_add_uint(subtree, hf_gsm_map_guaranteed_max_brate_ulink, tvb, offset, 1, gsm_map_calc_bitrate(octet)); + } + offset++; + + /* Guaranteed bit rate for downlink, octet 13(See 3GPP TS 23.107) + Coding is identical to that of Maximum bit rate for uplink. + */ + octet = tvb_get_guint8(tvb,offset); + if (octet == 0 ){ + proto_tree_add_uint_format_value(subtree, hf_gsm_map_guaranteed_max_brate_dlink, tvb, offset, 1, octet, "Subscribed guaranteed bit rate for downlink/reserved"); + }else{ + proto_tree_add_uint(subtree, hf_gsm_map_guaranteed_max_brate_dlink, tvb, offset, 1, gsm_map_calc_bitrate(octet)); + } + +} + +/* +Ext2-QoS-Subscribed ::= OCTET STRING (SIZE (1..3)) +-- Octets 1-3 are coded according to 3GPP TS 24.008 [35] Quality of Service Octets 14-16. +-- If Quality of Service information is structured with 14 octet length, then +-- Octet 1 is coded according to 3GPP TS 24.008 [35] Quality of Service Octet 14. + +*/ + +static const true_false_string gsm_map_qos_signalling_ind_value = { + "Optimised for signalling traffic", + "Not optimised for signalling traffic" +}; +#if 0 +/* Helper function returning the main bitrates in kbps */ +static guint32 +qos_calc_bitrate(guint8 oct) +{ + if (oct <= 0x3f) + return oct; + if (oct <= 0x7f) + return 64 + (oct - 0x40) * 8; + + return 576 + (oct - 0x80) * 64; +} +#endif +/* Helper function returning the extended bitrates in kbps */ +static guint32 +qos_calc_ext_bitrate(guint8 oct) +{ + if (oct <= 0x4a) + return 8600 + oct * 100; + if (oct <= 0xba) + return 16000 + (oct - 0x4a) * 1000; + + return 128000 + (oct - 0xba) * 2000; +} +#if 0 +static guint32 +qos_calc_ext2_bitrate(guint8 oct) +{ + if (oct <= 0x3d) + return (256 + oct * 4); + if (oct <= 0xa1) + return (500 + (oct - 0x3d) * 10); + if (oct <= 0xf6) + return (1500 + (oct - 0xa1) * 100); + + return 10000; +} +#endif +static void +dissect_gsm_map_ext2_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx) { + + int offset = 0; + proto_tree *subtree; + const gchar *str; + guint8 oct, tmp_oct; + guint32 temp32; + int length = tvb_reported_length(tvb); + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ext2_qos_subscribed); + + /* Ocet 14 */ + oct = tvb_get_guint8(tvb, offset); + proto_tree_add_bits_item(subtree, hf_gsm_map_spare_bits, tvb, (offset << 3), 3, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_qos_signalling_ind, tvb, offset, 1, ENC_BIG_ENDIAN); + + tmp_oct = oct & 7; + if (tmp_oct == 0x01) + str = "speech"; + else + str = "unknown"; + + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_source_stat_desc, tvb, + offset, 1, oct, "%s (%u)", str, tmp_oct); + + offset += 1; + if (length == offset) { + return; + } + + /* Octet 15 */ + oct = tvb_get_guint8(tvb, offset); + + if (oct == 0x00) + str = "Use the value indicated by the Maximum bit rate for downlink"; + else + { + temp32 = qos_calc_ext_bitrate(oct); + if (temp32 % 1000 == 0) + str = wmem_strdup_printf(pinfo->pool, "%u Mbps", temp32 / 1000); + else + str = wmem_strdup_printf(pinfo->pool, "%u kbps", temp32); + } + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_max_bitrate_downl_ext, tvb, + offset, 1, oct, "%s (%u)", str, oct); + + offset += 1; + if (length == offset) { + return; + } + + /* Octet 16 */ + oct = tvb_get_guint8(tvb, offset); + + if (oct == 0x00) + str = "Use the value indicated by the Guaranteed bit rate for downlink"; + else + { + temp32 = qos_calc_ext_bitrate(oct); + if (temp32 % 1000 == 0) + str = wmem_strdup_printf(pinfo->pool, "%u Mbps", temp32 / 1000); + else + str = wmem_strdup_printf(pinfo->pool, "%u kbps", temp32); + } + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_guar_bitrate_downl_ext, tvb, + offset, 1, oct, "%s (%u)", str, oct); + +} + +/* +Ext3-QoS-Subscribed ::= OCTET STRING (SIZE (1..2)) +-- Octets 1-2 are coded according to 3GPP TS 24.008 [35] Quality of Service Octets 17-18. + +*/ +static void +dissect_gsm_map_ext3_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx) { + + int offset = 0; + proto_tree *subtree; + const gchar *str; + guint8 oct; + guint32 temp32; + int length = tvb_reported_length(tvb); + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ext3_qos_subscribed); + + /* Maximum bit rate for uplink (extended) Octet 17 */ + oct = tvb_get_guint8(tvb, offset); + + if (oct == 0x00) + str = "Use the value indicated by the Maximum bit rate for uplink"; + else + { + temp32 = qos_calc_ext_bitrate(oct); + if (temp32 % 1000 == 0) + str = wmem_strdup_printf(pinfo->pool, "%u Mbps", temp32 / 1000); + else + str = wmem_strdup_printf(pinfo->pool, "%u kbps", temp32); + } + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_max_bitrate_upl_ext, tvb, + offset, 1, oct, "%s (%u)", str, oct); + + offset += 1; + if (length == offset) { + return; + } + + /* Guaranteed bit rate for uplink (extended) Octet 18 */ + oct = tvb_get_guint8(tvb, offset); + + if (oct == 0x00) + str = "Use the value indicated by the Guaranteed bit rate for uplink"; + else + { + temp32 = qos_calc_ext_bitrate(oct); + if (temp32 % 1000 == 0) + str = wmem_strdup_printf(pinfo->pool, "%u Mbps", temp32 / 1000); + else + str = wmem_strdup_printf(pinfo->pool, "%u kbps", temp32); + } + proto_tree_add_uint_format_value(subtree, hf_gsm_map_qos_guar_bitrate_upl_ext, tvb, + offset, 1, oct, "%s (%u)", str, oct); + + return; +} + +static void +dissect_gsm_map_ext4_qos_subscribed(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree _U_, asn1_ctx_t *actx) { + int offset = 0; + proto_tree *subtree; + + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ext3_qos_subscribed); + + proto_tree_add_item(subtree, hf_gsm_map_earp_pvi, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_earp_pl, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(subtree, hf_gsm_map_earp_pci, tvb, offset, 1, ENC_BIG_ENDIAN); + +} +#define ELLIPSOID_POINT 0 +#define ELLIPSOID_POINT_WITH_UNCERT_CIRC 1 +#define ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE 3 +#define POLYGON 5 +#define ELLIPSOID_POINT_WITH_ALT 8 +#define ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID 9 +#define ELLIPSOID_ARC 10 +/* +4 3 2 1 +0 0 0 0 Ellipsoid Point +0 0 0 1 Ellipsoid point with uncertainty Circle +0 0 1 1 Ellipsoid point with uncertainty Ellipse +0 1 0 1 Polygon +1 0 0 0 Ellipsoid point with altitude +1 0 0 1 Ellipsoid point with altitude and uncertainty Ellipsoid +1 0 1 0 Ellipsoid Arc +other values reserved for future use +*/ + +/* TS 23 032 Table 2a: Coding of Type of Shape */ +#if 0 +static const value_string type_of_shape_vals[] = { + { ELLIPSOID_POINT, "Ellipsoid Point"}, + { ELLIPSOID_POINT_WITH_UNCERT_CIRC, "Ellipsoid point with uncertainty Circle"}, + { ELLIPSOID_POINT_WITH_UNCERT_ELLIPSE, "Ellipsoid point with uncertainty Ellipse"}, + { POLYGON, "Polygon"}, + { ELLIPSOID_POINT_WITH_ALT, "Ellipsoid point with altitude"}, + { ELLIPSOID_POINT_WITH_ALT_AND_UNCERT_ELLIPSOID, "Ellipsoid point with altitude and uncertainty Ellipsoid"}, + { ELLIPSOID_ARC, "Ellipsoid Arc"}, + { 0, NULL } +}; + +/* 3GPP TS 23.032 7.3.1 */ +static const value_string sign_of_latitude_vals[] = { + { 0, "North"}, + { 1, "South"}, + { 0, NULL } +}; + +static const value_string dir_of_alt_vals[] = { + { 0, "Altitude expresses height"}, + { 1, "Altitude expresses depth"}, + { 0, NULL } +}; +#endif + +static const value_string gsm_map_cbs_data_coding_scheme_coding_grp_vals[] = { + { 0, "Coding Group 0(Language using the GSM 7 bit default alphabet)" }, + { 1, "Coding Group 1" }, + { 2, "Coding Group 2" }, + { 3, "Coding Group 3" }, + { 4, "General Data Coding indication" }, + { 5, "General Data Coding indication" }, + { 6, "General Data Coding indication" }, + { 7, "General Data Coding indication" }, + { 8, "Reserved" }, + { 9, "Message with User Data Header (UDH) structure" }, + { 10,"Reserved" }, + { 11,"Reserved" }, + { 12,"Reserved" }, + { 13,"Reserved" }, + { 14,"Defined by the WAP Forum" }, + { 15,"Data coding / message handling" }, + { 0, NULL} +}; +static value_string_ext gsm_map_cbs_data_coding_scheme_coding_grp_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_data_coding_scheme_coding_grp_vals); + +/* Coding group 0 + * Bits 3..0 indicate the language: + */ +static const value_string gsm_map_cbs_coding_grp0_lang_vals[] = { + { 0, "German"}, + { 1, "English"}, + { 2, "Italian"}, + { 3, "French"}, + { 4, "Spanish"}, + { 5, "Dutch"}, + { 6, "Swedish"}, + { 7, "Danish"}, + { 8, "Portuguese"}, + { 9, "Finnish"}, + { 10, "Norwegian"}, + { 11, "Greek"}, + { 12, "Turkish"}, + { 13, "Hungarian"}, + { 14, "Polish"}, + { 15, "Language unspecified"}, + { 0, NULL } +}; +static value_string_ext gsm_map_cbs_coding_grp0_lang_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_coding_grp0_lang_vals); + +static const value_string gsm_map_cbs_coding_grp1_lang_vals[] = { + { 0, "GSM 7 bit default alphabet; message preceded by language indication"}, + { 1, "UCS2; message preceded by language indication"}, + { 2, "Reserved"}, + { 3, "Reserved"}, + { 4, "Reserved"}, + { 5, "Reserved"}, + { 6, "Reserved"}, + { 7, "Reserved"}, + { 8, "Reserved"}, + { 9, "Reserved"}, + { 10, "Reserved"}, + { 11, "Reserved"}, + { 12, "Reserved"}, + { 13, "Reserved"}, + { 14, "Reserved"}, + { 15, "Reserved"}, + { 0, NULL } +}; +static value_string_ext gsm_map_cbs_coding_grp1_lang_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_coding_grp1_lang_vals); + +static const value_string gsm_map_cbs_coding_grp2_lang_vals[] = { + { 0, "Czech"}, + { 1, "Hebrew"}, + { 2, "Arabic"}, + { 3, "Russian"}, + { 4, "Icelandic"}, + { 5, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 6, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 7, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 8, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 9, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 10, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 11, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 12, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 13, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 14, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 15, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 0, NULL } +}; +static value_string_ext gsm_map_cbs_coding_grp2_lang_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_coding_grp2_lang_vals); + +static const value_string gsm_map_cbs_coding_grp3_lang_vals[] = { + { 0, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 1, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 2, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 3, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 4, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 5, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 6, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 7, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 8, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 9, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 10, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 11, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 12, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 13, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 14, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 15, "Reserved for other languages using the GSM 7 bit default alphabet, with unspecified handling at the MS"}, + { 0, NULL } +}; +static value_string_ext gsm_map_cbs_coding_grp3_lang_vals_ext = VALUE_STRING_EXT_INIT(gsm_map_cbs_coding_grp3_lang_vals); + +static const true_false_string gsm_map_cbs_coding_grp4_7_comp_vals = { + "The text is compressed using the compression algorithm defined in 3GPP TS 23.042", + "The text is uncompressed" +}; + +static const true_false_string gsm_map_cbs_coding_grp4_7_class_ind_vals = { + "Bits 1 to 0 have a message class meaning", + "Bits 1 to 0 are reserved and have no message class meaning" +}; + +/* Bits 3 and 2 indicate the character set being used, as follows: */ + +static const value_string gsm_map_cbs_coding_grp4_7_char_set_vals[] = { + { 0, "GSM 7 bit default alphabet"}, + { 1, "8 bit data"}, + { 2, "UCS2 (16 bit)"}, + { 3, "Reserved"}, + { 0, NULL } +}; + +static const value_string gsm_map_cbs_coding_grp4_7_class_vals[] = { + { 0, "Class 0"}, + { 1, "Class 1 Default meaning: ME-specific"}, + { 2, "Class 2 (U)SIM specific message"}, + { 3, "Class 3 Default meaning: TE-specific (see 3GPP TS 27.005"}, + { 0, NULL } +}; + +static const value_string gsm_map_cbs_coding_grp15_mess_code_vals[] = { + { 0, "GSM 7 bit default alphabet"}, + { 1, "8 bit data"}, + { 0, NULL } +}; + +static const value_string gsm_map_cbs_coding_grp15_class_vals[] = { + { 0, "GSM 7 bit default alphabet"}, + { 1, "8 bit data"}, + { 0, NULL } +}; + + +/* 3GPP TS 23.038 version 7.0.0 Release 7 */ +guint8 +dissect_cbs_data_coding_scheme(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint16 offset) +{ + guint8 octet; + guint8 coding_grp; + guint8 character_set; + + octet = tvb_get_guint8(tvb,offset); + coding_grp = octet >>4; + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp, tvb, offset, 1, ENC_BIG_ENDIAN); + + sms_encoding = SMS_ENCODING_NOT_SET; + switch (coding_grp){ + case 0: + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp0_lang, tvb, offset, 1, ENC_BIG_ENDIAN); + sms_encoding = SMS_ENCODING_7BIT; + break; + case 1: + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp1_lang, tvb, offset, 1, ENC_BIG_ENDIAN); + if ((octet & 0x0f)== 0){ + sms_encoding = SMS_ENCODING_7BIT_LANG; + }else{ + sms_encoding = SMS_ENCODING_UCS2_LANG; + } + break; + case 2: + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp2_lang, tvb, offset, 1, ENC_BIG_ENDIAN); + sms_encoding = SMS_ENCODING_7BIT; + break; + case 3: + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp3_lang, tvb, offset, 1, ENC_BIG_ENDIAN); + sms_encoding = SMS_ENCODING_7BIT; + break; + /* Coding_grp 01xx */ + case 4: + /* FALLTHRU */ + case 5: + /* FALLTHRU */ + case 6: + /* FALLTHRU */ + case 7: + /* FALLTHRU */ + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_comp, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_class_ind, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_char_set, tvb, offset, 1, ENC_BIG_ENDIAN); + if ((octet & 0x10)== 0x10){ + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_class, tvb, offset, 1, ENC_BIG_ENDIAN); + } + /* Bits 3 and 2 indicate the character set being used, */ + character_set = (octet&0x0c)>>2; + switch (character_set){ + case 0: + /* GSM 7 bit default alphabet */ + sms_encoding = SMS_ENCODING_7BIT; + break; + case 1: + /* 8 bit data */ + sms_encoding = SMS_ENCODING_8BIT; + break; + case 2: + /* UCS2 (16 bit) */ + sms_encoding = SMS_ENCODING_UCS2; + break; + case 3: + /* Reserved */ + sms_encoding = SMS_ENCODING_NOT_SET; + break; + default: + break; + } + break; + case 8: + /* Reserved coding groups */ + break; + case 9: + /* Message with User Data Header (UDH) structure:*/ + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_char_set, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp4_7_class, tvb, offset, 1, ENC_BIG_ENDIAN); + character_set = (octet&0x0c)>>2; + switch (character_set){ + case 0: + /* GSM 7 bit default alphabet */ + sms_encoding = SMS_ENCODING_7BIT; + break; + case 1: + /* 8 bit data */ + sms_encoding = SMS_ENCODING_8BIT; + break; + case 2: + /* UCS2 (16 bit) */ + sms_encoding = SMS_ENCODING_UCS2; + break; + case 3: + /* Reserved */ + sms_encoding = SMS_ENCODING_NOT_SET; + break; + default: + break; + } + break; + case 10: + /* FALLTHRU */ + case 11: + /* FALLTHRU */ + case 12: + /* FALLTHRU */ + case 13: + /* FALLTHRU */ + /* 1010..1101 Reserved coding groups */ + break; + case 14: + /* Defined by the WAP Forum + * "Wireless Datagram Protocol Specification", Wireless Application Protocol Forum Ltd. + */ + break; + case 15: + /* Data coding / message handling */ + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp15_mess_code, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_cbs_coding_grp15_class, tvb, offset, 1, ENC_BIG_ENDIAN); + character_set = (octet&0x04)>>2; + if (character_set == 0){ + sms_encoding = SMS_ENCODING_7BIT; + }else{ + sms_encoding = SMS_ENCODING_8BIT; + } + break; + default: + break; + } + + return sms_encoding; +} +void +dissect_gsm_map_msisdn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) +{ + guint8 octet; + guint8 na; + guint8 np; + + proto_tree_add_item(tree, hf_gsm_map_extension, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_nature_of_number, tvb, 0,1,ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_gsm_map_number_plan, tvb, 0,1,ENC_BIG_ENDIAN); + + if(tvb_reported_length(tvb)==1) + return; + + octet = tvb_get_guint8(tvb,0); + /* nature of address indicator */ + na = (octet & 0x70)>>4; + /* numbering plan indicator */ + np = octet & 0x0f; + switch(np){ + case 1: + /* ISDN/Telephony Numbering Plan (Rec ITU-T E.164) */ + switch(na){ + case 1: + /* international number */ + dissect_e164_msisdn(tvb, tree, 1, tvb_reported_length(tvb)-1, E164_ENC_BCD); + break; + default: + proto_tree_add_item(tree, hf_gsm_map_address_digits, tvb, 1, -1, ENC_BCD_DIGITS_0_9); + break; + } + break; + case 6: + /* land mobile numbering plan (ITU-T Rec E.212) */ + dissect_e212_imsi(tvb, pinfo, tree, 1, tvb_reported_length(tvb)-1, FALSE); + break; + default: + proto_tree_add_item(tree, hf_gsm_map_address_digits, tvb, 1, -1, ENC_BCD_DIGITS_0_9); + break; + } + +} + +#include "packet-gsm_map-fn.c" + +/* Specific translation for MAP V3 */ +const value_string gsm_map_V1V2_opr_code_strings[] = { + { 44, "forwardSM" }, + { 45, "sendRoutingInfoForSM" }, + { 46, "forwardSM" }, + { 0, NULL } +}; +/* Generic translation for MAP operation */ +const value_string gsm_map_opr_code_strings[] = { +#include "packet-gsm_map-table.c" + { 0, NULL } +}; + +#if 0 +static const value_string gsm_map_err_code_string_vals[] = { +#include "packet-gsm_map-table.c" + { 0, NULL } +}; +#endif + + +static const value_string gsm_map_nature_of_number_values[] = { + { 0x00, "unknown" }, + { 0x01, "International Number" }, + { 0x02, "National Significant Number" }, + { 0x03, "Network Specific Number" }, + { 0x04, "Subscriber Number" }, + { 0x05, "Reserved" }, + { 0x06, "Abbreviated Number" }, + { 0x07, "Reserved for extension" }, + { 0, NULL } +}; +static value_string_ext gsm_map_nature_of_number_values_ext = VALUE_STRING_EXT_INIT(gsm_map_nature_of_number_values); + +static const value_string gsm_map_number_plan_values[] = { + { 0x00, "unknown" }, + { 0x01, "ISDN/Telephony Numbering (Rec ITU-T E.164)" }, + { 0x02, "spare" }, + { 0x03, "Data Numbering (ITU-T Rec. X.121)" }, + { 0x04, "Telex Numbering (ITU-T Rec. F.69)" }, + { 0x05, "spare" }, + { 0x06, "Land Mobile Numbering (ITU-T Rec. E.212)" }, + { 0x07, "spare" }, + { 0x08, "National Numbering" }, + { 0x09, "Private Numbering" }, + { 0x0a, "spare" }, + { 0x0b, "spare" }, + { 0x0c, "spare" }, + { 0x0d, "spare" }, + { 0x0e, "spare" }, + { 0x0f, "Reserved for extension" }, + { 0, NULL } +}; +static value_string_ext gsm_map_number_plan_values_ext = VALUE_STRING_EXT_INIT(gsm_map_number_plan_values); + +static const true_false_string gsm_map_Ss_Status_q_bit_values = { + "Quiescent", + "Operative" +}; +static const true_false_string gsm_map_Ss_Status_p_values = { + "Provisioned", + "Not Provisioned" +}; +static const true_false_string gsm_map_Ss_Status_r_values = { + "Registered", + "Not Registered" +}; +static const true_false_string gsm_map_Ss_Status_a_values = { + "Active", + "not Active" +}; + +/* + * Translate the MAP operation code value to a text string + * Take into account the MAP version for ForwardSM + */ +const gchar* gsm_map_opr_code(guint32 val, proto_item *item) { + switch (val) { + case 44: /*mt-forwardSM*/ + /* FALLTHRU */ + case 46: /*mo-forwardSM*/ + if (application_context_version < 3) { + proto_item_set_text(item, "%s (%d)", val_to_str_const(val, gsm_map_V1V2_opr_code_strings, "Unknown GSM-MAP opcode"), val); + return val_to_str_const(val, gsm_map_V1V2_opr_code_strings, "Unknown GSM-MAP opcode"); + } + /* Else use the default map operation translation */ + /* FALLTHRU */ + default: + return val_to_str_ext_const(val, &gsm_old_GSMMAPOperationLocalvalue_vals_ext, "Unknown GSM-MAP opcode"); + break; + } +} + +/* Prototype for a decoding function */ +typedef int (* dissect_function_t)( bool, + tvbuff_t *, + int , + asn1_ctx_t *, + proto_tree *, + int); + +/* + * Dissect Multiple Choice Message + * This function is used to decode a message, when several encoding may be used. + * For exemple, in the last MAP version, the Cancel Location is defined like this: + * CancelLocationArg ::= [3] IMPLICIT SEQUENCE + * But in the previous MAP version, it was a CHOICE between a SEQUENCE and an IMSI + * As ASN1 encoders (or software) still uses the old encoding, this function allows + * the decoding of both versions. + * Moreover, some optimizations (or bad practice ?) in ASN1 encoder, removes the + * SEQUENCE tag, when only one parameter is present in the SEQUENCE. + * This explain why the function expects 3 parameters: + * - a [3] SEQUENCE corresponding the recent ASN1 MAP encoding + * - a SEQUENCE for old style + * - and a single parameter, for old version or optimizations + * + * The analyze of the first ASN1 tag, indicate what kind of decoding should be used, + * if the decoding function is provided (so not a NULL function) + */ +static int dissect_mc_message(tvbuff_t *tvb, + int offset, + asn1_ctx_t *actx, + proto_tree *tree, + bool implicit_param _U_, dissect_function_t parameter, int hf_index_param _U_, + bool implicit_seq _U_, dissect_function_t sequence, int hf_index_seq _U_, + bool implicit_seq3 _U_, dissect_function_t sequence3, int hf_index_seq3 _U_ ) +{ + guint8 octet; + gint8 bug_class; + bool bug_pc, bug_ind_field; + gint32 bug_tag; + guint32 bug_len; + + octet = tvb_get_guint8(tvb,0); + if ( (octet & 0xf) == 3) { + /* XXX asn2wrs can not yet handle tagged assignment yes so this + * XXX is some conformance file magic to work around that bug + */ + offset = get_ber_identifier(tvb, offset, &bug_class, &bug_pc, &bug_tag); + offset = get_ber_length(tvb, offset, &bug_len, &bug_ind_field); + if (sequence3 != NULL) { + offset= (sequence3) (implicit_seq3, tvb, offset, actx, tree, hf_index_seq3); + } else { + proto_tree_add_expert(tree, actx->pinfo, &ei_gsm_map_unknown_sequence3, tvb, offset, -1); + } + } else if (octet == 0x30) { + if (sequence != NULL) { + offset= (sequence) (implicit_seq, tvb, 0, actx, tree, hf_index_seq); + } else { + proto_tree_add_expert(tree, actx->pinfo, &ei_gsm_map_unknown_sequence, tvb, offset, -1); + } + } else { + if (parameter != NULL) { + offset= (parameter) (implicit_param, tvb, offset, actx, tree, hf_index_param); + } else { + proto_tree_add_expert(tree, actx->pinfo, &ei_gsm_map_unknown_parameter, tvb, offset, -1); + } + } + return offset; +} + +static int dissect_invokeData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) { + + switch(opcode){ + case 2: /*updateLocation*/ + offset=dissect_gsm_map_ms_UpdateLocationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 3: /*cancelLocation*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_Identity, hf_gsm_map_ms_identity, + FALSE, dissect_gsm_map_Identity, hf_gsm_map_ms_identity, + TRUE , dissect_gsm_map_ms_CancelLocationArg, -1);/*undefined*/ + break; + case 4: /*provideRoamingNumber*/ + offset=dissect_gsm_map_ch_ProvideRoamingNumberArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 5: /*noteSubscriberDataModified*/ + offset=dissect_gsm_map_ms_NoteSubscriberDataModifiedArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 6: /*resumeCallHandling*/ + offset=dissect_gsm_map_ch_ResumeCallHandlingArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 7: /*insertSubscriberData*/ + offset=dissect_gsm_map_ms_InsertSubscriberDataArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 8: /*deleteSubscriberData*/ + offset=dissect_gsm_map_ms_DeleteSubscriberDataArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 9: /*sendParameters*/ + offset = dissect_gsm_old_SendParametersArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 10: /*registerSS*/ + offset=dissect_gsm_map_ss_RegisterSS_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 11: /*eraseSS*/ + offset=dissect_gsm_map_ss_SS_ForBS_Code(FALSE, tvb, offset, actx, tree, -1); + break; + case 12: /*activateSS*/ + offset=dissect_gsm_map_ss_SS_ForBS_Code(FALSE, tvb, offset, actx, tree, -1); + break; + case 13: /*deactivateSS*/ + offset=dissect_gsm_map_ss_SS_ForBS_Code(FALSE, tvb, offset, actx, tree, -1); + break; + case 14: /*interrogateSS*/ + offset=dissect_gsm_map_ss_SS_ForBS_Code(FALSE, tvb, offset, actx, tree, -1); + break; + case 15: /*authenticationFailureReport*/ + offset=dissect_gsm_map_ms_AuthenticationFailureReportArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 16: /*SS-protocol notifySS*/ + offset=dissect_gsm_ss_NotifySS_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 17: /*registerPassword*/ + offset=dissect_gsm_map_SS_Code(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_Code); + break; + case 18: /*getPassword*/ + offset=dissect_gsm_old_GetPasswordArg(FALSE, tvb, offset, actx, tree, hf_gsm_map_getPassword); + break; + case 19: /* SS-Protocol processUnstructuredSS-Data (19) */ + offset=dissect_gsm_ss_SS_UserData(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_SS_UserData); + break; + case 20: /*releaseResources*/ + offset=dissect_gsm_map_ch_ReleaseResourcesArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 21: /*mt-ForwardSM-VGCS*/ + offset=dissect_gsm_map_sm_MT_ForwardSM_VGCS_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 22: /*sendRoutingInfo*/ + if (application_context_version == 3){ + offset=dissect_gsm_map_ch_SendRoutingInfoArg(FALSE, tvb, offset, actx, tree, -1); + }else{ + offset = dissect_gsm_old_SendRoutingInfoArgV2(FALSE, tvb, offset, actx, tree, -1); + } + break; + case 23: /*updateGprsLocation*/ + offset=dissect_gsm_map_ms_UpdateGprsLocationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 24: /*sendRoutingInfoForGprs*/ + offset=dissect_gsm_map_ms_SendRoutingInfoForGprsArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 25: /*failureReport*/ + offset=dissect_gsm_map_ms_FailureReportArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 26: /*noteMsPresentForGprs*/ + offset=dissect_gsm_map_ms_NoteMsPresentForGprsArg(FALSE, tvb, offset, actx, tree, -1); + break; + /* undefined 27 */ + /* reserved performHandover (28) */ + case 29: /*sendEndSignal*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_old_Bss_APDU, -1, + TRUE , dissect_gsm_map_ms_SendEndSignal_Arg, -1); + break; + /* reserved performSubsequentHandover (30) */ + case 31: /*provideSIWFSNumber*/ + offset=dissect_gsm_old_ProvideSIWFSNumberArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 32: /*sIWFSSignallingModify*/ + offset=dissect_gsm_old_SIWFSSignallingModifyArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 33: /*processAccessSignalling*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_old_Bss_APDU, -1, + TRUE , dissect_gsm_map_ms_ProcessAccessSignalling_Arg, -1); + break; + case 34: /*forwardAccessSignalling*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_old_Bss_APDU, -1, + TRUE , dissect_gsm_map_ms_ForwardAccessSignalling_Arg, -1); + break; + /* reserved noteInternalHandover (35) */ + case 36: /*cancelVcsgLocation*/ + offset=dissect_gsm_map_ms_CancelVcsgLocationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 37: /*reset*/ + if (application_context_version == 1) { + offset = dissect_gsm_old_ResetArgV1(FALSE, tvb, offset, actx, tree, -1); + } else { + offset = dissect_gsm_map_ms_ResetArg(FALSE, tvb, offset, actx, tree, -1); + } + break; + case 38: /*forwardCheckSS-Indication*/ + return offset; + break; + case 39: /*prepareGroupCall*/ + offset=dissect_gsm_map_gr_PrepareGroupCallArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 40: /*sendGroupCallEndSignal*/ + offset = dissect_gsm_map_gr_SendGroupCallEndSignalArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 41: /*processGroupCallSignalling*/ + offset = dissect_gsm_map_gr_ProcessGroupCallSignallingArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 42: /*forwardGroupCallSignalling*/ + offset=dissect_gsm_map_gr_ForwardGroupCallSignallingArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 43: /*checkIMEI*/ + if (pref_ericsson_proprietary_ext) { + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMEI, hf_gsm_map_ms_imei, + FALSE, dissect_gsm_map_ericsson_EnhancedCheckIMEI_Arg, -1, + TRUE , NULL, -1); /* no [3] SEQUENCE */ + } else { + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMEI, hf_gsm_map_ms_imei, + FALSE, dissect_gsm_map_ms_CheckIMEI_Arg, -1, + TRUE , NULL, -1); /* no [3] SEQUENCE */ + } + break; + case 44: /*mt-forwardSM(v3) or ForwardSM(v1/v2)*/ + if (application_context_version == 3) + offset=dissect_gsm_map_sm_MT_ForwardSM_Arg(FALSE, tvb, offset, actx, tree, -1); + else { + offset=dissect_gsm_old_ForwardSM_Arg(FALSE, tvb, offset, actx, tree, -1); + } + break; + case 45: /*sendRoutingInfoForSM*/ + if (application_context_version < 2) { + offset=dissect_gsm_old_RoutingInfoForSM_ArgV1(FALSE, tvb, offset, actx, tree, -1); + } else { + offset=dissect_gsm_map_sm_RoutingInfoForSM_Arg(FALSE, tvb, offset, actx, tree, -1); + } + break; + case 46: /*mo-forwardSM(v3) or ForwardSM(v1/v2)*/ + if (application_context_version == 3) + offset=dissect_gsm_map_sm_MO_ForwardSM_Arg(FALSE, tvb, offset, actx, tree, -1); + else { + offset=dissect_gsm_old_ForwardSM_Arg(FALSE, tvb, offset, actx, tree, -1); + } + break; + case 47: /*reportSM-DeliveryStatus*/ + offset=dissect_gsm_map_sm_ReportSM_DeliveryStatusArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 48: /*noteSubscriberPresent*/ + offset = dissect_gsm_map_IMSI(FALSE, tvb, offset, actx, tree, hf_gsm_map_imsi); + break; + /* reserved alertServiceCentreWithoutResult (49) + * ETS 300 599: December 2000 (GSM 09.02 version 4.19.1) + * -- alertServiceCentreWithoutResult must not be used in + * -- version greater 1 + */ + case 49: + offset = dissect_gsm_map_sm_AlertServiceCentreArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 50: /*activateTraceMode*/ + offset=dissect_gsm_map_om_ActivateTraceModeArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 51: /*deactivateTraceMode*/ + offset=dissect_gsm_map_om_DeactivateTraceModeArg(FALSE, tvb, offset, actx, tree, -1); + break; + /* reserved traceSubscriberActivity (52) */ + + case 53: /* UpdateVcsgLocation 53 */ + offset=dissect_gsm_map_ms_UpdateVcsgLocationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 54: /*beginSubscriberActivity*/ + offset=dissect_gsm_old_BeginSubscriberActivityArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 55: /*sendIdentification*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_TMSI, hf_gsm_map_tmsi, + FALSE, dissect_gsm_map_ms_SendIdentificationArg, -1, + TRUE, NULL, -1); + break; + case 56: /*sendAuthenticationInfo*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi, + FALSE, dissect_gsm_map_ms_SendAuthenticationInfoArg, -1, + TRUE, NULL, -1); + break; + case 57: /*restoreData*/ + offset=dissect_gsm_map_ms_RestoreDataArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 58: /*sendIMSI*/ + offset = dissect_gsm_map_ISDN_AddressString(FALSE, tvb, offset, actx, tree, hf_gsm_map_msisdn); + break; + case 59: /*processUnstructuredSS-Request*/ + offset=dissect_gsm_map_ss_USSD_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 60: /*unstructuredSS-Request*/ + offset=dissect_gsm_map_ss_USSD_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 61: /*unstructuredSS-Notify*/ + offset=dissect_gsm_map_ss_USSD_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 62: /*AnyTimeSubscriptionInterrogation*/ + offset=dissect_gsm_map_ms_AnyTimeSubscriptionInterrogationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 63: /*informServiceCentre*/ + offset=dissect_gsm_map_sm_InformServiceCentreArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 64: /*alertServiceCentre*/ + offset=dissect_gsm_map_sm_AlertServiceCentreArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 65: /*AnyTimeModification*/ + offset=dissect_gsm_map_ms_AnyTimeModificationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 66: /*readyForSM*/ + offset=dissect_gsm_map_sm_ReadyForSM_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 67: /*purgeMS*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi, + FALSE, dissect_gsm_old_PurgeMSArgV2, -1, /*undefined*/ + TRUE , dissect_gsm_map_ms_PurgeMS_Arg, -1); + break; + case 68: /*prepareHandover*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_old_PrepareHO_ArgOld, -1, + TRUE, dissect_gsm_map_ms_PrepareHO_Arg, -1); + break; + case 69: /*prepareSubsequentHandover*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, NULL, -1, + TRUE, dissect_gsm_map_ms_PrepareSubsequentHO_Arg, -1); + break; + case 70: /*provideSubscriberInfo*/ + offset=dissect_gsm_map_ms_ProvideSubscriberInfoArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 71: /*anyTimeInterrogation*/ + offset=dissect_gsm_map_ms_AnyTimeInterrogationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 72: /*ss-InvocationNotificatio*/ + offset=dissect_gsm_map_ss_SS_InvocationNotificationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 73: /*setReportingState*/ + offset=dissect_gsm_map_ch_SetReportingStateArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 74: /*statusReport*/ + offset=dissect_gsm_map_ch_StatusReportArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 75: /*remoteUserFree*/ + offset=dissect_gsm_map_ch_RemoteUserFreeArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 76: /*registerCC-Entry*/ + offset=dissect_gsm_map_ss_RegisterCC_EntryArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 77: /*eraseCC-Entry*/ + offset=dissect_gsm_map_ss_EraseCC_EntryArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 78: /*secureTransportClass1*/ + case 79: /*secureTransportClass1*/ + case 80: /*secureTransportClass1*/ + case 81: /*secureTransportClass1*/ + offset=dissect_gsm_old_SecureTransportArg(FALSE, tvb, offset, actx, tree, -1); + break; + /* undefined 82 */ + case 83: /*provideSubscriberLocation*/ + offset=dissect_gsm_map_lcs_ProvideSubscriberLocation_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 84: /*sendGroupCallInfo*/ + offset=dissect_gsm_map_gr_SendGroupCallInfoArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 85: /*sendRoutingInfoForLCS*/ + offset=dissect_gsm_map_lcs_RoutingInfoForLCS_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 86: /*subscriberLocationReport*/ + offset=dissect_gsm_map_lcs_SubscriberLocationReport_Arg(FALSE, tvb, offset, actx, tree, -1); + break; + case 87: /*ist-Alert*/ + offset=dissect_gsm_map_ch_IST_AlertArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 88: /*ist-Command*/ + offset=dissect_gsm_map_ch_IST_CommandArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 89: /*noteMM-Event*/ + offset=dissect_gsm_map_ms_NoteMM_EventArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 108: /*SS-protocol lcs-PeriodicTriggeredInvoke*/ + offset = dissect_gsm_ss_LCS_PeriodicTriggeredInvokeArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 109: /*SS-protocol lcs-PeriodicLocationCancellation*/ + offset=dissect_gsm_ss_LCS_PeriodicLocationCancellationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 110: /*SS-protocol lcs-LocationUpdate*/ + offset=dissect_gsm_ss_LCS_LocationUpdateArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 111: /*SS-protocol lcs-PeriodicLocationRequest*/ + offset=dissect_gsm_ss_LCS_PeriodicLocationRequestArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 112: /*SS-protocol lcs-AreaEventCancellation*/ + offset=dissect_gsm_ss_LCS_AreaEventCancellationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 113: /*SS-protocol lcs-AreaEventReport*/ + offset=dissect_gsm_ss_LCS_AreaEventReportArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 114: /*SS-protocol lcs-AreaEventRequest*/ + offset=dissect_gsm_ss_LCS_AreaEventRequestArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 115: /*SS-protocol lcs-MOLR*/ + offset=dissect_gsm_ss_LCS_MOLRArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 116: /*SS-protocol lcs-LocationNotification*/ + offset=dissect_gsm_ss_LocationNotificationArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 117: /*SS-protocol callDeflection*/ + offset=dissect_gsm_ss_CallDeflectionArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 118: /*SS-protocol userUserService*/ + offset=dissect_gsm_ss_UserUserServiceArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 119: /*SS-protocol accessRegisterCCEntry*/ + offset=dissect_gsm_ss_AccessRegisterCCEntryArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 120: /*SS-protocol forwardCUG-Info*/ + application_context_version = 3; + offset=dissect_gsm_ss_ForwardCUG_InfoArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 121: /*SS-protocol splitMPTY no Argument*/ + break; + case 122: /*SS-protocol retrieveMPTY no Argument*/ + break; + case 123: /*SS-protocol holdMPTY no Argument*/ + break; + case 124: /*SS-protocol buildMPTY no Argument*/ + break; + case 125: /*SS-protocol forwardChargeAdvice*/ + offset=dissect_gsm_ss_ForwardChargeAdviceArg(FALSE, tvb, offset, actx, tree, -1); + break; + case 126: /*SS-protocol explicitCT no Argument*/ + break; + default: + if(!dissector_try_uint_new(map_prop_arg_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree, TRUE, actx->subtree.top_tree)){ + proto_tree_add_expert_format(tree, actx->pinfo, &ei_gsm_map_unknown_invokeData, + tvb, offset, -1, "Unknown invokeData %d", opcode); + } + offset+= tvb_reported_length_remaining(tvb,offset); + break; + } + return offset; +} + + +static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) { + + switch(opcode){ + case 2: /*updateLocation*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi, + FALSE, dissect_gsm_map_ms_UpdateLocationRes, -1, + TRUE , NULL, -1); + break; + case 3: /*cancelLocation*/ + offset=dissect_gsm_map_ms_CancelLocationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 4: /*provideRoamingNumber*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_ISDN_AddressString, hf_gsm_map_msisdn, + FALSE, dissect_gsm_map_ch_ProvideRoamingNumberRes, -1, + TRUE , NULL, -1);/*undefined*/ + break; + case 5: /*noteSubscriberDataModified*/ + offset=dissect_gsm_map_ms_NoteSubscriberDataModifiedRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 6: /*resumeCallHandling*/ + offset=dissect_gsm_map_ch_ResumeCallHandlingRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 7: /*insertSubscriberData*/ + offset=dissect_gsm_map_ms_InsertSubscriberDataRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 8: /*deleteSubscriberData*/ + offset=dissect_gsm_map_ms_DeleteSubscriberDataRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 9: /*sendParameters*/ + offset = dissect_gsm_old_SentParameterList(FALSE, tvb, offset, actx, tree, -1); + break; + case 10: /*registerSS*/ + offset=dissect_gsm_map_ss_SS_Info(FALSE, tvb, offset, actx, tree, -1); + break; + case 11: /*eraseSS*/ + offset=dissect_gsm_map_ss_SS_Info(FALSE, tvb, offset, actx, tree, -1); + break; + case 12: /*activateSS*/ + offset=dissect_gsm_map_ss_SS_Info(FALSE, tvb, offset, actx, tree, -1); + break; + case 13: /*deactivateSS*/ + offset=dissect_gsm_map_ss_SS_Info(FALSE, tvb, offset, actx, tree, -1); + break; + case 14: /*interrogateSS*/ + offset=dissect_gsm_map_ss_InterrogateSS_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 15: /*authenticationFailureReport*/ + offset=dissect_gsm_map_ms_AuthenticationFailureReportRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 17: /*registerPassword*/ + /* change hf_gsm_map_ss_Code to something with password */ + offset=dissect_gsm_old_NewPassword(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_Code); + break; + case 18: /*getPassword*/ + offset=dissect_gsm_old_CurrentPassword(FALSE, tvb, offset, actx, tree, hf_gsm_map_currentPassword); + break; + case 19: /* SS-Protocol processUnstructuredSS-Data (19) */ + offset=dissect_gsm_ss_SS_UserData(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_SS_UserData); + break; + case 20: /*releaseResources*/ + offset=dissect_gsm_map_ch_ReleaseResourcesRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 21: /*mt-ForwardSM-VGCS*/ + offset=dissect_gsm_map_sm_MT_ForwardSM_VGCS_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 22: /*sendRoutingInfo*/ + if (application_context_version == 3){ + /* If the tag is missing use SendRoutingInfoRes_U */ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_map_ch_SendRoutingInfoRes_U, -1, + TRUE , dissect_gsm_map_ch_SendRoutingInfoRes, -1); + }else{ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi, + FALSE, dissect_gsm_old_SendRoutingInfoResV2, -1, + TRUE , dissect_gsm_map_ch_SendRoutingInfoRes, -1); + } + break; + case 23: /*updateGprsLocation*/ + offset=dissect_gsm_map_ms_UpdateGprsLocationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 24: /*sendRoutingInfoForGprs*/ + offset=dissect_gsm_map_ms_SendRoutingInfoForGprsRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 25: /*failureReport*/ + offset=dissect_gsm_map_ms_FailureReportRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 26: /*noteMsPresentForGprs*/ + offset=dissect_gsm_map_ms_NoteMsPresentForGprsRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 29: /*sendEndSignal*/ + /* Taken from MAP-MobileServiceOperations{ 0 identified-organization (4) etsi (0) mobileDomain + * (0) gsm-Network (1) modules (3) map-MobileServiceOperations (5) version9 (9) } + */ + offset=dissect_gsm_map_ms_SendEndSignal_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 31: /*provideSIWFSNumber*/ + offset=dissect_gsm_old_ProvideSIWFSNumberRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 32: /*provideSIWFSSignallingModify*/ + offset=dissect_gsm_old_SIWFSSignallingModifyRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 36: /*cancelVcsgLocation*/ + offset=dissect_gsm_map_ms_CancelVcsgLocationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 39: /*prepareGroupCall*/ + offset=dissect_gsm_map_gr_PrepareGroupCallRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 40: /*sendGroupCallEndSignal*/ + offset=dissect_gsm_map_gr_SendGroupCallEndSignalRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 43: /*checkIMEI*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_ms_EquipmentStatus, hf_gsm_map_ms_equipmentStatus, + FALSE, dissect_gsm_map_ms_CheckIMEI_Res, -1, + TRUE, NULL, -1); + break; + case 44: /*mt-forwardSM*/ + offset=dissect_gsm_map_sm_MT_ForwardSM_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 45: /*sendRoutingInfoForSM*/ + if (application_context_version < 3) { + offset=dissect_gsm_old_RoutingInfoForSM_ResV2(FALSE, tvb, offset, actx, tree, -1); + } else { + offset=dissect_gsm_map_sm_RoutingInfoForSM_Res(FALSE, tvb, offset, actx, tree, -1); + } + break; + case 46: /*mo-forwardSM*/ + offset=dissect_gsm_map_sm_MO_ForwardSM_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 47: /*reportSM-DeliveryStatus*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_ISDN_AddressString, hf_gsm_map_sm_storedMSISDN, + FALSE, dissect_gsm_map_sm_ReportSM_DeliveryStatusRes, -1, + FALSE, NULL, -1);/*undefined*/ + break; + case 48: /*noteSubscriberPresent*/ + break; + case 50: /*activateTraceMode*/ + offset=dissect_gsm_map_om_ActivateTraceModeRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 51: /*deactivateTraceMode*/ + offset=dissect_gsm_map_om_DeactivateTraceModeRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 53: /* UpdateVcsgLocation 53 */ + offset=dissect_gsm_map_ms_UpdateVcsgLocationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 55: /*sendIdentification */ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_IMSI, hf_gsm_map_imsi, + FALSE, dissect_gsm_old_SendIdentificationResV2, -1,/*undefined*/ + TRUE, dissect_gsm_map_ms_SendIdentificationRes, -1); + break; + case 56: /*sendAuthenticationInfo*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_old_SendAuthenticationInfoResOld, -1, + TRUE , dissect_gsm_map_ms_SendAuthenticationInfoRes, -1); + break; + case 57: /*restoreData*/ + offset=dissect_gsm_map_ms_RestoreDataRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 58: /*sendIMSI*/ + offset=dissect_gsm_map_IMSI(FALSE, tvb, offset, actx, tree, hf_gsm_map_ms_imsi); + break; + case 59: /*unstructuredSS-Request*/ + offset=dissect_gsm_map_ss_USSD_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 60: /*unstructuredSS-Request*/ + offset=dissect_gsm_map_ss_USSD_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 61: /*unstructuredSS-Notify*/ + /* TRUE ? */ + proto_tree_add_expert_format(tree, actx->pinfo, &ei_gsm_map_unknown_invokeData, tvb, offset, -1, "Unknown returnResultData blob"); + break; + case 62: /*AnyTimeSubscriptionInterrogation*/ + offset=dissect_gsm_map_ms_AnyTimeSubscriptionInterrogationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 64: /*alertServiceCentre*/ + /* TRUE */ + break; + case 65: /*AnyTimeModification*/ + offset=dissect_gsm_map_ms_AnyTimeModificationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 66: /*readyForSM*/ + offset=dissect_gsm_map_sm_ReadyForSM_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 67: /*purgeMS*/ + offset=dissect_gsm_map_ms_PurgeMS_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 68: /*prepareHandover*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, dissect_gsm_old_PrepareHO_ResOld, -1, + TRUE , dissect_gsm_map_ms_PrepareHO_Res, -1); + break; + case 69: /*prepareSubsequentHandover*/ + offset=dissect_mc_message(tvb, offset, actx, tree, + FALSE, NULL, -1, + FALSE, NULL, -1, + TRUE , dissect_gsm_map_ms_PrepareSubsequentHO_Res, -1); + break; + case 70: /*provideSubscriberInfo*/ + offset=dissect_gsm_map_ms_ProvideSubscriberInfoRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 71: /*anyTimeInterrogation*/ + offset=dissect_gsm_map_ms_AnyTimeInterrogationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 72: /*ss-InvocationNotificatio*/ + offset=dissect_gsm_map_ss_SS_InvocationNotificationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 73: /*setReportingState*/ + offset=dissect_gsm_map_ch_SetReportingStateRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 74: /*statusReport*/ + offset=dissect_gsm_map_ch_StatusReportRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 75: /*remoteUserFree*/ + offset=dissect_gsm_map_ch_RemoteUserFreeRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 76: /*registerCC-Entry*/ + offset=dissect_gsm_map_ss_RegisterCC_EntryRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 77: /*eraseCC-Entry*/ + offset=dissect_gsm_map_ss_EraseCC_EntryRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 78: /*secureTransportClass1*/ + case 79: /*secureTransportClass2*/ + case 80: /*secureTransportClass3*/ + case 81: /*secureTransportClass4*/ + offset=dissect_gsm_old_SecureTransportRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 83: /*provideSubscriberLocation*/ + offset=dissect_gsm_map_lcs_ProvideSubscriberLocation_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 84: /*sendGroupCallInfo*/ + offset=dissect_gsm_map_gr_SendGroupCallInfoRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 85: /*sendRoutingInfoForLCS*/ + offset=dissect_gsm_map_lcs_RoutingInfoForLCS_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 86: /*subscriberLocationReport*/ + offset=dissect_gsm_map_lcs_SubscriberLocationReport_Res(FALSE, tvb, offset, actx, tree, -1); + break; + case 87: /*ist-Alert*/ + offset=dissect_gsm_map_ch_IST_AlertRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 88: /*ist-Command*/ + offset=dissect_gsm_map_ch_IST_CommandRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 89: /*noteMM-Event*/ + offset=dissect_gsm_map_ms_NoteMM_EventRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 108: /*SS-protocol LCS-PeriodicTriggeredInvokeRes*/ + offset = dissect_gsm_ss_LCS_PeriodicTriggeredInvokeRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 109: /*SS-protocol lcs-PeriodicLocationCancellation*/ + /* No parameter */ + break; + case 110: /*SS-protocol lcs-LocationUpdate*/ + offset=dissect_gsm_ss_LCS_LocationUpdateRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 111: /*SS-protocol lcs-PeriodicLocationRequest*/ + offset=dissect_gsm_ss_LCS_PeriodicLocationRequestRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 112: /*SS-protocol lcs-AreaEventCancellation*/ + break; + case 113: /*SS-protocol lcs-AreaEventReport*/ + break; + case 114: /*SS-protocol lcs-AreaEventRequest No RESULT data*/ + break; + case 115: /*SS-protocol lcs-MOLR*/ + offset=dissect_gsm_ss_LCS_MOLRRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 116: /*SS-protocol lcs-LocationNotification*/ + offset=dissect_gsm_ss_LocationNotificationRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 117: /*SS-protocol callDeflection no RESULT*/ + break; + case 118: /*SS-protocol userUserService no RESULT*/ + break; + case 119: /*SS-protocol accessRegisterCCEntry*/ + offset=dissect_gsm_map_ss_RegisterCC_EntryRes(FALSE, tvb, offset, actx, tree, -1); + break; + case 120: /*SS-protocol forwardCUG-Info*/ + /* No RETURN RESULT*/ + break; + case 121: /*SS-protocol splitMPTY no RESULT*/ + break; + case 122: /*SS-protocol retrieveMPTY no RESULT*/ + break; + case 123: /*SS-protocol holdMPTY no RESULT*/ + break; + case 124: /*SS-protocol buildMPTY no RESULT*/ + break; + case 125: /*SS-protocol forwardChargeAdvice no RESULT*/ + break; + case 126: /*SS-protocol explicitCT no RESULT*/ + break; + + default: + if(!dissector_try_uint_new(map_prop_res_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree, TRUE, actx->subtree.top_tree)){ + proto_tree_add_expert_format(tree, actx->pinfo, &ei_gsm_map_unknown_invokeData, + tvb, offset, -1, "Unknown returnResultData %d", opcode); + } + offset+= tvb_reported_length_remaining(tvb,offset); + break; + } + return offset; +} + + + +static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx) { + + switch(errorCode){ + case 1: /* UnknownSubscriberParam */ + offset=dissect_gsm_map_er_UnknownSubscriberParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 4: /* SecureTransportErrorParam */ + offset=dissect_gsm_old_SecureTransportErrorParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 5: /* UnidentifiedSubParam */ + offset=dissect_gsm_map_er_UnidentifiedSubParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 6: /* AbsentSubscriberSM-Param */ + offset=dissect_gsm_map_er_AbsentSubscriberSM_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 8: /* RoamingNotAllowedParam */ + offset=dissect_gsm_map_er_RoamingNotAllowedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 9: /* IllegalSubscriberParam */ + offset=dissect_gsm_map_er_IllegalSubscriberParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 10: /* BearerServNotProvParam */ + offset=dissect_gsm_map_er_BearerServNotProvParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 11: /* TeleservNotProvParam */ + offset=dissect_gsm_map_er_TeleservNotProvParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 12: /* IllegalEquipmentParam */ + offset=dissect_gsm_map_er_IllegalEquipmentParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 13: /* CallBarredParam */ + offset=dissect_gsm_map_er_CallBarredParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 14: /* ForwardingViolationParam */ + offset=dissect_gsm_map_er_ForwardingViolationParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 15: /* CUG-RejectParam */ + offset=dissect_gsm_map_er_CUG_RejectParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 16: /* IllegalSS-OperationParam */ + offset=dissect_gsm_map_er_IllegalSS_OperationParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 17: /* SS-ErrorStatus */ + offset=dissect_gsm_map_ss_SS_Status(FALSE, tvb, offset, actx, tree, hf_gsm_map_ss_ss_Status); + break; + case 18: /* SS-NotAvailableParam */ + offset=dissect_gsm_map_er_SS_NotAvailableParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 19: /* SS-SubscriptionViolationParam */ + offset=dissect_gsm_map_er_SS_SubscriptionViolationParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 20: /* SS-IncompatibilityCause */ + offset=dissect_gsm_map_er_SS_IncompatibilityCause(FALSE, tvb, offset, actx, tree, -1); + break; + case 21: /* FacilityNotSupParam */ + offset=dissect_gsm_map_er_FacilityNotSupParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 22: /* OngoingGroupCallParam */ + offset=dissect_gsm_map_er_OngoingGroupCallParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 27: /* AbsentSubscriberParam */ + offset=dissect_gsm_map_er_AbsentSubscriberParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 28: /* IncompatibleTerminalParam */ + offset=dissect_gsm_map_er_IncompatibleTerminalParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 29: /* ShortTermDenialParam */ + offset=dissect_gsm_map_er_ShortTermDenialParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 30: /* LongTermDenialParam */ + offset=dissect_gsm_map_er_LongTermDenialParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 31: /* SubBusyForMT-SMS-Param */ + offset=dissect_gsm_map_er_SubBusyForMT_SMS_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 32: /* SM-DeliveryFailureCause */ + offset = dissect_mc_message(tvb, offset, actx, tree, + FALSE, dissect_gsm_map_er_SM_EnumeratedDeliveryFailureCause, hf_gsm_map_er_sm_EnumeratedDeliveryFailureCause, + FALSE, dissect_gsm_map_er_SM_DeliveryFailureCause, -1, + FALSE, NULL, -1); + + break; + case 33: /* MessageWaitListFullParam */ + offset=dissect_gsm_map_er_MessageWaitListFullParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 34: /* SystemFailureParam */ + offset=dissect_gsm_map_er_SystemFailureParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 35: /* DataMissingParam */ + offset=dissect_gsm_map_er_DataMissingParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 36: /* UnexpectedDataParam */ + offset=dissect_gsm_map_er_UnexpectedDataParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 37: /* PW-RegistrationFailureCause */ + offset=dissect_gsm_map_er_PW_RegistrationFailureCause(FALSE, tvb, offset, actx, tree, -1); + break; + case 39: /* NoRoamingNbParam */ + offset=dissect_gsm_map_er_NoRoamingNbParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 40: /* TracingBufferFullParam */ + offset=dissect_gsm_map_er_TracingBufferFullParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 42: /* TargetCellOutsideGCA-Param */ + offset=dissect_gsm_map_er_TargetCellOutsideGCA_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 44: /* NumberChangedParam */ + offset=dissect_gsm_map_er_NumberChangedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 45: /* BusySubscriberParam */ + offset=dissect_gsm_map_er_BusySubscriberParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 46: /* NoSubscriberReplyParam */ + offset=dissect_gsm_map_er_NoSubscriberReplyParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 47: /* ForwardingFailedParam */ + offset=dissect_gsm_map_er_ForwardingFailedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 48: /* OR-NotAllowedParam */ + offset=dissect_gsm_map_er_OR_NotAllowedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 49: /* ATI-NotAllowedParam */ + offset=dissect_gsm_map_er_ATI_NotAllowedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 50: /* NoGroupCallNbParam */ + offset=dissect_gsm_map_er_NoGroupCallNbParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 51: /* ResourceLimitationParam */ + offset=dissect_gsm_map_er_ResourceLimitationParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 52: /* UnauthorizedRequestingNetwork-Param */ + offset=dissect_gsm_map_er_UnauthorizedRequestingNetwork_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 53: /* UnauthorizedLCSClient-Param */ + offset=dissect_gsm_map_er_UnauthorizedLCSClient_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 54: /* PositionMethodFailure-Param */ + offset=dissect_gsm_map_er_PositionMethodFailure_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 58: /* UnknownOrUnreachableLCSClient-Param */ + offset=dissect_gsm_map_er_UnknownOrUnreachableLCSClient_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 59: /* MM-EventNotSupported-Param */ + offset=dissect_gsm_map_er_MM_EventNotSupported_Param(FALSE, tvb, offset, actx, tree, -1); + break; + case 60: /* ATSI-NotAllowedParam */ + offset=dissect_gsm_map_er_ATSI_NotAllowedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 61: /* ATM-NotAllowedParam */ + offset=dissect_gsm_map_er_ATM_NotAllowedParam(FALSE, tvb, offset, actx, tree, -1); + break; + case 62: /* InformationNotAvailableParam */ + offset=dissect_gsm_map_er_InformationNotAvailableParam(FALSE, tvb, offset, actx, tree, -1); + break; + default: + if(!dissector_try_uint_new(map_prop_err_opcode_table, (guint8)opcode, tvb, actx->pinfo, tree, TRUE, actx->subtree.top_tree)){ + proto_tree_add_expert_format(tree, actx->pinfo, &ei_gsm_map_unknown_invokeData, + tvb, offset, -1, "Unknown returnErrorData %d", opcode); + } + offset+= tvb_reported_length_remaining(tvb,offset); + break; + } + return offset; +} + +/* Private extension container for PLMN Data */ +static int dissect_gsm_mapext_PlmnContainer(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_gsm_old_PlmnContainer_U, NULL, "MAP Ext. Plmn Container"); + + return dissect_gsm_old_PlmnContainer(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_gsm_map_ericsson_ext_ExtensionType(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_gsm_map_ericsson_ExtensionType, NULL, "Ericsson Extension"); + return dissect_gsm_map_ericsson_ExtensionType(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_SriResExtension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_SriResExtension_U, NULL, "Nokia Extension"); + return dissect_NokiaMAP_Extensions_SriResExtension(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_CanLocArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_CanLocArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_CanLocArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_ATMargExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_ATMargExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_ATMargExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_DTMargExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_DTMargExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_DTMargExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_NumberPorted(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + + return dissect_NokiaMAP_Extensions_NumberPorted(FALSE, tvb, 0, &asn1_ctx, parent_tree, -1); +} + +static int dissect_NokiaMAP_ext_ATMresExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_ATMresExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_ATMresExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_AbsentSubscriberExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + asn1_ctx_t asn1_ctx; + + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + return dissect_NokiaMAP_Extensions_AbsentSubscriberExt(FALSE, tvb, 0, &asn1_ctx, parent_tree, -1); +} + +static int dissect_NokiaMAP_ext_SriForSMArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_SriForSMArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_SriForSMArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_ReportSMDelStatArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_ReportSMDelStatArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_ReportSMDelStatArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_UdlArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_UdlArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_UdlArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_RoamNotAllowedExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_RoamNotAllowedExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_RoamNotAllowedExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_MO_ForwardSM_ArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_MO_ForwardSM_ArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_MO_ForwardSM_ArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_ErrOlcmInfoTableExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_ErrOlcmInfoTableExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_ErrOlcmInfoTableExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_RoutingCategoryExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_RoutingCategoryExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_RoutingCategoryExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_AnyTimeModArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_AnyTimeModArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_AnyTimeModArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_AccessTypeExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + return dissect_NokiaMAP_Extensions_AccessTypeExt(FALSE, tvb, 0, &asn1_ctx, parent_tree, -1); +} + +static int dissect_NokiaMAP_ext_AccessSubscriptionListExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + return dissect_NokiaMAP_Extensions_AccessSubscriptionListExt(FALSE, tvb, 0, &asn1_ctx, parent_tree, -1); +} + +static int dissect_NokiaMAP_ext_AllowedServiceData(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + return dissect_NokiaMAP_Extensions_AllowedServiceData(FALSE, tvb, 0, &asn1_ctx, parent_tree, -1); +} + +static int dissect_NokiaMAP_ext_SriExtension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_SriExtension_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_SriExtension(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ExtraSignalInfo(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_ExtraSignalInfo_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_ExtraSignalInfo(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_SS_DataExtension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_SS_DataExtension_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_SS_DataExtension(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_HOExtension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_HO_Ext_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_HO_Ext(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_UlResExtension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_UlResExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_UlResExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + + +static int dissect_NokiaMAP_ext_IsdArgExtension(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_IsdArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_IsdArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int dissect_NokiaMAP_ext_DsdArgExt(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_) { + proto_tree *tree; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + /* create display subtree for the protocol */ + tree = proto_tree_add_subtree(parent_tree, tvb, 0, -1, ett_NokiaMAP_Extensions_DsdArgExt_U, NULL, "Nokia Extension"); + + return dissect_NokiaMAP_Extensions_DsdArgExt(FALSE, tvb, 0, &asn1_ctx, tree, -1); +} + +static int +dissect_gsm_map_GSMMAPPDU(bool implicit_tag _U_, tvbuff_t *tvb, int offset, + asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) { + + char *version_ptr; + + opcode = 0; + if (pref_application_context_version == APPLICATON_CONTEXT_FROM_TRACE) { + gsm_map_private_info_t *gsm_map_priv = (gsm_map_private_info_t*)actx->value_ptr; + application_context_version = 0; + if (gsm_map_priv && gsm_map_priv->tcap_private != NULL){ + if (gsm_map_priv->tcap_private->acv==TRUE ){ + version_ptr = strrchr((const char*)gsm_map_priv->tcap_private->oid,'.'); + if (version_ptr){ + ws_strtoi32(version_ptr + 1, NULL, &application_context_version); + } + } + } + }else{ + application_context_version = pref_application_context_version; + } + + gsmmap_pdu_type = tvb_get_guint8(tvb, offset)&0x0f; + /* Get the length and add 2 */ + gsm_map_pdu_size = tvb_get_guint8(tvb, offset+1)+2; + + col_set_str(actx->pinfo->cinfo, COL_INFO, val_to_str_const(gsmmap_pdu_type, gsm_old_Component_vals, "Unknown GSM-MAP Component")); + col_append_str(actx->pinfo->cinfo, COL_INFO, " "); + offset = dissect_gsm_old_Component(FALSE, tvb, 0, actx, tree, hf_gsm_map_old_Component_PDU); +/* + offset = dissect_ber_choice(pinfo, tree, tvb, offset, + GSMMAPPDU_choice, hf_index, ett_gsm_map_GSMMAPPDU, NULL); +*/ + + return offset; +} + +static int +dissect_gsm_map(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data) +{ + proto_item *item=NULL; + proto_tree *tree=NULL; + /* Used for gsm_map TAP */ + static gsm_map_tap_rec_t tap_rec; + gint op_idx; + asn1_ctx_t asn1_ctx; + gsm_map_private_info_t *gsm_map_priv; + + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + + col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM MAP"); + + asn1_ctx.subtree.top_tree = parent_tree; + + gsm_map_priv = wmem_new0(pinfo->pool, gsm_map_private_info_t); + gsm_map_priv->tcap_private = (struct tcap_private_t *)data; + asn1_ctx.value_ptr = gsm_map_priv; + + /* create display subtree for the protocol */ + item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_gsm_map); + + dissect_gsm_map_GSMMAPPDU(FALSE, tvb, 0, &asn1_ctx, tree, -1); + try_val_to_str_idx(opcode, gsm_map_opr_code_strings, &op_idx); + + if (op_idx != -1) { + tap_rec.invoke = (gsmmap_pdu_type == 1) ? TRUE : FALSE; + tap_rec.opcode = opcode; + tap_rec.size = gsm_map_pdu_size; + + tap_queue_packet(gsm_map_tap, pinfo, &tap_rec); + } + + return tvb_captured_length(tvb); +} + +static int +dissect_gsm_map_sccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data) +{ + proto_item *item=NULL; + proto_tree *tree=NULL; + /* Used for gsm_map TAP */ + static gsm_map_tap_rec_t tap_rec; + gint op_idx; + asn1_ctx_t asn1_ctx; + gsm_map_private_info_t *gsm_map_priv; + + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + + col_set_str(pinfo->cinfo, COL_PROTOCOL, "GSM MAP"); + + asn1_ctx.subtree.top_tree = parent_tree; + + gsm_map_priv = wmem_new0(pinfo->pool, gsm_map_private_info_t); + gsm_map_priv->sccp_msg_info = (sccp_msg_info_t *)data; + asn1_ctx.value_ptr = gsm_map_priv; + + /* create display subtree for the protocol */ + item = proto_tree_add_item(parent_tree, proto_gsm_map, tvb, 0, -1, ENC_NA); + tree = proto_item_add_subtree(item, ett_gsm_map); + + dissect_gsm_map_GSMMAPPDU(FALSE, tvb, 0, &asn1_ctx, tree, -1); + try_val_to_str_idx(opcode, gsm_map_opr_code_strings, &op_idx); + + if (op_idx != -1) { + tap_rec.invoke = (gsmmap_pdu_type == 1) ? TRUE : FALSE; + tap_rec.opcode = opcode; + tap_rec.size = gsm_map_pdu_size; + + tap_queue_packet(gsm_map_tap, pinfo, &tap_rec); + } + + return tvb_captured_length(tvb); +} + +const value_string ssCode_vals[] = { + { 0x00, "allSS - all SS" }, + { 0x10 ,"allLineIdentificationSS - all line identification SS" }, + { 0x11 ,"clip - calling line identification presentation" }, + { 0x12 ,"clir - calling line identification restriction" }, + { 0x13 ,"colp - connected line identification presentation" }, + { 0x14 ,"colr - connected line identification restriction" }, + { 0x15 ,"mci - malicious call identification" }, + { 0x18 ,"allNameIdentificationSS - all name identification SS" }, + { 0x19 ,"cnap - calling name presentation" }, + { 0x20 ,"allForwardingSS - all forwarding SS" }, + { 0x21 ,"cfu - call forwarding unconditional" }, + { 0x28 ,"allCondForwardingSS - all conditional forwarding SS" }, + { 0x29 ,"cfb - call forwarding busy" }, + { 0x2a ,"cfnry - call forwarding on no reply" }, + { 0x2b ,"cfnrc - call forwarding on mobile subscriber not reachable" }, + { 0x24 ,"cd - call deflection" }, + { 0x30 ,"allCallOfferingSS - all call offering SS includes also all forwarding SS" }, + { 0x31 ,"ect - explicit call transfer" }, + { 0x32 ,"mah - mobile access hunting" }, + { 0x40 ,"allCallCompletionSS - all Call completion SS" }, + { 0x41 ,"cw - call waiting" }, + { 0x42 ,"hold - call hold" }, + { 0x43 ,"ccbs-A - completion of call to busy subscribers, originating side" }, + { 0x44 ,"ccbs-B - completion of call to busy subscribers, destination side" }, + { 0x45 ,"mc - multicall" }, + { 0x50 ,"allMultiPartySS - all multiparty SS" }, + { 0x51 ,"multiPTY - multiparty" }, + { 0x60 ,"allCommunityOfInterestSS - all community of interest SS" }, + { 0x61 ,"cug - closed user group" }, + { 0x70 ,"allChargingSS - all charging SS" }, + { 0x71 ,"aoci - advice of charge information" }, + { 0x72 ,"aocc - advice of charge charging" }, + { 0x80 ,"allAdditionalInfoTransferSS - all additional information transfer SS" }, + { 0x81 ,"uus1 - UUS1 user-to-user signalling" }, + { 0x82 ,"uus2 - UUS2 user-to-user signalling" }, + { 0x83 ,"uus3 - UUS3 user-to-user signalling" }, + { 0x90 ,"allCallRestrictionSS - all Callrestriction SS" }, + { 0x91 ,"barringOfOutgoingCalls" }, + { 0x92 ,"baoc - barring of all outgoing calls" }, + { 0x93 ,"boic - barring of outgoing international calls" }, + { 0x94 ,"boicExHC - barring of outgoing international calls except those directed to the home PLMN" }, + { 0x99 ,"barringOfIncomingCalls" }, + { 0x9a ,"baic - barring of all incoming calls" }, + { 0x9b ,"bicRoam - barring of incoming calls when roaming outside home PLMN Country" }, + { 0xf0 ,"allPLMN-specificSS" }, + { 0xa0 ,"allCallPrioritySS - all call priority SS" }, + { 0xa1 ,"emlpp - enhanced Multilevel Precedence Pre-emption (EMLPP) service" }, + { 0xb0 ,"allLCSPrivacyException - all LCS Privacy Exception Classes" }, + { 0xb1 ,"universal - allow location by any LCS client" }, + { 0xb2 ,"callrelated - allow location by any value added LCS client to which a call is established from the target MS" }, + { 0xb3 ,"callunrelated - allow location by designated external value added LCS clients" }, + { 0xb4 ,"plmnoperator - allow location by designated PLMN operator LCS clients" }, + { 0xb5 ,"serviceType - allow location by LCS clients of a designated LCS service type" }, + { 0xc0 ,"allMOLR-SS - all Mobile Originating Location Request Classes" }, + { 0xc1 ,"basicSelfLocation - allow an MS to request its own location" }, + { 0xc2 ,"autonomousSelfLocation - allow an MS to perform self location without interaction with the PLMN for a predetermined period of time" }, + { 0xc3 ,"transferToThirdParty - allow an MS to request transfer of its location to another LCS client" }, + + { 0xf1 ,"plmn-specificSS-1" }, + { 0xf2 ,"plmn-specificSS-2" }, + { 0xf3 ,"plmn-specificSS-3" }, + { 0xf4 ,"plmn-specificSS-4" }, + { 0xf5 ,"plmn-specificSS-5" }, + { 0xf6 ,"plmn-specificSS-6" }, + { 0xf7 ,"plmn-specificSS-7" }, + { 0xf8 ,"plmn-specificSS-8" }, + { 0xf9 ,"plmn-specificSS-9" }, + { 0xfa ,"plmn-specificSS-a" }, + { 0xfb ,"plmn-specificSS-b" }, + { 0xfc ,"plmn-specificSS-c" }, + { 0xfd ,"plmn-specificSS-d" }, + { 0xfe ,"plmn-specificSS-e" }, + { 0xff ,"plmn-specificSS-f" }, + { 0, NULL } +}; + +static const value_string Teleservice_vals[] = { + { 0x00, "allTeleservices" }, + { 0x10, "allSpeechTransmissionServices" }, + { 0x11, "telephony" }, + { 0x12, "emergencyCalls" }, + { 0x20, "allShortMessageServices" }, + { 0x21, "shortMessageMT-PP" }, + { 0x22, "shortMessageMO-PP" }, + { 0x60, "allFacsimileTransmissionServices" }, + { 0x61, "facsimileGroup3AndAlterSpeech" }, + { 0x62, "automaticFacsimileGroup3" }, + { 0x63, "facsimileGroup4" }, + + { 0x70, "allDataTeleservices" }, + { 0x80, "allTeleservices-ExceptSMS" }, + + { 0x90, "allVoiceGroupCallServices" }, + { 0x91, "voiceGroupCall" }, + { 0x92, "voiceBroadcastCall" }, + + { 0xd0, "allPLMN-specificTS" }, + { 0xd1, "plmn-specificTS-1" }, + { 0xd2, "plmn-specificTS-2" }, + { 0xd3, "plmn-specificTS-3" }, + { 0xd4, "plmn-specificTS-4" }, + { 0xd5, "plmn-specificTS-5" }, + { 0xd6, "plmn-specificTS-6" }, + { 0xd7, "plmn-specificTS-7" }, + { 0xd8, "plmn-specificTS-8" }, + { 0xd9, "plmn-specificTS-9" }, + { 0xda, "plmn-specificTS-A" }, + { 0xdb, "plmn-specificTS-B" }, + { 0xdc, "plmn-specificTS-C" }, + { 0xdd, "plmn-specificTS-D" }, + { 0xde, "plmn-specificTS-E" }, + { 0xdf, "plmn-specificTS-F" }, + { 0, NULL } +}; + +static const value_string Bearerservice_vals[] = { + { 0x00, "allBearerServices" }, + { 0x10, "allDataCDA-Services" }, + { 0x11, "dataCDA-300bps" }, + { 0x12, "dataCDA-1200bps" }, + { 0x13, "dataCDA-1200-75bps" }, + { 0x14, "dataCDA-2400bps" }, + { 0x15, "dataCDA-4800bps" }, + { 0x16, "dataCDA-9600bps" }, + { 0x17, "general-dataCDA" }, + + { 0x18, "allDataCDS-Services" }, + { 0x1A, "dataCDS-1200bps" }, + { 0x1C, "dataCDS-2400bps" }, + { 0x1D, "dataCDS-4800bps" }, + { 0x1E, "dataCDS-9600bps" }, + { 0x1F, "general-dataCDS" }, + + { 0x20, "allPadAccessCA-Services" }, + { 0x21, "padAccessCA-300bps" }, + { 0x22, "padAccessCA-1200bps" }, + { 0x23, "padAccessCA-1200-75bps" }, + { 0x24, "padAccessCA-2400bps" }, + { 0x25, "padAccessCA-4800bps" }, + { 0x26, "padAccessCA-9600bps" }, + { 0x27, "general-padAccessCA" }, + + { 0x28, "allDataPDS-Services" }, + { 0x2C, "dataPDS-2400bps" }, + { 0x2D, "dataPDS-4800bps" }, + { 0x2E, "dataPDS-9600bps" }, + { 0x2F, "general-dataPDS" }, + + { 0x30, "allAlternateSpeech-DataCDA" }, + { 0x38, "allAlternateSpeech-DataCDS" }, + { 0x40, "allSpeechFollowedByDataCDA" }, + { 0x48, "allSpeechFollowedByDataCDS" }, + + { 0x50, "allDataCircuitAsynchronous" }, + { 0x60, "allAsynchronousServices" }, + { 0x58, "allDataCircuitSynchronous" }, + { 0x68, "allSynchronousServices" }, + + { 0xD0, "allPLMN-specificBS" }, + { 0xD1, "plmn-specificBS-1" }, + { 0xD2, "plmn-specificBS-2" }, + { 0xD3, "plmn-specificBS-3" }, + { 0xD4, "plmn-specificBS-4" }, + { 0xD5, "plmn-specificBS-5" }, + { 0xD6, "plmn-specificBS-6" }, + { 0xD7, "plmn-specificBS-7" }, + { 0xD8, "plmn-specificBS-8" }, + { 0xD9, "plmn-specificBS-9" }, + { 0xDA, "plmn-specificBS-A" }, + { 0xDB, "plmn-specificBS-B" }, + { 0xDC, "plmn-specificBS-C" }, + { 0xDD, "plmn-specificBS-D" }, + { 0xDE, "plmn-specificBS-E" }, + { 0xDF, "plmn-specificBS-F" }, + + { 0, NULL } +}; + +/* ForwardingOptions + +-- bit 8: notification to forwarding party +-- 0 no notification +-- 1 notification +*/ +static const true_false_string notification_value = { + "Notification", + "No notification" +}; +/* +-- bit 7: redirecting presentation +-- 0 no presentation +-- 1 presentation +*/ +static const true_false_string redirecting_presentation_value = { + "Presentation", + "No presentation" +}; +/* +-- bit 6: notification to calling party +-- 0 no notification +-- 1 notification +*/ +/* +-- bit 5: 0 (unused) +-- bits 43: forwarding reason +-- 00 ms not reachable +-- 01 ms busy +-- 10 no reply +-- 11 unconditional when used in a SRI Result, +-- or call deflection when used in a RCH Argument +*/ +static const value_string forwarding_reason_values[] = { + { 0x0, "ms not reachable" }, + { 0x1, "ms busy" }, + { 0x2, "no reply" }, + { 0x3, "unconditional when used in a SRI Result or call deflection when used in a RCH Argument" }, + { 0, NULL } +}; +/* +-- bits 21: 00 (unused) +*/ + +static const value_string pdp_type_org_values[] = { + { 0x0, "ETSI" }, + { 0x1, "IETF" }, + { 0xf, "Empty PDP type" }, + { 0, NULL } +}; + +static const value_string etsi_pdp_type_number_values[] = { + { 0x0, "Reserved, used in earlier version of this protocol" }, + { 0x1, "PPP" }, + { 0, NULL } +}; + +static const value_string ietf_pdp_type_number_values[] = { + { 0x21, "IPv4 Address" }, + { 0x57, "IPv6 Address" }, + { 0, NULL } +}; + +/* +ChargingCharacteristics ::= OCTET STRING (SIZE (2)) +-- Octets are coded according to 3GPP TS 32.015. +-- From 3GPP TS 32.015. +-- +-- Descriptions for the bits of the flag set: +-- +-- Bit 1: H (Hot billing) := '00000001'B +-- Bit 2: F (Flat rate) := '00000010'B +-- Bit 3: P (Prepaid service) := '00000100'B +-- Bit 4: N (Normal billing) := '00001000'B +-- Bit 5: - (Reserved, set to 0) := '00010000'B +-- Bit 6: - (Reserved, set to 0) := '00100000'B +-- Bit 7: - (Reserved, set to 0) := '01000000'B +-- Bit 8: - (Reserved, set to 0) := '10000000'B +*/ +static const value_string chargingcharacteristics_values[] = { + { 0x1, "H (Hot billing)" }, + { 0x2, "F (Flat rate)" }, + { 0x4, "P (Prepaid service)" }, + { 0x8, "N (Normal billing)" }, + { 0, NULL } +}; + +/* TAP STAT INFO */ +typedef enum +{ + ID_COLUMN, + OP_CODE_COLUMN, + INVOKES_COLUMN, + NUM_BYTES_FWD_COLUMN, + AVG_BYTES_FWD_COLUMN, + RET_RES_COLUMN, + NUM_BYTES_REV_COLUMN, + AVG_BYTES_REV_COLUMN, + TOT_BYTES_COLUMN, + AVG_BYTES_COLUMN +} gsm_a_stat_columns; + +static stat_tap_table_item gsm_map_stat_fields[] = { + {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "ID", "%d"}, + {TABLE_ITEM_STRING, TAP_ALIGN_LEFT, "Operation Code", "%-25s"}, + {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "Invokes", "%d"}, + {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "Num Bytes", "%d"}, + {TABLE_ITEM_FLOAT, TAP_ALIGN_RIGHT, "Avg Bytes", "%1.2f"}, + {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "Return Result", "%d"}, + {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "Num Bytes", "%d"}, + {TABLE_ITEM_FLOAT, TAP_ALIGN_RIGHT, "Avg Bytes", "%1.2f"}, + {TABLE_ITEM_UINT, TAP_ALIGN_RIGHT, "Total Bytes", "%d"}, + {TABLE_ITEM_FLOAT, TAP_ALIGN_RIGHT, "Avg Bytes", "%1.2f"}, +}; + +static void gsm_map_stat_init(stat_tap_table_ui* new_stat) +{ + const char *table_name = "GSM MAP Operation Statistics"; + int num_fields = sizeof(gsm_map_stat_fields)/sizeof(stat_tap_table_item); + stat_tap_table* table; + guint i; + stat_tap_table_item_type items[sizeof(gsm_map_stat_fields)/sizeof(stat_tap_table_item)]; + + memset(items, 0, sizeof(items)); + + items[ID_COLUMN].type = TABLE_ITEM_UINT; + items[OP_CODE_COLUMN].type = TABLE_ITEM_STRING; + items[INVOKES_COLUMN].type = TABLE_ITEM_UINT; + items[NUM_BYTES_FWD_COLUMN].type = TABLE_ITEM_UINT; + items[AVG_BYTES_FWD_COLUMN].type = TABLE_ITEM_FLOAT; + items[RET_RES_COLUMN].type = TABLE_ITEM_UINT; + items[NUM_BYTES_REV_COLUMN].type = TABLE_ITEM_UINT; + items[AVG_BYTES_REV_COLUMN].type = TABLE_ITEM_FLOAT; + items[TOT_BYTES_COLUMN].type = TABLE_ITEM_UINT; + items[AVG_BYTES_COLUMN].type = TABLE_ITEM_FLOAT; + + table = stat_tap_find_table(new_stat, table_name); + if (table) { + if (new_stat->stat_tap_reset_table_cb) { + new_stat->stat_tap_reset_table_cb(table); + } + return; + } + + table = stat_tap_init_table(table_name, num_fields, 0, NULL); + stat_tap_add_table(new_stat, table); + + /* Add a row for each value type */ + for (i = 0; i < GSM_MAP_MAX_NUM_OPR_CODES; i++) + { + const char *ocs = try_val_to_str(i, gsm_map_opr_code_strings); + char *col_str; + if (ocs) { + col_str = g_strdup(ocs); + } else { + col_str = ws_strdup_printf("Unknown op code %d", i); + } + + items[ID_COLUMN].value.uint_value = i; + items[OP_CODE_COLUMN].value.string_value = col_str; + stat_tap_init_table_row(table, i, num_fields, items); + } +} + +static tap_packet_status +gsm_map_stat_packet(void *tapdata, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const void *gmtr_ptr, tap_flags_t flags _U_) +{ + stat_data_t* stat_data = (stat_data_t*)tapdata; + const gsm_map_tap_rec_t *gmtr = (const gsm_map_tap_rec_t *)gmtr_ptr; + stat_tap_table* table; + stat_tap_table_item_type *invoke_data, *fwd_bytes_data, *result_data, *rev_bytes_data, *avg_data; + guint invokes, fwd_bytes, results, rev_bytes; + + table = g_array_index(stat_data->stat_tap_data->tables, stat_tap_table*, 0); + + invoke_data = stat_tap_get_field_data(table, gmtr->opcode, INVOKES_COLUMN); + fwd_bytes_data = stat_tap_get_field_data(table, gmtr->opcode, NUM_BYTES_FWD_COLUMN); + result_data = stat_tap_get_field_data(table, gmtr->opcode, RET_RES_COLUMN); + rev_bytes_data = stat_tap_get_field_data(table, gmtr->opcode, NUM_BYTES_REV_COLUMN); + + if (gmtr->invoke) + { + invoke_data->value.uint_value++; + stat_tap_set_field_data(table, gmtr->opcode, INVOKES_COLUMN, invoke_data); + + fwd_bytes_data->value.uint_value += gmtr->size; + stat_tap_set_field_data(table, gmtr->opcode, NUM_BYTES_FWD_COLUMN, fwd_bytes_data); + } + else + { + result_data->value.uint_value++; + stat_tap_set_field_data(table, gmtr->opcode, RET_RES_COLUMN, result_data); + + rev_bytes_data->value.uint_value += gmtr->size; + stat_tap_set_field_data(table, gmtr->opcode, NUM_BYTES_REV_COLUMN, rev_bytes_data); + } + + invokes = invoke_data->value.uint_value; + fwd_bytes = fwd_bytes_data->value.uint_value; + results = result_data->value.uint_value; + rev_bytes = rev_bytes_data->value.uint_value; + + if (gmtr->invoke) + { + avg_data = stat_tap_get_field_data(table, gmtr->opcode, AVG_BYTES_FWD_COLUMN); + avg_data->value.float_value += (float) fwd_bytes / invokes; + stat_tap_set_field_data(table, gmtr->opcode, AVG_BYTES_FWD_COLUMN, avg_data); + } + else + { + avg_data = stat_tap_get_field_data(table, gmtr->opcode, AVG_BYTES_REV_COLUMN); + avg_data->value.float_value += (float) rev_bytes / results; + stat_tap_set_field_data(table, gmtr->opcode, AVG_BYTES_REV_COLUMN, avg_data); + } + + avg_data = stat_tap_get_field_data(table, gmtr->opcode, AVG_BYTES_COLUMN); + avg_data->value.float_value += (float) (fwd_bytes + rev_bytes) / (invokes + results); + stat_tap_set_field_data(table, gmtr->opcode, AVG_BYTES_COLUMN, avg_data); + return TAP_PACKET_REDRAW; +} + +static void +gsm_map_stat_reset(stat_tap_table* table) +{ + guint element; + stat_tap_table_item_type* item_data; + + for (element = 0; element < table->num_elements; element++) + { + item_data = stat_tap_get_field_data(table, element, INVOKES_COLUMN); + item_data->value.uint_value = 0; + stat_tap_set_field_data(table, element, INVOKES_COLUMN, item_data); + } +} + +static void +gsm_map_stat_free_table_item(stat_tap_table* table _U_, guint row _U_, guint column, stat_tap_table_item_type* field_data) +{ + if (column != OP_CODE_COLUMN) return; + g_free((char*)field_data->value.string_value); +} + +/*--- proto_reg_handoff_gsm_map ---------------------------------------*/ +static void range_delete_callback(guint32 ssn, gpointer ptr _U_) +{ + if (ssn) { + delete_itu_tcap_subdissector(ssn, map_handle); + } +} + +static void range_add_callback(guint32 ssn, gpointer ptr _U_) +{ + if (ssn) { + add_itu_tcap_subdissector(ssn, map_handle); + } +} + +void proto_reg_handoff_gsm_map(void) { + + static gboolean map_prefs_initialized = FALSE; + static range_t *ssn_range; + + if (!map_prefs_initialized) { + map_prefs_initialized = TRUE; + ranap_handle = find_dissector_add_dependency("ranap", proto_gsm_map); + dtap_handle = find_dissector_add_dependency("gsm_a_dtap", proto_gsm_map); + gsm_sms_handle = find_dissector_add_dependency("gsm_sms", proto_gsm_map); + bssap_handle = find_dissector_add_dependency("gsm_a_bssmap", proto_gsm_map); + + oid_add_from_string("itu(0) administration(2) japan(440)","0.2.440" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.1.3", map_handle, proto_gsm_map,"networkLocUpContext-v3"); + register_ber_oid_dissector_handle("0.4.0.0.1.0.1.2", map_handle, proto_gsm_map,"networkLocUpContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.1.1", map_handle, proto_gsm_map,"networkLocUpContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.2.3", map_handle, proto_gsm_map,"locationCancellationContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.2.2", map_handle, proto_gsm_map,"locationCancellationContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.2.1", map_handle, proto_gsm_map,"locationCancellationContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.3.3", map_handle, proto_gsm_map,"roamingNumberEnquiryContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.3.2", map_handle, proto_gsm_map,"roamingNumberEnquiryContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.3.1", map_handle, proto_gsm_map,"roamingNumberEnquiryContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.4.3", map_handle, proto_gsm_map,"istAlertingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.5.3", map_handle, proto_gsm_map,"locationInfoRetrievalContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.5.2", map_handle, proto_gsm_map,"locationInfoRetrievalContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.5.1", map_handle, proto_gsm_map,"locationInfoRetrievalContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.6.4", map_handle, proto_gsm_map,"callControlTransferContext-v4" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.6.3", map_handle, proto_gsm_map,"callControlTransferContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.7.3", map_handle, proto_gsm_map,"reportingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.8.3", map_handle, proto_gsm_map,"callCompletionContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.9.3", map_handle, proto_gsm_map,"serviceTerminationContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.10.2", map_handle, proto_gsm_map,"resetContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.10.1", map_handle, proto_gsm_map,"resetContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.11.3", map_handle, proto_gsm_map,"handoverControlContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.11.2", map_handle, proto_gsm_map,"handoverControlContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.11.1", map_handle, proto_gsm_map,"handoverControlContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.12.3", map_handle, proto_gsm_map,"sIWFSAllocationContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.13.3", map_handle, proto_gsm_map,"equipmentMngtContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.13.2", map_handle, proto_gsm_map,"equipmentMngtContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.13.1", map_handle, proto_gsm_map,"equipmentMngtContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.14.3", map_handle, proto_gsm_map,"infoRetrievalContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.14.2", map_handle, proto_gsm_map,"infoRetrievalContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.14.1", map_handle, proto_gsm_map,"infoRetrievalContext-v1" ); + /* fallback to infoRetrieval(14) version1(1) and not interVlrInfoRetrieval(15) version1(1) */ + /*register_ber_oid_dissector_handle("0.4.0.0.1.0.15.1", map_handle, proto_gsm_map,"map-ac interVlrInfoRetrieval(15) version1(1)" );*/ + register_ber_oid_dissector_handle("0.4.0.0.1.0.15.2", map_handle, proto_gsm_map,"interVlrInfoRetrievalContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.15.3", map_handle, proto_gsm_map,"interVlrInfoRetrievalContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.16.3", map_handle, proto_gsm_map,"subscriberDataMngtContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.16.2", map_handle, proto_gsm_map,"subscriberDataMngtContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.16.1", map_handle, proto_gsm_map,"subscriberDataMngtContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.17.3", map_handle, proto_gsm_map,"tracingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.17.2", map_handle, proto_gsm_map,"tracingContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.17.1", map_handle, proto_gsm_map,"tracingContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.18.2", map_handle, proto_gsm_map,"networkFunctionalSsContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.18.1", map_handle, proto_gsm_map,"networkFunctionalSsContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.19.2", map_handle, proto_gsm_map,"networkUnstructuredSsContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.20.3", map_handle, proto_gsm_map,"shortMsgGatewayContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.20.2", map_handle, proto_gsm_map,"shortMsgGatewayContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.20.1", map_handle, proto_gsm_map,"shortMsgGatewayContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.21.3", map_handle, proto_gsm_map,"shortMsgMO-RelayContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.21.2", map_handle, proto_gsm_map,"shortMsgMO-RelayContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.21.1", map_handle, proto_gsm_map,"shortMsgRelayContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.22.3", map_handle, proto_gsm_map,"subscriberDataModificationNotificationContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.23.2", map_handle, proto_gsm_map,"shortMsgAlertContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.23.1", map_handle, proto_gsm_map,"shortMsgAlertContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.24.3", map_handle, proto_gsm_map,"mwdMngtContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.24.2", map_handle, proto_gsm_map,"mwdMngtContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.24.1", map_handle, proto_gsm_map,"mwdMngtContext-v1" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.25.3", map_handle, proto_gsm_map,"shortMsgMT-RelayContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.25.2", map_handle, proto_gsm_map,"shortMsgMT-RelayContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.26.2", map_handle, proto_gsm_map,"imsiRetrievalContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.27.2", map_handle, proto_gsm_map,"msPurgingContext-v2" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.27.3", map_handle, proto_gsm_map,"msPurgingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.28.3", map_handle, proto_gsm_map,"subscriberInfoEnquiryContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.29.3", map_handle, proto_gsm_map,"anyTimeInfoEnquiryContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.31.3", map_handle, proto_gsm_map,"groupCallControlContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.32.3", map_handle, proto_gsm_map,"gprsLocationUpdateContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.33.4", map_handle, proto_gsm_map,"gprsLocationInfoRetrievalContext-v4" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.33.3", map_handle, proto_gsm_map,"gprsLocationInfoRetrievalContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.34.3", map_handle, proto_gsm_map,"failureReportContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.35.3", map_handle, proto_gsm_map,"gprsNotifyContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.36.3", map_handle, proto_gsm_map,"ss-InvocationNotificationContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.37.3", map_handle, proto_gsm_map,"locationSvcGatewayContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.38.3", map_handle, proto_gsm_map,"locationSvcEnquiryContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.39.3", map_handle, proto_gsm_map,"authenticationFailureReportContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.40.3", map_handle, proto_gsm_map,"secureTransportHandlingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.41.3", map_handle, proto_gsm_map,"shortMsgMT-Relay-VGCS-Context-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.42.3", map_handle, proto_gsm_map,"mm-EventReportingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.43.3", map_handle, proto_gsm_map,"anyTimeInfoHandlingContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.44.3", map_handle, proto_gsm_map,"resourceManagementContext-v3" ); + register_ber_oid_dissector_handle("0.4.0.0.1.0.45.3", map_handle, proto_gsm_map,"groupCallInfoRetrievalContext-v3" ); + /* Private extension container */ + register_ber_oid_dissector("1.3.12.2.1006.53.2.1.3", dissect_gsm_mapext_PlmnContainer, proto_gsm_map,"alcatel-E10-MAP-extension-PlmnContainer" ); + register_ber_oid_dissector("0.34.0",dissect_NokiaMAP_ext_IsdArgExtension,proto_gsm_map,"Nokia ISD Extension"); + register_ber_oid_dissector("0.34.1",dissect_NokiaMAP_ext_DsdArgExt,proto_gsm_map,"Nokia Dsd Extension"); + register_ber_oid_dissector("0.34.2",dissect_NokiaMAP_ext_UlResExtension,proto_gsm_map,"Nokia Location Update Extension"); + register_ber_oid_dissector("0.34.4",dissect_NokiaMAP_ext_SS_DataExtension,proto_gsm_map,"Nokia SS Data Extension"); + register_ber_oid_dissector("0.34.5",dissect_NokiaMAP_ext_SriExtension,proto_gsm_map,"Nokia SRI Request Extension"); + register_ber_oid_dissector("0.34.6",dissect_NokiaMAP_ExtraSignalInfo,proto_gsm_map,"Nokia ExtraSignalInfo Extension"); + register_ber_oid_dissector("0.34.7",dissect_NokiaMAP_ext_SriResExtension,proto_gsm_map,"Nokia SRI Response Extension"); + register_ber_oid_dissector("0.34.10",dissect_NokiaMAP_ext_CanLocArgExt,proto_gsm_map,"Nokia Cancel Location Extension"); + register_ber_oid_dissector("0.34.11",dissect_NokiaMAP_ext_ATMargExt,proto_gsm_map,"Nokia ATM Extension"); + register_ber_oid_dissector("0.34.12",dissect_NokiaMAP_ext_DTMargExt,proto_gsm_map,"Nokia DTM Extension"); + register_ber_oid_dissector("0.34.13",dissect_NokiaMAP_ext_NumberPorted,proto_gsm_map,"Nokia NumberPorted Extension"); + register_ber_oid_dissector("0.34.15",dissect_NokiaMAP_ext_HOExtension,proto_gsm_map,"Nokia HandOver Extension"); + register_ber_oid_dissector("0.34.16",dissect_NokiaMAP_ext_ATMresExt,proto_gsm_map,"Nokia ATMres Extension"); + register_ber_oid_dissector("0.34.17",dissect_NokiaMAP_ext_AbsentSubscriberExt,proto_gsm_map,"Nokia AbsentSubscriber Extension"); + register_ber_oid_dissector("0.34.18",dissect_NokiaMAP_ext_SriForSMArgExt,proto_gsm_map,"Nokia SriForSM Extension"); + register_ber_oid_dissector("0.34.19",dissect_NokiaMAP_ext_ReportSMDelStatArgExt,proto_gsm_map,"Nokia ReportSMDelStatt Extension"); + register_ber_oid_dissector("0.34.20",dissect_NokiaMAP_ext_UdlArgExt,proto_gsm_map,"Nokia Udl Extension"); + register_ber_oid_dissector("0.34.21",dissect_NokiaMAP_ext_RoamNotAllowedExt,proto_gsm_map,"Nokia RoamNotAllowed Extension"); + register_ber_oid_dissector("0.34.22",dissect_NokiaMAP_ext_MO_ForwardSM_ArgExt,proto_gsm_map,"Nokia MO-ForwardSM Extension"); + register_ber_oid_dissector("0.34.23",dissect_NokiaMAP_ext_ErrOlcmInfoTableExt,proto_gsm_map,"Nokia ErrOlcmInfoTable Extension"); + register_ber_oid_dissector("0.34.25",dissect_NokiaMAP_ext_RoutingCategoryExt,proto_gsm_map,"Nokia Routing Category Extension"); + register_ber_oid_dissector("0.34.26",dissect_NokiaMAP_ext_AnyTimeModArgExt,proto_gsm_map,"Nokia AnyTimeMod Extension"); + + register_ber_oid_dissector("1.3.12.2.1107.3.66.1.1",dissect_NokiaMAP_ext_AccessTypeExt,proto_gsm_map,"Nokia AccessTypeExt Extension"); + register_ber_oid_dissector("1.3.12.2.1107.3.66.1.3",dissect_NokiaMAP_ext_AccessSubscriptionListExt,proto_gsm_map,"Nokia AccessSubscriptionListExt Extension"); + register_ber_oid_dissector("1.3.12.2.1107.3.66.1.6",dissect_NokiaMAP_ext_AllowedServiceData,proto_gsm_map,"Nokia AllowedServiceData Extension"); + + register_ber_oid_dissector("1.2.826.0.1249.58.1.0",dissect_gsm_map_ericsson_ext_ExtensionType,proto_gsm_map,"Ericsson ExtensionType Extension"); + } + else { + range_foreach(ssn_range, range_delete_callback, NULL); + wmem_free(wmem_epan_scope(), ssn_range); + } + + ssn_range = range_copy(wmem_epan_scope(), global_ssn_range); + range_foreach(ssn_range, range_add_callback, NULL); + +} + +/*--- proto_register_gsm_map -------------------------------------------*/ +void proto_register_gsm_map(void) { + module_t *gsm_map_module; + expert_module_t* expert_gsm_map; + + /* List of fields */ + static hf_register_info hf[] = { + { &hf_gsm_map_old_Component_PDU, + { "Component", "gsm_map.old.Component", + FT_UINT32, BASE_DEC, VALS(gsm_old_Component_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_getPassword, + { "getPassword", "gsm_map.getPassword", + FT_UINT8, BASE_DEC, VALS(gsm_old_GetPasswordArg_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_currentPassword, + { "currentPassword", "gsm_map.currentPassword", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_extension, + { "Extension", "gsm_map.extension", + FT_BOOLEAN, 8, TFS(&tfs_no_extension_extension), 0x80, + NULL, HFILL }}, + { &hf_gsm_map_nature_of_number, + { "Nature of number", "gsm_map.nature_of_number", + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &gsm_map_nature_of_number_values_ext, 0x70, + NULL, HFILL }}, + { &hf_gsm_map_number_plan, + { "Number plan", "gsm_map.number_plan", + FT_UINT8, BASE_HEX|BASE_EXT_STRING, &gsm_map_number_plan_values_ext, 0x0f, + NULL, HFILL }}, + { &hf_gsm_map_address_digits, + { "Address digits", "gsm_map.address.digits", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_TBCD_digits, + { "TBCD digits", "gsm_map.tbcd_digits", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_Ss_Status_unused, + { "Unused", "gsm_map.unused", + FT_UINT8, BASE_HEX, NULL, 0xf0, + NULL, HFILL }}, + { &hf_gsm_map_Ss_Status_q_bit, + { "Q bit", "gsm_map.ss_status_q_bit", + FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_q_bit_values), 0x08, + NULL, HFILL }}, + { &hf_gsm_map_Ss_Status_p_bit, + { "P bit", "gsm_map.ss_status_p_bit", + FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_p_values), 0x04, + NULL, HFILL }}, + { &hf_gsm_map_Ss_Status_r_bit, + { "R bit", "gsm_map.ss_status_r_bit", + FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_r_values), 0x02, + NULL, HFILL }}, + { &hf_gsm_map_Ss_Status_a_bit, + { "A bit", "gsm_map.ss_status_a_bit", + FT_BOOLEAN, 8, TFS(&gsm_map_Ss_Status_a_values), 0x01, + NULL, HFILL }}, + { &hf_gsm_map_notification_to_forwarding_party, + { "Notification to forwarding party", "gsm_map.notification_to_forwarding_party", + FT_BOOLEAN, 8, TFS(¬ification_value), 0x80, + NULL, HFILL }}, + { &hf_gsm_map_redirecting_presentation, + { "Redirecting presentation", "gsm_map.redirecting_presentation", + FT_BOOLEAN, 8, TFS(&redirecting_presentation_value), 0x40, + NULL, HFILL }}, + { &hf_gsm_map_notification_to_calling_party, + { "Notification to calling party", "gsm_map.notification_to_calling_party", + FT_BOOLEAN, 8, TFS(¬ification_value), 0x20, + NULL, HFILL }}, + { &hf_gsm_map_forwarding_reason, + { "Forwarding reason", "gsm_map.forwarding_reason", + FT_UINT8, BASE_HEX, VALS(forwarding_reason_values), 0x0c, + NULL, HFILL }}, + { &hf_gsm_map_pdp_type_org, + { "PDP Type Organization", "gsm_map.pdp_type_org", + FT_UINT8, BASE_HEX, VALS(pdp_type_org_values), 0x0f, + NULL, HFILL }}, + { &hf_gsm_map_etsi_pdp_type_number, + { "PDP Type Number", "gsm_map.pdp_type_number", + FT_UINT8, BASE_HEX, VALS(etsi_pdp_type_number_values), 0, + "ETSI PDP Type Number", HFILL }}, + { &hf_gsm_map_ietf_pdp_type_number, + { "PDP Type Number", "gsm_map.ietf_pdp_type_number", + FT_UINT8, BASE_HEX, VALS(ietf_pdp_type_number_values), 0, + "IETF PDP Type Number", HFILL }}, + { &hf_gsm_map_ext_qos_subscribed_pri, + { "Allocation/Retention priority", "gsm_map.ext_qos_subscribed_pri", + FT_UINT8, BASE_DEC, NULL, 0xff, + NULL, HFILL }}, + { &hf_gsm_map_qos_traffic_cls, + { "Traffic class", "gsm_map.qos.traffic_cls", + FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_traffic_cls_vals), 0xe0, + NULL, HFILL }}, + { &hf_gsm_map_qos_del_order, + { "Delivery order", "gsm_map.qos.del_order", + FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_traffic_cls_vals), 0x18, + NULL, HFILL }}, + { &hf_gsm_map_qos_del_of_err_sdu, + { "Delivery of erroneous SDUs", "gsm_map.qos.del_of_err_sdu", + FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_del_of_err_sdu_vals), 0x03, + NULL, HFILL }}, + { &hf_gsm_map_qos_ber, + { "Residual Bit Error Rate (BER)", "gsm_map.qos.ber", + FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_ber_vals), 0xf0, + NULL, HFILL }}, + { &hf_gsm_map_qos_sdu_err_rat, + { "SDU error ratio", "gsm_map.qos.sdu_err_rat", + FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_sdu_err_rat_vals), 0x0f, + NULL, HFILL }}, + { &hf_gsm_map_qos_traff_hdl_pri, + { "Traffic handling priority", "gsm_map.qos.traff_hdl_pri", + FT_UINT8, BASE_DEC, VALS(gsm_a_sm_qos_traff_hdl_pri_vals), 0x03, + NULL, HFILL }}, + + { &hf_gsm_map_qos_max_sdu, + { "Maximum SDU size", "gsm_map.qos.max_sdu", + FT_UINT32, BASE_DEC, NULL, 0x0, + NULL, HFILL }}, + { &hf_gsm_map_max_brate_ulink, + { "Maximum bit rate for uplink in kbit/s", "gsm_map.qos.max_brate_ulink", + FT_UINT32, BASE_DEC, NULL, 0x0, + "Maximum bit rate for uplink", HFILL }}, + { &hf_gsm_map_max_brate_dlink, + { "Maximum bit rate for downlink in kbit/s", "gsm_map.qos.max_brate_dlink", + FT_UINT32, BASE_DEC, NULL, 0x0, + "Maximum bit rate for downlink", HFILL }}, + { &hf_gsm_map_qos_transfer_delay, + { "Transfer delay (Raw data see TS 24.008 for interpretation)", "gsm_map.qos.transfer_delay", + FT_UINT8, BASE_DEC, NULL, 0xfc, + "Transfer delay", HFILL }}, + { &hf_gsm_map_guaranteed_max_brate_ulink, + { "Guaranteed bit rate for uplink in kbit/s", "gsm_map.qos.brate_ulink", + FT_UINT32, BASE_DEC, NULL, 0x0, + "Guaranteed bit rate for uplink", HFILL }}, + { &hf_gsm_map_guaranteed_max_brate_dlink, + { "Guaranteed bit rate for downlink in kbit/s", "gsm_map.qos.brate_dlink", + FT_UINT32, BASE_DEC, NULL, 0x0, + "Guaranteed bit rate for downlink", HFILL }}, + { &hf_gsm_map_GSNAddress_IPv4, + { "GSN-Address IPv4", "gsm_map.gsnaddress_ipv4", + FT_IPv4, BASE_NONE, NULL, 0, + "IPAddress IPv4", HFILL }}, + { &hf_gsm_map_GSNAddress_IPv6, + { "GSN Address IPv6", "gsm_map.gsnaddress_ipv6", + FT_IPv6, BASE_NONE, NULL, 0, + "IPAddress IPv6", HFILL }}, + { &hf_gsm_map_ranap_service_Handover, + { "service-Handover", "gsm_map.ranap.service_Handover", + FT_UINT32, BASE_DEC, VALS(ranap_Service_Handover_vals), 0, + "gsm_map.ranap.Service_Handover", HFILL }}, + { &hf_gsm_map_IntegrityProtectionInformation, + { "IntegrityProtectionInformation", "gsm_map.ranap.IntegrityProtectionInformation", + FT_NONE, BASE_NONE, NULL, 0, + "gsm_map.ranap.IntegrityProtectionInformation", HFILL }}, + { &hf_gsm_map_EncryptionInformation, + { "EncryptionInformation", "gsm_map.ranap.EncryptionInformation", + FT_NONE, BASE_NONE, NULL, 0, + "gsm_map.ranap.EncryptionInformation", HFILL }}, + { &hf_gsm_map_ss_SS_UserData, + { "SS-UserData", "gsm_ss.SS_UserData", + FT_STRING, BASE_NONE, NULL, 0, + "gsm_map.ss.SS_UserData", HFILL }}, + { &hf_gsm_map_cbs_coding_grp, + { "Coding Group","gsm_map.cbs.coding_grp", + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_data_coding_scheme_coding_grp_vals_ext, 0xf0, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp0_lang, + { "Language","gsm_map.cbs.coding_grp0_lang", + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_coding_grp0_lang_vals_ext, 0x0f, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp1_lang, + { "Language","gsm_map.cbs.coding_grp1_lang", + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_coding_grp1_lang_vals_ext, 0x0f, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp2_lang, + { "Language","gsm_map.cbs.coding_grp2_lang", + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_coding_grp2_lang_vals_ext, 0x0f, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp3_lang, + { "Language","gsm_map.cbs.coding_grp3_lang", + FT_UINT8,BASE_DEC|BASE_EXT_STRING, &gsm_map_cbs_coding_grp3_lang_vals_ext, 0x0f, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp4_7_comp, + { "Compressed indicator","gsm_map.cbs.coding_grp4_7_comp", + FT_BOOLEAN, 8, TFS(&gsm_map_cbs_coding_grp4_7_comp_vals), 0x20, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp4_7_class_ind, + { "Message Class present","gsm_map.cbs.coding_grp4_7_class_ind", + FT_BOOLEAN, 8, TFS(&gsm_map_cbs_coding_grp4_7_class_ind_vals), 0x10, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp4_7_char_set, + { "Character set being used","gsm_map.cbs.coding_grp4_7_char_set", + FT_UINT8,BASE_DEC, VALS(gsm_map_cbs_coding_grp4_7_char_set_vals), 0x0c, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp4_7_class, + { "Message Class","gsm_map.cbs.coding_grp4_7_class", + FT_UINT8,BASE_DEC, VALS(gsm_map_cbs_coding_grp4_7_class_vals), 0x03, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp15_mess_code, + { "Message coding","gsm_map.cbs.cbs_coding_grp15_mess_code", + FT_UINT8,BASE_DEC, VALS(gsm_map_cbs_coding_grp15_mess_code_vals), 0x04, + NULL, HFILL } + }, + { &hf_gsm_map_cbs_coding_grp15_class, + { "Message Class","gsm_map.cbs.gsm_map_cbs_coding_grp15_class", + FT_UINT8,BASE_DEC, VALS(gsm_map_cbs_coding_grp15_class_vals), 0x03, + NULL, HFILL } + }, + { &hf_gsm_map_ie_tag, + { "Tag", "gsm_map.ie_tag", + FT_UINT8, BASE_DEC, VALS(gsm_map_tag_vals), 0, + "GSM 04.08 tag", HFILL }}, + { &hf_gsm_map_len, + { "Length", "gsm_map.length", + FT_UINT8, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_disc_par, + { "Discrimination parameter", "gsm_map.disc_par", + FT_UINT8, BASE_DEC, VALS(gsm_map_disc_par_vals), 0, + NULL, HFILL }}, + { &hf_gsm_map_dlci, + { "DLCI", "gsm_map.dlci", + FT_UINT8, BASE_DEC, NULL, 0, + "Data Link Connection Indicator", HFILL }}, + { &hf_gsm_apn_str, + { "APN", "gsm_map.apn_str", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_ericsson_locationInformation_rat, + { "RAT", "gsm_map.ericsson.locationInformation.rat", + FT_UINT8, BASE_DEC, VALS(gsm_map_ericsson_locationInformation_rat_vals), 0, + "Radio Access Technology", HFILL }}, + { &hf_gsm_map_ericsson_locationInformation_lac, + { "LAC", "gsm_map.ericsson.locationInformation.lac", + FT_UINT16, BASE_DEC_HEX, NULL, 0, + "Location Area Code", HFILL }}, + { &hf_gsm_map_ericsson_locationInformation_ci, + { "CI", "gsm_map.ericsson.locationInformation.ci", + FT_UINT16, BASE_DEC_HEX, NULL, 0, + "Cell Identity", HFILL }}, + { &hf_gsm_map_ericsson_locationInformation_sac, + { "SAC", "gsm_map.ericsson.locationInformation.sac", + FT_UINT16, BASE_DEC_HEX, NULL, 0, + "Service Area Code", HFILL }}, + { &hf_gsm_map_ussd_string, + { "USSD String", "gsm_map.ussd_string", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gsm_map_spare_bits, + { "Spare bit(s)", "gsm_map.spare_bits", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_signalling_ind, + { "Signalling indication", "gsm_map.qos.signalling_ind", + FT_BOOLEAN, 8, TFS(&gsm_map_qos_signalling_ind_value), 0x10, + NULL, HFILL } + }, + { &hf_gsm_map_qos_source_stat_desc, + { "Source statistics description", "gsm_map.qos.source_stat_desc", + FT_UINT8, BASE_DEC, NULL, 0x0f, + NULL, HFILL } + }, + { &hf_gsm_map_qos_max_bitrate_upl_ext, + { "Maximum bitrate for uplink (extended)", "gsm_map.qos.max_bitrate_upl_ext", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_max_bitrate_downl_ext, + { "Maximum bitrate for downlink (extended)", "gsm_map.qos.max_bitrate_downl_ext", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_guar_bitrate_upl_ext, + { "Guaranteed bitrate for uplink (extended)", "gsm_map.qos.guar_bitrate_upl_ext", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_guar_bitrate_downl_ext, + { "Guaranteed bitrate for downlink (extended)", "gsm_map.qos.guar_bitrate_downl_ext", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, +/* + { &hf_gsm_map_qos_max_bitrate_upl_ext2, + { "Maximum bitrate for uplink (extended-2)", "gsm_map.qos.max_bitrate_upl_ext2", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_max_bitrate_downl_ext2, + { "Maximum bitrate for downlink (extended-2)", "gsm_map.qos.max_bitrate_downl_ext2", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_guar_bitrate_upl_ext2, + { "Guaranteed bitrate for uplink (extended-2)", "gsm_map.qos.guar_bitrate_upl_ext2", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + { &hf_gsm_map_qos_guar_bitrate_downl_ext2, + { "Guaranteed bitrate for downlink (extended-2)", "gsm_map.qos.guar_bitrate_downl_ext2", + FT_UINT8, BASE_DEC, NULL, 0x0, + NULL, HFILL } + }, + */ + { &hf_gsm_map_earp_pvi, + { "PVI Pre-emption Vulnerability", "gsm_map.EARP_pre_emption_par_vulnerability", + FT_BOOLEAN, 8, TFS(&tfs_disabled_enabled), 0x01, + NULL, HFILL } + }, + { &hf_gsm_map_earp_pl, + { "PL Priority Level", "gsm_map.EARP_priority_level", + FT_UINT8, BASE_DEC, NULL, 0x3C, + NULL, HFILL } + }, + { &hf_gsm_map_earp_pci, + { "PCI Pre-emption Capability", "gsm_map.EARP_pre_emption_Capability", + FT_BOOLEAN, 8, TFS(&tfs_disabled_enabled), 0x40, + NULL, HFILL } + }, + +#include "packet-gsm_map-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_gsm_map, + &ett_gsm_map_InvokeId, + &ett_gsm_map_InvokePDU, + &ett_gsm_map_ReturnResultPDU, + &ett_gsm_map_ReturnErrorPDU, + &ett_gsm_map_ReturnResult_result, + &ett_gsm_map_ReturnError_result, + &ett_gsm_map_GSMMAPPDU, + &ett_gsm_map_ext_qos_subscribed, + &ett_gsm_map_pdptypenumber, + &ett_gsm_map_RAIdentity, + &ett_gsm_map_LAIFixedLength, + &ett_gsm_map_isdn_address_string, + &ett_gsm_map_geo_desc, + &ett_gsm_map_LongSignalInfo, + &ett_gsm_map_RadioResourceInformation, + &ett_gsm_map_MSNetworkCapability, + &ett_gsm_map_MSRadioAccessCapability, + &ett_gsm_map_externalsignalinfo, + &ett_gsm_map_cbs_data_coding, + &ett_gsm_map_GlobalCellId, + &ett_gsm_map_GeographicalInformation, + &ett_gsm_map_apn_str, + &ett_gsm_map_LocationNumber, + &ett_gsm_map_ericsson_locationInformation, + &ett_gsm_map_extension_data, + &ett_gsm_map_tbcd_digits, + &ett_gsm_map_ussd_string, + &ett_gsm_map_ext2_qos_subscribed, + &ett_gsm_map_ext3_qos_subscribed, + &ett_gsm_map_e_utranCellGlobalIdentity, + &ett_gsm_map_TA_id, + &ett_gsm_map_GeodeticInformation, + +#include "packet-gsm_map-ettarr.c" + }; + + static ei_register_info ei[] = { + { &ei_gsm_map_unknown_sequence3, { "gsm_map.unknown.sequence3", PI_UNDECODED, PI_ERROR, "Unknown or not implemented [3] sequence", EXPFILL }}, + { &ei_gsm_map_unknown_sequence, { "gsm_map.unknown.sequence", PI_UNDECODED, PI_ERROR, "Unknown or not implemented sequence", EXPFILL }}, + { &ei_gsm_map_unknown_parameter, { "gsm_map.unknown.parameter", PI_UNDECODED, PI_ERROR, "Unknown or not implemented parameter", EXPFILL }}, + { &ei_gsm_map_unknown_invokeData, { "gsm_map.unknown.invokeData", PI_MALFORMED, PI_WARN, "Unknown invokeData", EXPFILL }}, + { &ei_gsm_map_undecoded, { "gsm_map.undecoded", PI_UNDECODED, PI_WARN, "If you want this decoded send the packet to Wireshark-dev", EXPFILL }}, + }; + + static const enum_val_t application_context_modes[] = { + {"Use Application Context from the trace", "Use application context from the trace", APPLICATON_CONTEXT_FROM_TRACE}, + {"Treat as AC 1", "Treat as AC 1", 1}, + {"Treat as AC 2", "Treat as AC 2", 2}, + {"Treat as AC 3", "Treat as AC 3", 3}, + {NULL, NULL, -1} + }; + + static tap_param gsm_map_stat_params[] = { + { PARAM_FILTER, "filter", "Filter", NULL, TRUE } + }; + + static stat_tap_table_ui gsm_map_stat_table = { + REGISTER_STAT_GROUP_TELEPHONY_GSM, + "MAP Operation", + "gsm_map", + "gsm_map,operation", + gsm_map_stat_init, + gsm_map_stat_packet, + gsm_map_stat_reset, + gsm_map_stat_free_table_item, + NULL, + sizeof(gsm_map_stat_fields)/sizeof(stat_tap_table_item), gsm_map_stat_fields, + sizeof(gsm_map_stat_params)/sizeof(tap_param), gsm_map_stat_params, + NULL, + 0 + }; + + /* Register protocol */ + proto_gsm_map_ms = proto_gsm_map_dialogue = proto_gsm_map = proto_register_protocol(PNAME, PSNAME, PFNAME); + + map_handle = register_dissector("gsm_map", dissect_gsm_map, proto_gsm_map); + register_dissector("gsm_map_sccp", dissect_gsm_map_sccp, proto_gsm_map); + + /* Register fields and subtrees */ + proto_register_field_array(proto_gsm_map, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + expert_gsm_map = expert_register_protocol(proto_gsm_map); + expert_register_field_array(expert_gsm_map, ei, array_length(ei)); + + register_dissector_table("gsm_map.v3.arg.opcode", "GSM_MAP V3 Arg Opcodes", proto_gsm_map, FT_UINT8, BASE_DEC); + register_dissector_table("gsm_map.v3.res.opcode", "GSM_MAP V3 Res Opcodes", proto_gsm_map, FT_UINT8, BASE_DEC); + + map_prop_arg_opcode_table = register_dissector_table("gsm_map.prop.arg.opcode", "GSM_MAP Proprietary Arg Opcodes", proto_gsm_map, FT_UINT8, BASE_DEC); + map_prop_res_opcode_table = register_dissector_table("gsm_map.prop.res.opcode", "GSM_MAP Proprietary Res Opcodes", proto_gsm_map, FT_UINT8, BASE_DEC); + map_prop_err_opcode_table = register_dissector_table("gsm_map.prop.err.opcode", "GSM_MAP Proprietary Err Opcodes", proto_gsm_map, FT_UINT8, BASE_DEC); + + gsm_map_tap = register_tap("gsm_map"); + +#include "packet-gsm_map-dis-tab.c" + oid_add_from_string("ericsson-gsm-Map-Ext","1.2.826.0.1249.58.1.0" ); + oid_add_from_string("accessTypeNotAllowed-id","1.3.12.2.1107.3.66.1.2"); + /*oid_add_from_string("map-ac networkLocUp(1) version3(3)","0.4.0.0.1.0.1.3" ); + * + * Register our configuration options, particularly our ssn:s + * Set default SSNs + */ + range_convert_str(wmem_epan_scope(), &global_ssn_range, "6-9,145,148-150", MAX_SSN); + + gsm_map_module = prefs_register_protocol(proto_gsm_map, proto_reg_handoff_gsm_map); + + prefs_register_range_preference(gsm_map_module, "tcap.ssn", "TCAP SSNs", + "TCAP Subsystem numbers used for GSM MAP", + &global_ssn_range, MAX_SSN); + + prefs_register_enum_preference(gsm_map_module, "application.context.version", + "Application context version", + "How to treat Application context", + &pref_application_context_version, application_context_modes, APPLICATON_CONTEXT_FROM_TRACE); + + prefs_register_bool_preference(gsm_map_module, "ericsson.proprietary.extensions", + "Dissect Ericsson proprietary extensions", + "When enabled, dissector will use the non 3GPP standard extensions from Ericsson (that can override the standard ones)", + &pref_ericsson_proprietary_ext); + + register_stat_tap_table_ui(&gsm_map_stat_table); +} + +/* + * 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/gsm_map/packet-gsm_map-template.h b/epan/dissectors/asn1/gsm_map/packet-gsm_map-template.h new file mode 100644 index 00000000..0cebb20a --- /dev/null +++ b/epan/dissectors/asn1/gsm_map/packet-gsm_map-template.h @@ -0,0 +1,69 @@ +/* packet-gsm_map-template.h + * Routines for GSM MAP packet dissection + * Copyright 2004 - 2006, Anders Broman <anders.broman@ericsson.com> + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef PACKET_GSM_MAP_H +#define PACKET_GSM_MAP_H + +#include "ws_symbol_export.h" + +/* Defines for the GSM MAP taps */ +#define GSM_MAP_MAX_NUM_OPR_CODES 256 + +typedef struct _gsm_map_tap_rec_t { + gboolean invoke; + guint32 opcode; + guint16 size; +} gsm_map_tap_rec_t; + + +#define SMS_ENCODING_NOT_SET 0 +#define SMS_ENCODING_7BIT 1 +#define SMS_ENCODING_8BIT 2 +#define SMS_ENCODING_UCS2 3 +#define SMS_ENCODING_7BIT_LANG 4 +#define SMS_ENCODING_UCS2_LANG 5 + +WS_DLL_PUBLIC const value_string gsm_map_opr_code_strings[]; + +extern const value_string ssCode_vals[]; +extern const value_string gsm_map_PDP_Type_Organisation_vals[]; +extern const value_string gsm_map_ietf_defined_pdp_vals[]; +extern const value_string gsm_map_etsi_defined_pdp_vals[]; + +guint8 dissect_cbs_data_coding_scheme(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint16 offset); +void dissect_gsm_map_msisdn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree); + +typedef enum { + GSM_MAP_SM_RP_OA_NO_ID = 0, + GSM_MAP_SM_RP_OA_MSISDN, + GSM_MAP_SM_RP_OA_SERVICE_CENTER_ADDRESS +} gsm_map_sm_rp_oa_id; + +typedef enum { + GSM_MAP_SM_RP_DA_NO_ID = 0, + GSM_MAP_SM_RP_DA_IMSI, + GSM_MAP_SM_RP_DA_LMSI, + GSM_MAP_SM_RP_DA_SERVICE_CENTER_ADDRESS +} gsm_map_sm_rp_da_id; + +/* structure accessible via p_get_proto_data(wmem_file_scope(), pinfo, proto_gsm_map, 0) */ +typedef struct { + gsm_map_sm_rp_oa_id sm_rp_oa_id; + const gchar *sm_rp_oa_str; + gsm_map_sm_rp_da_id sm_rp_da_id; + const gchar *sm_rp_da_str; + guint32 tcap_src_tid; +} gsm_map_packet_info_t; + +#include "packet-gsm_map-exp.h" + + +#endif /* PACKET_GSM_MAP_H */ |