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/qsig | |
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/qsig')
34 files changed, 5578 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/qsig/CMakeLists.txt b/epan/dissectors/asn1/qsig/CMakeLists.txt new file mode 100644 index 00000000..1056b89c --- /dev/null +++ b/epan/dissectors/asn1/qsig/CMakeLists.txt @@ -0,0 +1,68 @@ +# 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 qsig ) + +set( PROTO_OPT _EMPTY_ ) + +set( EXPORT_FILES + ${PROTOCOL_NAME}-exp.cnf +) + +set( EXT_ASN_FILE_LIST +) + +set( ASN_FILE_LIST + General-Error-List.asn + qsig-gf-ext.asn + qsig-gf-gp.asn + qsig-gf-ade.asn + QSIG-NA.asn + QSIG-CF.asn + QSIG-PR.asn + QSIG-CT.asn + QSIG-CC.asn + QSIG-CO.asn + QSIG-DND.asn + QSIG-CI.asn + QSIG-AOC.asn + QSIG-RE.asn + SYNC-SIG.asn + QSIG-CINT.asn + QSIG-CMN.asn + QSIG-CPI.asn + QSIG-PUMR.asn + QSIG-PUMCH.asn + QSIG-SSCT.asn + QSIG-WTMLR.asn + QSIG-WTMCH.asn + QSIG-WTMAU.asn + QSIG-SD.asn + QSIG-CIDL.asn + QSIG-SMS.asn + QSIG-MCR.asn + QSIG-MCM.asn + QSIG-MID.asn +) + +set( EXTRA_DIST + ${ASN_FILE_LIST} + packet-${PROTOCOL_NAME}-template.c + packet-${PROTOCOL_NAME}-template.h + ${PROTOCOL_NAME}.cnf +) + +set( SRC_FILES + ${EXTRA_DIST} + ${EXT_ASN_FILE_LIST} +) + +set( A2W_FLAGS ) + +ASN2WRS() diff --git a/epan/dissectors/asn1/qsig/General-Error-List.asn b/epan/dissectors/asn1/qsig/General-Error-List.asn new file mode 100644 index 00000000..56266f11 --- /dev/null +++ b/epan/dissectors/asn1/qsig/General-Error-List.asn @@ -0,0 +1,84 @@ +-- Module General-Error-List (Q.950:06/2000) +-- See also ITU-T Q.950 (06/2000) +-- See also the index of all ASN.1 assignments needed in this document +-- + +General-Error-List {itu-t recommendation q 950 general-error-list(1)} +DEFINITIONS ::= +BEGIN + +EXPORTS + userNotSubscribed, rejectedByNetwork, rejectedByUser, notAvailable, + insufficientInformation, invalidServedUserNr, invalidCallState, + basicServiceNotProvided, notIncomingCall, + supplementaryServiceInteractionNotAllowed, resourceUnavailable, + callFailure, proceduralError; + +IMPORTS + ERROR + FROM Remote-Operations-Information-Objects {joint-iso-itu-t + remote-operations(4) informationObjects(5) version1(0)}; + +userNotSubscribed ERROR ::= {CODE local:0 +} + +-- is an indication that the user has not subscribed to this service. +rejectedByNetwork ERROR ::= {CODE local:1 +} + +-- is an indication that the requested service is rejected by the network. +rejectedByUser ERROR ::= {CODE local:2 +} + +-- is an indication that the requested service is provided by the network but that the remote user has rejected this +-- service request. +notAvailable ERROR ::= {CODE local:3 +} + +-- is an indication that the user has subscribed to this service but the requested service is not available combined +-- with the basic service or the other services (e.g. operation). +insufficientInformation ERROR ::= {CODE local:5 +} + +-- is an indication that the content of operation argument is incomplete, or absent entirely. +invalidServedUserNr ERROR ::= {CODE local:6 +} + +-- is an indication that the requested service cannot be performed because of the usage of an invalid served user +-- number. +invalidCallState ERROR ::= {CODE local:7 +} + +-- is an indication that no match exists between the service request and the valid Basic, Call Control State; this +-- applies also to invalid auxiliary states or an invalid combination of Basic call states and auxiliary states. +basicServiceNotProvided ERROR ::= {CODE local:8 +} + +-- is an indication that the service request is directed to a Basic Service which is not provided (e.g. this return +-- error value is used when a supplementary service is invoked with a SETUP message). +notIncomingCall ERROR ::= {CODE local:9 +} + +-- is an indication that the service request has been invoked for an outgoing call, which is not permitted for that +-- service. +supplementaryServiceInteractionNotAllowed ERROR ::= {CODE local:10 +} + +-- is an indication that the service request is not permitted in combination with either a further requested or active +-- supplementary service. +resourceUnavailable ERROR ::= {CODE local:11 +} + +-- is an indication that the service provider has temporarily no resource available for the provision of the +-- requested service. +callFailure ERROR ::= {CODE local:25 +} + +-- is an indication that the requested supplementary service was not executable by virtue of a Basic Call Failure. +proceduralError ERROR ::= {CODE local:43 +} + +-- is an indication that a transport message (e.g. SETUP, REGISTER etc.) is received which has one or more +-- operation PDUs which have a valid content but which are not specified as valid information content of the +-- transport message used. +END diff --git a/epan/dissectors/asn1/qsig/QSIG-AOC.asn b/epan/dissectors/asn1/qsig/QSIG-AOC.asn new file mode 100644 index 00000000..15cca38a --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-AOC.asn @@ -0,0 +1,305 @@ +-- QSIG-AOC.asn +-- +-- Taken from Ecma International +-- Standard ECMA-212, 3rd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-212.htm +-- + +SS-AOC-Operations-asn1-97 +{iso (1) standard (0) pss1-advice-of-charge (15050) advice-of-charge-operations-asn1-97 (1)} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)} + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + {iso (1) standard (0) pss1-generic-procedures (11582) msi-class-asn1-97 (11)} + notAvailable, supplementaryServiceInteractionNotAllowed + FROM General-Error-List + {ccitt recommendation q 950 general-error-list (1)} + PartyNumber FROM Addressing-Data-Elements-asn1-97 + { iso (1) standard (0) pss1-generic-procedures (11582) + addressing-data-elements-asn1-97 (20) } ; + +AOC-Operations OPERATION ::= { chargeRequest | getFinalCharge | aocFinal | aocInterim | aocRate | + aocComplete | aocDivChargeReq } + +aocRate OPERATION ::= { + ARGUMENT AocRateArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 63} + +AocRateArg ::= SEQUENCE { + aocRate CHOICE { + chargeNotAvailable NULL, + aocSCurrencyInfoList AOCSCurrencyInfoList + }, + rateArgExtension CHOICE { + extension [1] IMPLICIT Extension{{AOCExtSet}}, + multipleExtension [2] IMPLICIT SEQUENCE OF + Extension{{AOCExtSet}} } OPTIONAL + } + +aocInterim OPERATION ::= { + ARGUMENT AocInterimArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 62} + +AocInterimArg ::= SEQUENCE { + interimCharge CHOICE { + chargeNotAvailable [0] IMPLICIT NULL, + freeOfCharge [1] IMPLICIT NULL, + specificCurrency SEQUENCE { + recordedCurrency [1] IMPLICIT RecordedCurrency, + interimBillingId[2] IMPLICIT InterimBillingId OPTIONAL } + }, + interimArgExtension CHOICE { + extension [1] IMPLICIT Extension{{AOCExtSet}}, + multipleExtension [2] IMPLICIT SEQUENCE OF + Extension{{AOCExtSet}} } OPTIONAL + } + +aocFinal OPERATION ::= { + ARGUMENT AocFinalArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 61} + +AocFinalArg ::= SEQUENCE { + finalCharge CHOICE { + chargeNotAvailable [0] IMPLICIT NULL, + freeOfCharge [1] IMPLICIT NULL, + specificCurrency SEQUENCE { + recordedCurrency [1] IMPLICIT RecordedCurrency, + finalBillingId[2] IMPLICIT FinalBillingId OPTIONAL } + }, + chargingAssociation ChargingAssociation OPTIONAL, + finalArgExtension CHOICE { + extension [1] IMPLICIT Extension{{AOCExtSet}}, + multipleExtension [2] IMPLICIT SEQUENCE OF + Extension{{AOCExtSet}} } OPTIONAL + } + +AOCSCurrencyInfoList ::= SEQUENCE SIZE(1..10) OF AOCSCurrencyInfo + +AOCSCurrencyInfo ::= SEQUENCE { + chargedItem ChargedItem, + rateType CHOICE { + durationCurrency [1] IMPLICIT DurationCurrency, + flatRateCurrency [2] IMPLICIT FlatRateCurrency, + volumeRateCurrency [3] IMPLICIT VolumeRateCurrency, + specialChargingCode SpecialChargingCode, + freeOfCharge [4] IMPLICIT NULL, + currencyInfoNotAvailable [5] IMPLICIT NULL, + freeOfChargefromBeginning [6] IMPLICIT NULL + } } +ChargedItem ::= ENUMERATED { + basicCommunication (0), + callAttempt (1), + callSetup (2), + userToUserInfo (3), + operationOfSupplementaryServ (4) } + +DurationCurrency ::= SEQUENCE { + dCurrency [1] IMPLICIT Currency, + dAmount [2] IMPLICIT Amount, + dChargingType [3] IMPLICIT ChargingType, + dTime [4] IMPLICIT Time, + dGranularity [5] IMPLICIT Time OPTIONAL } + +FlatRateCurrency ::= SEQUENCE { + fRCurrency [1] IMPLICIT Currency, + fRAmount [2] IMPLICIT Amount } + +VolumeRateCurrency ::= SEQUENCE { + vRCurrency [1] IMPLICIT Currency, + vRAmount [2] IMPLICIT Amount, + vRVolumeUnit [3] IMPLICIT VolumeUnit + } + +SpecialChargingCode ::= INTEGER (1..10) + +RecordedCurrency ::= SEQUENCE { + rCurrency [1] IMPLICIT Currency, + rAmount [2] IMPLICIT Amount } + +InterimBillingId ::= ENUMERATED { + normalCharging (0), + creditCardCharging (2) } + +FinalBillingId ::= ENUMERATED { + normalCharging (0), + creditCardCharging (2), + callForwardingUnconditional (3), + callForwardingBusy (4), + callForwardingNoReply (5), + callDeflection (6), + callTransfer (7) } + +Currency ::= IA5String (SIZE (0..10)) + -- SIZE(0) shall indicate the default currency of the PISN + -- The representation of other currencies is outside the scope of this standard + +Amount ::= SEQUENCE { + currencyAmount [1] IMPLICIT CurrencyAmount, + multiplier [2] IMPLICIT Multiplier } + +CurrencyAmount ::= INTEGER (0..16777215) +Multiplier ::= ENUMERATED { + oneThousandth (0), + oneHundredth (1), + oneTenth (2), + one (3), + ten (4), + hundred (5), + thousand (6) } + +Time ::= SEQUENCE { + lengthOfTimeUnit [1] IMPLICIT LengthOfTimeUnit, + scale [2] IMPLICIT Scale } + +LengthOfTimeUnit ::= INTEGER (0..16777215) + +Scale ::= ENUMERATED { + oneHundredthSecond (0), + oneTenthSecond (1), + oneSecond (2), + tenSeconds (3), + oneMinute (4), + oneHour (5), + twentyFourHours (6) } + +VolumeUnit ::= ENUMERATED { + octet (0), + segment (1), + message (2) } + +ChargingType ::= ENUMERATED { + continuousCharging (0), + stepFunction (1) } + +ChargingAssociation ::= CHOICE { + chargeNumber [0] PartyNumber, + chargeIdentifier ChargeIdentifier } + +ChargeIdentifier ::= INTEGER (-32768..32767) + +chargeRequest OPERATION ::= { + ARGUMENT ChargeRequestArg + RESULT ChargeRequestRes + ERRORS { + freeOfCharge | + supplementaryServiceInteractionNotAllowed | + notAvailable | unspecified } + CODE local: 59} + +getFinalCharge OPERATION ::= { + ARGUMENT DummyArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 60} + +ChargeRequestArg ::= SEQUENCE { + adviceModeCombinations SEQUENCE SIZE(0..7) OF + AdviceModeCombination, + chargeReqArgExtension CHOICE { + extension [1] IMPLICIT Extension{{AOCExtSet}}, + multipleExtension [2] IMPLICIT SEQUENCE OF + Extension{{AOCExtSet}} } OPTIONAL + } + +ChargeRequestRes ::= SEQUENCE { + adviceModeCombination AdviceModeCombination, + chargeReqResExtension CHOICE { + extension [1] IMPLICIT Extension{{AOCExtSet}}, + multipleExtension [2] IMPLICIT SEQUENCE OF + Extension{{AOCExtSet}} } OPTIONAL + } + +AdviceModeCombination ::= ENUMERATED { -- advice mode combination + rate (0), -- charge rate provision + rateInterim (1), -- charge rate and interim charge provision + rateFinal (2), -- charge rate and final charge provision + interim (3), -- interim charge provision + final (4), -- final charge provision + interimFinal (5), -- interim charge and final charge provision + rateInterimFinal (6)} -- charge rate, interim charge and final + -- charge provision + +DummyArg ::= CHOICE{ + none NULL, + extension [1] IMPLICIT Extension{{AOCExtSet}}, + multipleExtension [2] IMPLICIT SEQUENCE OF Extension{{AOCExtSet}} + } + + +-- The following OPERATION applies for the interaction with Call Transfer + +aocComplete OPERATION ::= { + ARGUMENT AocCompleteArg + RESULT AocCompleteRes + ERRORS {supplementaryServiceInteractionNotAllowed} + CODE local: 64} + +AocCompleteArg ::= SEQUENCE { + chargedUser PartyNumber, + chargingAssociation ChargingAssociation OPTIONAL, + completeArgExtension CHOICE { + extension [1] IMPLICIT Extension{{AOCExtSet}}, + multipleExtension [2] IMPLICIT SEQUENCE OF + Extension{{AOCExtSet}} } OPTIONAL + } + +AocCompleteRes::= SEQUENCE { + chargingOption ChargingOption, + completeResExtension CHOICE { + extension [1] IMPLICIT Extension{{AOCExtSet}}, + multipleExtension [2] IMPLICIT SEQUENCE OF Extension{{AOCExtSet}} + } OPTIONAL + } + +ChargingOption ::= ENUMERATED{ + aocFreeOfCharge (0), + aocContinueCharging (1), + aocStopCharging (2) + } + +-- The following OPERATION applies for the interaction with Call Diversion + +aocDivChargeReq OPERATION::= { + ARGUMENT AocDivChargeReqArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 65} + + +AocDivChargeReqArg ::= SEQUENCE { + divertingUser PartyNumber, + chargingAssociation ChargingAssociation OPTIONAL, + diversionType DiversionType, + aocDivChargeReqArgExt CHOICE { + extension [1] IMPLICIT Extension{{AOCExtSet}}, + multipleExtension [2] IMPLICIT SEQUENCE OF Extension{{AOCExtSet}} + } OPTIONAL + } + + +DiversionType ::= ENUMERATED { + callForwardingUnconditional (0), + callForwardingBusy (1), + callForwardingNoReply (2), + callDeflection (3) } + +AOCExtSet EXTENSION ::= {...} + +unspecified ERROR ::= { + PARAMETER Extension{{AOCExtSet}} + CODE local: 1008} + +freeOfCharge ERROR ::= { CODE local: 1016} + +END -- of SS-AOC-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-CC.asn b/epan/dissectors/asn1/qsig/QSIG-CC.asn new file mode 100644 index 00000000..e8df6da3 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-CC.asn @@ -0,0 +1,175 @@ +-- QSIG-CC.asn +-- +-- Taken from Ecma International +-- Standard ECMA-186, 4th edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-186.htm +-- + +SS-CC-Operations-asn1-97 { iso (1) standard (0) pss1-call-completion (13870) operations-asn1-97 (1)} +DEFINITIONS EXPLICIT TAGS ::= +BEGIN +IMPORTS + OPERATION, + ERROR +FROM Remote-Operations-Information-Objects +{ joint-iso-itu-t remote-operations (4) informationObjects(5) version1 (0)} + + EXTENSION, Extension{} +FROM Manufacturer-specific-service-extension-class-asn1-97 + { iso( 1) standard( 0) pss1-generic-procedures( 11582) msi-class-asn1-97( 11) } + + PSS1InformationElement +FROM PSS1-generic-parameters-definition-asn1-97 + { iso standard pss1-generic-procedures (11582) pss1-generic-parameters-asn1-97(17)} + + PartyNumber, + PartySubaddress, + PresentedNumberUnscreened +FROM Addressing-Data-Elements-asn1-97 + {iso standard pss1-generic-procedures (11582) addressing-data-elements-asn1-97 (20)} + +supplementaryServiceInteractionNotAllowed +FROM General-Error-List + { ccitt (0) recommendation (0) q 950 general-error-list (1) } ; + +CC-Operations OPERATION ::= {ccbsRequest | ccnrRequest | ccCancel | ccExecPossible | ccPathReserve | + ccRingout | ccSuspend | ccResume } + + ccbsRequest OPERATION ::= { + ARGUMENT CcRequestArg + RESULT CcRequestRes + ERRORS{ + shortTermRejection | + longTermRejection | + unspecified | + supplementaryServiceInteractionNotAllowed + } + CODE local: 40 + } + + ccnrRequest OPERATION ::= { + ARGUMENT CcRequestArg + RESULT CcRequestRes + ERRORS{ + shortTermRejection | + longTermRejection | + unspecified | + supplementaryServiceInteractionNotAllowed + } + CODE local: 27 + } + + ccCancel OPERATION ::= { + ARGUMENT CcOptionalArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 28 + } + + ccExecPossible OPERATION ::= { + ARGUMENT CcOptionalArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 29 + } + + ccPathReserve OPERATION ::= { + ARGUMENT CcExtension + RESULT CcExtension + ERRORS { + remoteUserBusyAgain | + failureToMatch | + failedDueToInterworking | + unspecified + } + CODE local: 30 + } + + ccRingout OPERATION ::= { + ARGUMENT CcExtension + RETURN RESULT FALSE + ERRORS{ + remoteUserBusyAgain | + failureToMatch | + unspecified + } + ALWAYS RESPONDS FALSE + CODE local: 31 + } + + ccSuspend OPERATION ::= { + ARGUMENT CcExtension + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 32 + } + + ccResume OPERATION ::= { + ARGUMENT CcExtension + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 33 + } + +-- TYPE DEFINITIONS FOR CC DATA TYPES FOLLOW +CcRequestArg ::= SEQUENCE { + numberA PresentedNumberUnscreened, + numberB PartyNumber, + service PSS1InformationElement, + -- permitted information elements are: + -- Bearer capability; Low layer compatibility; High layer compatibility + subaddrA [10] PartySubaddress OPTIONAL, + subaddrB [11] PartySubaddress OPTIONAL, + can-retain-service [12] IMPLICIT BOOLEAN DEFAULT FALSE, + retain-sig-connection [13] IMPLICIT BOOLEAN OPTIONAL, + -- TRUE: signalling connection to be retained; + -- FALSE: signalling connection to be released; + -- omission: release or retain signalling connection-- + extension CcExtension OPTIONAL + } + +CcRequestRes ::= SEQUENCE{ + no-path-reservation [0] IMPLICIT BOOLEAN DEFAULT FALSE, + retain-service [1] IMPLICIT BOOLEAN DEFAULT FALSE, + extension CcExtension OPTIONAL + } + +CcOptionalArg ::= CHOICE{ + fullArg [0] IMPLICIT SEQUENCE { + numberA PartyNumber, + numberB PartyNumber, + service PSS1InformationElement, + -- permitted information elements are: + --Bearer capability; + -- Low layer compatibility; + -- High layer compatibility. + subaddrA [10] PartySubaddress OPTIONAL, + subaddrB [11] PartySubaddress OPTIONAL, + extension CcExtension OPTIONAL + }, + extArg CcExtension + } + +CcExtension ::= CHOICE { + none NULL, + single [14] IMPLICIT Extension{{CCExtSet}}, + multiple [15] IMPLICIT SEQUENCE OF Extension{{CCExtSet}} + } + +CCExtSet EXTENSION ::= {...} + +-- DEFINITIONS FOR ERRORS FOLLOW + +unspecified ERROR ::= { + PARAMETER Extension{{CCExtSet}} + CODE local: 1008 + } + +shortTermRejection ERROR ::= { CODE local: 1010} +longTermRejection ERROR ::= { CODE local: 1011} +remoteUserBusyAgain ERROR ::= { CODE local: 1012} +failureToMatch ERROR ::= { CODE local: 1013} +failedDueToInterworking ERROR ::= { CODE local: 1014} + + +END -- of SS-CC-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-CF.asn b/epan/dissectors/asn1/qsig/QSIG-CF.asn new file mode 100644 index 00000000..1c090d58 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-CF.asn @@ -0,0 +1,251 @@ +-- QSIG-CF.asn +-- +-- Taken from Ecma International +-- Standard ECMA-174, 3rd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-174.htm +-- + +Call-Diversion-Operations-asn1-97 + { iso (1) standard (0) pss1-call-diversion (13873) call-diversion-operations-asn1-97 (1) } + + DEFINITIONS EXPLICIT TAGS ::= + + BEGIN + + IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + { joint-iso-itu-t remote-operations (4) informationObjects(5) version1(0)} + + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + { iso (1) standard (0) pss1-generic-procedures (11582) msi-class-asn1-97 (11) } + + PSS1InformationElement FROM PSS1-generic-parameters-definition-asn1-97 + { iso (1) standard (0) pss1-generic-procedures (11582) pss1-generic-parameters-asn1-97 (17) +} + + Address, PartyNumber, PartySubaddress, PresentedNumberScreened, + PresentedNumberUnscreened, PresentationAllowedIndicator FROM + Addressing-Data-Elements-asn1-97 + { iso (1) standard (0) pss1-generic-procedures (11582) addressing-data-elements-asn1-97 (20) +} + + Name FROM Name-Operations-asn1-97 + { iso (1) standard (0) pss1-name (13868) name-operations-asn1-97 (1) } + + userNotSubscribed, notAvailable, invalidServedUserNr, basicServiceNotProvided, + resourceUnavailable, supplementaryServiceInteractionNotAllowed FROM + General-Error-List + { ccitt recommendation q 950 general-error-list (1) }; + +Call-Diversion-Operations OPERATION ::= {activateDiversionQ | deactivateDiversionQ | interrogateDiversionQ | +checkRestriction | callRerouteing | divertingLegInformation1 | divertingLegInformation2 | divertingLegInformation3 | +cfnrDivertedLegFailed} + + activateDiversionQ OPERATION ::={ + -- Sent from the Activating PINX to the Served User PINX + ARGUMENT SEQUENCE + { procedure Procedure, + basicService BasicService, + divertedToAddress Address, + servedUserNr PartyNumber, + activatingUserNr PartyNumber, + extension CHOICE { + single [1] IMPLICIT Extension{{DiversionExtensionSet}} , + multiple[2] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } OPTIONAL +} + RESULT CHOICE { + null NULL, + single [1] IMPLICIT Extension{{DiversionExtensionSet}}, + multiple[2] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } + ERRORS { userNotSubscribed | notAvailable | invalidServedUserNr | + basicServiceNotProvided | resourceUnavailable | invalidDivertedToNr | + specialServiceNr | diversionToServedUserNr | temporarilyUnavailable | + notAuthorized | unspecified } + CODE local: 15} + + deactivateDiversionQ OPERATION ::={ + -- Sent from the Deactivating PINX to the Served User PINX + ARGUMENT SEQUENCE + { procedure Procedure, + basicService BasicService, + servedUserNr PartyNumber, + deactivatingUserNr PartyNumber, + extension CHOICE { + single [1] IMPLICIT Extension{{DiversionExtensionSet}} , + multiple[2] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } OPTIONAL } + RESULT CHOICE { + null NULL, + single [1] IMPLICIT Extension{{DiversionExtensionSet}} , + multiple[2] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } + ERRORS {userNotSubscribed | notAvailable| invalidServedUserNr | + temporarilyUnavailable | notAuthorized | unspecified } + CODE local: 16} + + interrogateDiversionQ OPERATION ::={ + -- Sent from the Interrogating PINX to the Served User PINX + ARGUMENT SEQUENCE + { procedure Procedure, + basicService BasicService DEFAULT allServices, + servedUserNr PartyNumber, + interrogatingUserNr PartyNumber, + extension CHOICE { + single [1] IMPLICIT Extension{{DiversionExtensionSet}} , + multiple[2] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } OPTIONAL +} + RESULT IntResultList + ERRORS {userNotSubscribed | notAvailable | invalidServedUserNr | + temporarilyUnavailable | notAuthorized | unspecified } + CODE local: 17} + + checkRestriction OPERATION ::={ + -- Sent from the Served User PINX to the Diverted-to PINX + ARGUMENT SEQUENCE + { servedUserNr PartyNumber, + basicService BasicService, + divertedToNr PartyNumber, + extension CHOICE { + single [1] IMPLICIT Extension{{DiversionExtensionSet}} , + multiple[2] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } OPTIONAL } + RESULT CHOICE { + null NULL, + single [1] IMPLICIT Extension{{DiversionExtensionSet}}, + multiple[2] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } + ERRORS {notAvailable | invalidServedUserNr | + invalidDivertedToNr | specialServiceNr | unspecified } + CODE local: 18} + + callRerouteing OPERATION ::={ + -- Sent from the Served User PINX to the Rerouteing PINX + ARGUMENT SEQUENCE + { rerouteingReason DiversionReason, + originalRerouteingReason [0] IMPLICIT DiversionReason OPTIONAL, + calledAddress Address, + diversionCounter INTEGER (1..15), + pSS1InfoElement PSS1InformationElement, + -- The basic call information elements Bearer capability, High layer compatibility, Low + -- layer compatibity and Progress indicator can be embedded in the + -- pSS1InfoElement in accordance with 6.5.3.1.5. + + lastRerouteingNr [1] PresentedNumberUnscreened, + subscriptionOption [2] IMPLICIT SubscriptionOption, + callingPartySubaddress [3] PartySubaddress OPTIONAL, + callingNumber [4] PresentedNumberScreened, + callingName [5] Name OPTIONAL, + originalCalledNr [6] PresentedNumberUnscreened OPTIONAL, + redirectingName [7] Name OPTIONAL, + originalCalledName [8] Name OPTIONAL, + extension CHOICE { + single [9] IMPLICIT Extension{{DiversionExtensionSet}}, + multiple[10] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } OPTIONAL +} + RESULT CHOICE { + null NULL, + single [1] IMPLICIT Extension{{DiversionExtensionSet}} , + multiple[2] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } + ERRORS {userNotSubscribed | notAvailable | resourceUnavailable | + invalidDivertedToNr | specialServiceNr | diversionToServedUserNr | + numberOfDiversionsExceeded | + supplementaryServiceInteractionNotAllowed | unspecified } + -- The error value numberOfDiversionsExceeded applies only in case of partial rerouteing. + CODE local: 19} + + divertingLegInformation1 OPERATION ::={ + -- Sent from the Rerouteing PINX to the Originating PINX + ARGUMENT SEQUENCE + { diversionReason DiversionReason, + subscriptionOption SubscriptionOption, + nominatedNr PartyNumber, + extension CHOICE { + single [9] IMPLICIT Extension{{DiversionExtensionSet}} , + multiple [10] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } OPTIONAL +} + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 20} + + divertingLegInformation2 OPERATION ::={ + -- Sent from the Rerouteing PINX to the Diverted-to PINX + ARGUMENT SEQUENCE + { diversionCounter INTEGER (1..15), + diversionReason DiversionReason, + originalDiversionReason [0] IMPLICIT DiversionReason OPTIONAL, + divertingNr [1] PresentedNumberUnscreened OPTIONAL, + originalCalledNr [2] PresentedNumberUnscreened OPTIONAL, + redirectingName [3] Name OPTIONAL, + originalCalledName [4] Name OPTIONAL, + extension CHOICE { + single [5] IMPLICIT Extension{{DiversionExtensionSet}} , + multiple[6] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } OPTIONAL +} + -- The divertingNr element is mandatory except in the case of interworking. + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 21} + + divertingLegInformation3 OPERATION ::={ + -- Sent from the Diverted-to PINX to the Originating PINX + ARGUMENT SEQUENCE + { presentationAllowedIndicator PresentationAllowedIndicator, + redirectionName [0] Name OPTIONAL, + extension CHOICE { + single [1] IMPLICIT Extension{{DiversionExtensionSet}} , + multiple[2] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } OPTIONAL } + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 22} + + cfnrDivertedLegFailed OPERATION ::={ + -- Sent from the Rerouteing PINX to the Served User PINX + -- This indicates that the diverted-to leg has been cleared during SS-CFNR execution. + ARGUMENT CHOICE { + null NULL, + single [1] IMPLICIT Extension{{DiversionExtensionSet}} , + multiple[2] IMPLICIT SEQUENCE OF Extension{{DiversionExtensionSet}} } + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 23} + +-- Definitions of general used data types: + DiversionReason ::= ENUMERATED { unknown (0), cfu (1), cfb (2), cfnr (3)} + -- The value unknown is only used if received from another network when interworking. + + IntResultList ::= SET SIZE (0..29) OF IntResult + IntResult ::= SEQUENCE { + servedUserNr PartyNumber, + basicService BasicService, + procedure Procedure, + divertedToAddress Address, + remoteEnabled BOOLEAN DEFAULT FALSE, + extension CHOICE { + single [1] IMPLICIT + Extension{{DiversionExtensionSet}} , + multiple[2] IMPLICIT SEQUENCE OF + Extension{{DiversionExtensionSet}} } + OPTIONAL } + Procedure ::= ENUMERATED { cfu (0), cfb (1), cfnr (2) } + SubscriptionOption ::= ENUMERATED { + noNotification (0), + notificationWithoutDivertedToNr (1), + notificationWithDivertedToNr (2) } + + BasicService ::= ENUMERATED { + allServices (0), + speech (1), + unrestrictedDigitalInformation (2), + audio3100Hz (3), + telephony (32), + teletex (33), + telefaxGroup4Class1 (34), + videotexSyntaxBased (35), + videotelephony (36) } + + DiversionExtensionSet EXTENSION ::= {...} + invalidDivertedToNr ERROR ::= {CODE local: 12} + specialServiceNr ERROR ::= {CODE local: 14} + diversionToServedUserNr ERROR ::= {CODE local: 15} + numberOfDiversionsExceeded ERROR ::= {CODE local: 24} + temporarilyUnavailable ERROR ::= {CODE local: 1000} + notAuthorized ERROR ::= {CODE local: 1007} + unspecified ERROR ::= {PARAMETER Extension{{DiversionExtensionSet}} + CODE local:1008} + + END -- of Call-Diversion-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-CI.asn b/epan/dissectors/asn1/qsig/QSIG-CI.asn new file mode 100644 index 00000000..827d207a --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-CI.asn @@ -0,0 +1,176 @@ +-- QSIG-CI.asn +-- +-- Taken from Ecma International +-- Standard ECMA-203, 4th edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-203.htm +-- + +Call-Intrusion-Operations-asn1-97 + {iso(1) standard(0) pss1-call-intrusion(14846) call-intrusion-operations-asn1-97 (2) } + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + {joint-iso-itu-t(2) remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + {iso(1) standard(0) + pss1-generic-procedures(11582) msi-class-asn1-97(11)} + notAvailable, supplementaryServiceInteractionNotAllowed + FROM General-Error-List + {ccitt recommendation q 950 general-error-list (1)}; + +Call-Intrusion-Operations OPERATION ::= {pathRetain | serviceAvailable | callIntrusionRequest | +callIntrusionGetCIPL | callIntrusionIsolate | callIntrusionForcedRelease | callIntrusionWOBRequest | +callIntrusionCompleted | cfbOverride} + +pathRetain OPERATION ::= { + ARGUMENT PathRetainArg -- this operation may be used by other + -- Supplementary Services using other + -- values of the argument + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 41} + +serviceAvailable OPERATION ::= { + ARGUMENT ServiceAvailableArg -- this operation may be used by other + -- Supplementary Services using other + -- values of the argument + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 42} + +callIntrusionRequest OPERATION ::= { + ARGUMENT CIRequestArg + RESULT CIRequestRes + ERRORS {notAvailable | notBusy | temporarilyUnavailable | notAuthorized | + unspecified | supplementaryServiceInteractionNotAllowed} + CODE local: 43} + +callIntrusionGetCIPL OPERATION ::= { + ARGUMENT DummyArg + RESULT CIGetCIPLRes + ALWAYS RESPONDS FALSE + CODE local: 44} + +callIntrusionForcedRelease OPERATION ::= { + ARGUMENT DummyArg + RESULT DummyRes + ERRORS {notAvailable | unspecified | + supplementaryServiceInteractionNotAllowed} + CODE local: 46} + +callIntrusionIsolate OPERATION ::= { + ARGUMENT DummyArg + RESULT DummyRes + ERRORS {notAvailable | unspecified | + supplementaryServiceInteractionNotAllowed} + CODE local: 45} + +callIntrusionWOBRequest OPERATION ::= { + ARGUMENT DummyArg + RESULT DummyRes + ERRORS {notAvailable | unspecified | + supplementaryServiceInteractionNotAllowed} + CODE local: 47} + +callIntrusionCompleted OPERATION ::= { + ARGUMENT DummyArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 48} + +PathRetainArg ::= CHOICE { + serviceList ServiceList, + extendedServiceList SEQUENCE { + serviceList ServiceList, + extension Extension{{CIExtSet}} + } + } + +ServiceAvailableArg ::= CHOICE { + serviceList ServiceList, + extendedServiceList SEQUENCE { + serviceList ServiceList, + extension Extension{{CIExtSet}} + } + } + +ServiceList ::= BIT STRING + {ci-low(4), ci-medium(5), ci-high(6)} (SIZE(1..32)) + -- bits other than ci-low, ci-medium, ci-high are reserved + -- for other supplementary services + +DummyArg ::= CHOICE{ + null NULL, + extension [1] IMPLICIT Extension{{CIExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{CIExtSet}}} + +DummyRes ::= CHOICE{ + null NULL, + extension [1] IMPLICIT Extension{{CIExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{CIExtSet}}} + +CIRequestArg ::= SEQUENCE{ + ciCapabilityLevel CICapabilityLevel, + argumentExtension CHOICE{ + extension [1] IMPLICIT Extension{{CIExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{CIExtSet}} + } OPTIONAL} + +CIRequestRes ::= SEQUENCE{ + ciUnwantedUserStatus CIUnwantedUserStatus, + resultExtension CHOICE{ + extension [1] IMPLICIT Extension{{CIExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{CIExtSet}} + } OPTIONAL} + +CIGetCIPLRes ::= SEQUENCE{ + ciProtectionLevel CIProtectionLevel, + resultExtension CHOICE{ + extension [1] IMPLICIT Extension{{CIExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{CIExtSet}} + } OPTIONAL} + +CICapabilityLevel ::= ENUMERATED{ + intrusionLowProt(1), + intrusionMediumProt(2), + intrusionHighProt(3)} + +CIProtectionLevel ::= ENUMERATED{ + lowProtection(0), + mediumProtection(1), + highProtection(2), + fullProtection(3)} + +CIUnwantedUserStatus ::= ENUMERATED{ + unwantedUserIntruded(0), + unwantedUserIsolated(1)} + +cfbOverride OPERATION ::= { + ARGUMENT DummyArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 49} + -- used in the interaction with Call Forwarding Busy + +CIExtSet EXTENSION ::= {...} + +notBusy ERROR ::= { CODE local: 1009} + -- used when an SS-CI request is received in + -- a Terminating PINX and the called user is not busy + +temporarilyUnavailable ERROR ::= { CODE local: 1000} + -- used when conditions for invocation of SS-CI + -- are momentarily not met + +notAuthorized ERROR ::= { CODE local: 1007} + --used when a SS-CI request is rejected + --because of insufficient CICL + +unspecified ERROR ::= { + PARAMETER Extension{{CIExtSet}} + CODE local: 1008} + +END -- of Call-Intrusion-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-CIDL.asn b/epan/dissectors/asn1/qsig/QSIG-CIDL.asn new file mode 100644 index 00000000..bcf79a9d --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-CIDL.asn @@ -0,0 +1,78 @@ +-- QSIG-CIDL.asn +-- +-- Taken from Ecma International +-- Standard ECMA-314, 2nd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-314.htm +-- + +Call-Identification-and-Call-Linkage-Operations-asn1-97 + {iso(1) standard (0) pss1-call-identification-and-call-linkage (21889) + call-identification-and-call-linkage-operations-asn1-97 (1)} + +DEFINITIONS EXPLICIT TAGS ::= +BEGIN +IMPORTS + OPERATION + FROM Remote-Operations-Information-Objects + {joint-iso-itu-t remote-operations(4) informationObjects(5) version1(0)} + + EXTENSION, Extension{} + FROM Manufacturer-specific-service-extension-class-asn1-97 + { iso standard pss1-generic-procedures (11582) msi-class-asn1-97 (11)}; + +CallIdentification-Operations OPERATION ::= { callIdentificationAssign | callIdentificationUpdate } + +callIdentificationAssign OPERATION ::= { + ARGUMENT CallIdentificationAssignArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 105 + } + +callIdentificationUpdate OPERATION ::= { + ARGUMENT CallIdentificationUpdateArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 106 + } + +CallIdentificationAssignArg ::= SEQUENCE { + globalCallID [0] CallIdentificationData, + threadID [1] CallIdentificationData OPTIONAL, + legID [2] CallIdentificationData OPTIONAL, + extension ExtensionType OPTIONAL + } + +CallIdentificationUpdateArg ::= SEQUENCE { + globalCallID [0] CallIdentificationData OPTIONAL, + threadID [1] CallIdentificationData OPTIONAL, + legID [2] CallIdentificationData OPTIONAL, + extension ExtensionType OPTIONAL + } + +CallIdentificationData ::= SEQUENCE { +-- this structure is according to ECMA-269, 12.2.5 (see annex D) + switchingSubDomainName [0] IMPLICIT SwitchingSubDomainName OPTIONAL, + linkageID CHOICE { + subDomainID [1] IMPLICIT SubDomainID, + globallyUniqueID [2] IMPLICIT GloballyUniqueID}, + timeStamp [3] IMPLICIT TimeStamp OPTIONAL + } + +SwitchingSubDomainName ::= IA5String (SIZE(1..64)) + +GloballyUniqueID ::= OCTET STRING (SIZE(1..16)) +-- the GloballyUniqueID shall be coded according to ITU-T Recommendation H.225, section 7.6 (see annex D) + +ExtensionType ::= CHOICE { + extension [3] Extension{{ExampleExtSet}}, + sequenceOfExt [4] IMPLICIT SEQUENCE OF Extension{{ExampleExtSet}} + } + +ExampleExtSet EXTENSION ::= {...} + +SubDomainID ::= OCTET STRING (SIZE(1..8)) + +TimeStamp ::= GeneralizedTime (SIZE(16..19)) + +END -- of Call-Identification-and-Call-Linkage-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-CINT.asn b/epan/dissectors/asn1/qsig/QSIG-CINT.asn new file mode 100644 index 00000000..29926a18 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-CINT.asn @@ -0,0 +1,152 @@ +-- QSIG-CINT.asn +-- +-- Taken from Ecma International +-- Standard ECMA-221, 3rd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-221.htm +-- + +Call-Interception-Operations-asn1-97 {iso (1) standard (0) pss1-cint (15054) cint-operations-asn1-97 (1) } + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + {joint-iso-itu-t (2) remote-operations (4) informationObjects (5) version1(0)} + + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + {iso (1) standard (0) pss1-generic-procedures (11582) msi-class-asn1-97 (11)} + + PartyNumber, PresentedNumberUnscreened, PresentationAllowedIndicator + FROM Addressing-Data-Elements-asn1-97 + {iso (1) standard (0) pss1-generic-procedures (11582) + addressing-data-elements-asn1-97 (20)} + + Name FROM Name-Operations-asn1-97 + {iso (1) standard (0) pss1-name (13868) name-operations-asn1-97 (1)}; + +Call-Interception-Operations OPERATION ::= { cintLegInformation1 | cintLegInformation2 | cintCondition | +cintDisable | cintEnable} + + +cintLegInformation1 OPERATION ::= { + -- Sent from the Intercepting PINX to the Originating PINX -- + ARGUMENT CintInformation1Arg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 66} + + +cintLegInformation2 OPERATION ::= { + -- Sent from the Intercepting PINX to the Intercepted-to PINX -- + ARGUMENT CintInformation2Arg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 67} + +cintCondition OPERATION ::= { + -- Sent to a preceding PINX to indicate a condition for possible interception + ARGUMENT CintCondArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 68} + +cintDisable OPERATION ::= { + -- Sent to a Preceding PINX to disable interception delayed -- + ARGUMENT CintExtension + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 69} + +cintEnable OPERATION ::= { + -- Sent to a Preceding PINX to reenable interception -- + ARGUMENT CintExtension + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 70} + +CintInformation1Arg ::= SEQUENCE + { + interceptionCause CintCause, + interceptedToNumber PartyNumber, + extension CintExtension OPTIONAL + } + +CintInformation2Arg ::= SEQUENCE + { + interceptionCause CintCause, + calledNumber [1]PresentedNumberUnscreened OPTIONAL, + originalCalledNumber [2]PresentedNumberUnscreened OPTIONAL, + calledName [3]Name OPTIONAL, + originalCalledName [4]Name OPTIONAL, + extension CintExtension OPTIONAL + } + + +CintCondArg ::= SEQUENCE + { + interceptionCause Condition, + originalCalledNumber [1]PresentedNumberUnscreened OPTIONAL, + calledName [2]Name OPTIONAL, + originalCalledName [3]Name OPTIONAL, + extension CintExtension OPTIONAL + } + +CintExtension ::= CHOICE + { + none NULL, + single [5] IMPLICIT Extension{{CINTExtSet}}, + multiple [6] IMPLICIT SEQUENCE OF Extension{{CINTExtSet}} + } + +CintCause ::= INTEGER { + unknown (0), + cintBnan (1), -- timeout in waiting on busy condition + cintBus (2), -- busy user + cintCug (3), -- closed user group rejection + cintDnd (4), -- do not disturb activated + cintIbd (5), -- incoming barred destination + cintInn (6), -- invalid number + cintMob1 (7), -- mobile user location not known + cintMob2 (8), -- mobile user no longer registered + cintMob3 (9), -- mobile terminal not responding + cintNcmp (10), -- no compatible destination + cintNcong (11), -- network congestion + cintNre (12), -- no reply (i.e. timeout during alerting) + cintOos (13), -- called user out of service + cintRrs (14), -- route restriction (calling user not authorized for + -- the route) + cintTbnan (15), -- timeout in wait on busy condition after transfer + cintTnre (16), -- no reply after transfer (i.e. timeout during alerting + -- after transfer + cintTrans (17), -- upper limit of transit counter reached + cintUpl (18), -- upper limit of number of diversions reached + cintInvDiv (19), -- invalid call diversion destination + cintHold (20) -- timeout after call hold + } (0..127) + + +Condition ::= INTEGER { + unknown (0), + cintBus (2), -- busy user + cintCug (3), -- closed user group rejection + cintDnd (4), -- do not disturb activated + cintIbd (5), -- incoming barred destination + cintInn (6), -- invalid number + cintMob1 (7), -- mobile user location not known + cintMob2 (8), -- mobile user no longer registered + cintMob3 (9), -- mobile terminal not responding + cintNcmp (10), -- no compatible destination + cintNcong (11), -- network congestion + cintOos (13), -- called user out of service + cintRrs (14), -- route restriction (calling user not authorized for + -- the route + cintTrans (17), -- upper limit of transit counter reached + cintUpl (18), -- upper limit of number of diversions + -- reached + cintInvDiv (19) -- invalid call diversion destination + } (0..127) + +CINTExtSet EXTENSION ::= {...} + +END -- of Call-Interception-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-CMN.asn b/epan/dissectors/asn1/qsig/QSIG-CMN.asn new file mode 100644 index 00000000..99bdb390 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-CMN.asn @@ -0,0 +1,143 @@ +-- QSIG-CMN.asn +-- +-- Taken from Ecma International +-- Standard ECMA-251, 3rd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-251.htm +-- + +Common-Information-Operations-asn1-97 + {iso (1) standard (0) pss1-common-information (15772) operations-asn1-97 (1)} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + {joint-iso-itu-t (2) remote-operations (4) informationObjects (5) version1 (0)} + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + {iso (1) standard (0) pss1-generic-procedures (11582) msi-class-asn1-97 (11)}; + +CMN-Operations OPERATION ::= {cmnRequest | cmnInform } + +cmnRequest OPERATION ::= { + ARGUMENT DummyArg + RESULT CmnArg + ALWAYS RESPONDS FALSE + CODE local: 84} + +cmnInform OPERATION ::= { + ARGUMENT CmnArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 85} + +CmnArg ::= SEQUENCE { + featureIdentifier [2] IMPLICIT FeatureIdList OPTIONAL, + ssDNDOprotectionLevel [3] IMPLICIT INTEGER (0..3) OPTIONAL, + -- Supplementary Service Do Not Disturb Override Protection level, + -- meaningful only in backward direction; inclusion indicates + -- support of SS-DNDO as well as the applicable protection level. + ssCIprotectionLevel [4] IMPLICIT INTEGER (0..3) OPTIONAL, + -- Supplementary Service Call Intrusion Protection level, + -- meaningful both in forward & backward direction; inclusion indicates support + -- of SS-CI as an Unwanted user PINX (forward direction) or as a Terminating + -- PINX (backward direction), as well as the applicable protection level. + equipmentIdentity [5] IMPLICIT EquipmentId OPTIONAL, + partyCategory [6] IMPLICIT PartyCategory OPTIONAL, + extension CHOICE { + single [7] IMPLICIT Extension{{CMNExtSet}}, + multiple [8] IMPLICIT SEQUENCE OF + Extension{{CMNExtSet}} + } OPTIONAL } + +DummyArg ::= CHOICE { + null NULL, + single [1] IMPLICIT Extension{{CMNExtSet}}, + multiple [2] IMPLICIT SEQUENCE OF Extension{{CMNExtSet}} + } + +FeatureIdList ::= BIT STRING { -- bit set to ONE means the corresponding feature + -- is available for this call + reserved (0), -- this Bit shall be reserved + ssCFreRoutingSupported (1), -- Call Forwarding rerouting supported + -- meaningful only in forward direction + -- during call establishment + ssCTreRoutingSupported (2), -- Call Transfer rerouting supported + -- meaningful both in forward & backward + -- direction during call establishment + ssCCBSpossible (3), -- CCBS possible + -- meaningful only in backward direction + -- before receipt of ALERTING/CONNECT + ssCCNRpossible (4), -- CCNR possible + -- meaningful only in backward direction + -- before receipt of CONNECT + ssCOsupported (5), -- Call Offer supported + -- meaningful only in backward direction + -- during call establishment + + -- Call Intrusion + ssCIforcedRelease (6), -- meaningful only in backward direction + ssCIisolation (7), -- meaningful only in backward direction + ssCIwaitOnBusy (8), -- meaningful only in backward direction + + -- Advice of Charge + ssAOCsupportChargeRateProvAtGatewPinx (9), -- meaningful only in + -- backward direction + ssAOCsupportInterimChargeProvAtGatewPinx (10), -- meaningful only in + -- backward direction + ssAOCsupportFinalChargeProvAtGatewPinx (11), -- meaningful only in + -- backward direction + + anfPRsupportedAtCooperatingPinx (12), -- Path replacement + -- meaningful both in forward & + -- backward direction + + -- Call Interception + anfCINTcanInterceptImmediate (13), -- meaningful only in + -- forward direction + anfCINTcanInterceptDelayed (14), -- meaningful only in + -- forward direction + + anfWTMIreRoutingSupported (15), -- Incoming WTM call + -- meaningful only in + -- forward direction + anfPUMIreRoutingSupported (16), -- Incoming PUM call + -- meaningful only in + -- forward direction + ssSSCTreRoutingSupported (17) -- Single Step Call Transfer rerouting + -- supported + -- meaningful both in forward and + -- backward direction during call + -- establishment + } (SIZE (1..64)) + +EquipmentId ::= SEQUENCE { + nodeId [1] IMPLICIT IA5String (SIZE (1..10)) OPTIONAL, + groupId [2] IMPLICIT IA5String (SIZE (1..10)) OPTIONAL, + unitId [3] IMPLICIT IA5String (SIZE (1..10)) OPTIONAL + } +-- NOTE: +-- The purpose of the Equipment Id is to indicate, to another user or to another PINX, information about a +-- calling or called party involved in a call. +-- Assignment of network wide unique Equipment Id values is outside the scope of this Standard. + +PartyCategory ::= ENUMERATED { + unknown (0), + extension (1), + pisnAttendant (2), + emergExt (3) + } + +-- NOTE: +-- The purpose of the Party category is to indicate, to another user or to another PINX, the category of a user +-- involved in a call. An Originating PINX may include an indication of the calling user's category in the SETUP +-- message sent across an inter-PINX link. A Terminating PINX may include an indication of the called user's +-- category in an ALERTING message or CONNECT message sent across an inter-PINX link. A received +-- Party category information may be used for display at the user's terminal or for PINX internal call handling, +-- e.g. depending on whether the calling or called party is an extension or a PISN attendant, the PINX internal +-- call handling may invoke different options of a supplementary service related to that call. + +CMNExtSet EXTENSION ::= {...} + + +END -- of Common-Information-Operations-asn1-97
\ No newline at end of file diff --git a/epan/dissectors/asn1/qsig/QSIG-CO.asn b/epan/dissectors/asn1/qsig/QSIG-CO.asn new file mode 100644 index 00000000..8157d2bf --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-CO.asn @@ -0,0 +1,102 @@ +-- QSIG-CO.asn +-- +-- Taken from Ecma International +-- Standard ECMA-192, 4th edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-192.htm +-- + +Call-Offer-Operations-asn1-97 + {iso(1) standard(0) pss1-call-offer(14843) call-offer-operations-asn1-97 (2) } + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + {joint-iso-itu-t remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + {iso(1) standard(0) + pss1-generic-procedures(11582) msi-class-asn1-97 (11)} + notAvailable, supplementaryServiceInteractionNotAllowed + FROM General-Error-List + {ccitt recommendation q 950 general-error-list (1)}; + +Call-Offer-Operations OPERATION ::= { callOfferRequest | pathRetain | serviceAvailable | cfbOverride } + +pathRetain OPERATION ::= { + ARGUMENT PathRetainArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 41} + -- this operation may be used by other supplementary services + -- using other values of argument + +serviceAvailable OPERATION ::= { + ARGUMENT ServiceAvailableArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 42} + -- this operation may be used by other supplementary services + -- using other values of argument + +callOfferRequest OPERATION ::= { + ARGUMENT DummyArg + RESULT DummyRes + ERRORS { + notAvailable | + notBusy | + temporarilyUnavailable | + supplementaryServiceInteractionNotAllowed | + unspecified} + CODE local: 34} + +PathRetainArg ::= CHOICE {serviceList ServiceList, + extendedServiceList SEQUENCE{ + serviceList ServiceList, + extension Extension{{COExtSet}} + } + } + +ServiceAvailableArg ::= CHOICE {serviceList ServiceList, + extendedServiceList SEQUENCE{ + serviceList ServiceList, + extension Extension{{COExtSet}} + } + } + +ServiceList ::= BIT STRING {callOffer(0)} (SIZE(1..32)) + -- bits other than callOffer(0) are reserved for + -- other supplementary services + +DummyArg ::= CHOICE{ + null NULL, + extension [1] IMPLICIT Extension{{COExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{COExtSet}}} + +DummyRes ::= CHOICE{ + null NULL, + extension [1] IMPLICIT Extension{{COExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{COExtSet}}} + +cfbOverride OPERATION ::= { + ARGUMENT DummyArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 49} + -- used in the interaction with Call Forwarding Busy +COExtSet EXTENSION ::= {...} + +notBusy ERROR ::= { CODE local: 1009} + -- used when an SS-CO request is received in + -- a Terminating PINX and the called user is not busy + +temporarilyUnavailable ERROR ::= { CODE local: 1000} + -- used when conditions for invocation of SS-CO + -- are momentarily not met + +unspecified ERROR ::= { + PARAMETER Extension{{ COExtSet}} + CODE local: 1008} + + +END -- of Call-Offer-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-CPI.asn b/epan/dissectors/asn1/qsig/QSIG-CPI.asn new file mode 100644 index 00000000..7014e015 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-CPI.asn @@ -0,0 +1,67 @@ +-- QSIG-CPI.asn +-- +-- Taken from Ecma International +-- Standard ECMA-264, 3rd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-264.htm +-- + +Call-Interruption-Operations-asn1-97 +{iso (1) standard (0) pss1-call-interruption (15992) call-interruption-operations-asn1-97 (2) } + + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS OPERATION FROM Remote-Operations-Information-Objects + {joint-iso-itu-t (2) remote-operations (4) informationObjects (5) version1 (0)} + + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + {iso (1) standard (0) pss1-generic-procedures (11582) msi-class-asn1-97 (11)}; + + -- The following operations are defined: + +Call-Interruption-Operations OPERATION ::= { callInterruptionRequest | callProtectionRequest } + +callInterruptionRequest OPERATION ::= { + ARGUMENT CPIRequestArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 87} + +callProtectionRequest OPERATION ::= { + ARGUMENT CPIPRequestArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 88} + + -- The following arguments are defined: + +CPIRequestArg ::= SEQUENCE{ + cpiCapabilityLevel CPICapabilityLevel, + argumentExtension CHOICE{ + extension [1] IMPLICIT Extension{{CPIPExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF + Extension{{CPIPExtSet}}} OPTIONAL} + +CPIPRequestArg ::= SEQUENCE{ + cpiProtectionLevel CPIProtectionLevel, + argumentExtension CHOICE{ + extension [1] IMPLICIT Extension{{CPIPExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF + Extension{{CPIPExtSet}}} OPTIONAL} + +CPICapabilityLevel ::= ENUMERATED{ + interruptionLowPriority (1), + interruptionMediumPriority (2), + interruptionHighPriority (3)} + +CPIProtectionLevel ::= ENUMERATED{ + noProtection (0), + lowProtection (1), + mediumProtection (2), + totalProtection (3)} + +CPIPExtSet EXTENSION ::= {...} + +END -- of Call-Interruption-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-CT.asn b/epan/dissectors/asn1/qsig/QSIG-CT.asn new file mode 100644 index 00000000..45fb81dc --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-CT.asn @@ -0,0 +1,229 @@ +-- QSIG-CT.asn +-- +-- Taken from Ecma International +-- Standard ECMA-178, 3rd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-178.htm +-- + +Call-Transfer-Operations-asn1-97 + {iso(1) standard(0) pss1-call-transfer(13869) call-transfer-operations-asn1-97 (1)} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + + +IMPORTS + OPERATION, ERROR FROM +Remote-Operations-Information-Objects {joint-iso-itu-t(2) remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} FROM +Manufacturer-specific-service-extension-class-asn1-97 {iso(1) standard(0) pss1-generic-procedures (11582) +msi-class-asn1-97(11)} + Name FROM +Name-Operations-asn1-97 {iso(1) standard(0) pss1-name (13868) name-operations-asn1-97 (1)} + supplementaryServiceInteractionNotAllowed, + notAvailable, + invalidCallState FROM +General-Error-List {ccitt (0) recommendation (0) q 950 general-error-list (1)} + PresentedAddressScreened, + PresentedNumberScreened, + PartyNumber, + PartySubaddress FROM +Addressing-Data-Elements-asn1-97 {iso(1) standard(0) pss1-generic-procedures (11582) +addressing-data-elements-asn1-97 (20)} + PSS1InformationElement +FROM PSS1-generic-parameters-definition-asn1-97 { iso(1) standard (0) pss1-generic-procedures (11582) + pss1-generic-parameters-asn1-97 (17)}; + +-- TYPE DEFINITIONS FOR CT OPERATIONS FOLLOW + +Call-Transfer-Operations OPERATION ::= {callTransferIdentify | callTransferAbandon | callTransferInitiate | +callTransferSetup | callTransferActive | callTransferComplete | callTransferUpdate | subaddressTransfer} + +callTransferIdentify OPERATION ::= { + ARGUMENT DummyArg + RESULT CTIdentifyRes + ERRORS { + notAvailable | + invalidCallState | + unspecified | + supplementaryServiceInteractionNotAllowed} + CODE local: 7} + +callTransferAbandon OPERATION ::= { + ARGUMENT DummyArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 8} + +callTransferInitiate OPERATION ::= { + ARGUMENT CTInitiateArg + RESULT DummyRes + ERRORS { + notAvailable | + invalidCallState | + invalidRerouteingNumber | + unrecognizedCallIdentity | + establishmentFailure | + unspecified | + supplementaryServiceInteractionNotAllowed } + CODE local: 9} + +callTransferSetup OPERATION ::= { + ARGUMENT CTSetupArg + RESULT DummyRes + ERRORS{ + notAvailable | + invalidCallState | + invalidRerouteingNumber | + unrecognizedCallIdentity | + unspecified | + supplementaryServiceInteractionNotAllowed } + CODE local: 10} + +callTransferActive OPERATION::= { + ARGUMENT CTActiveArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 11} + +callTransferComplete OPERATION ::= { + ARGUMENT CTCompleteArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 12} + +callTransferUpdate OPERATION ::= { + ARGUMENT CTUpdateArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 13} + +subaddressTransfer OPERATION ::= { + ARGUMENT SubaddressTransferArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 14} + +-- TYPE DEFINITIONS FOR CT DATA TYPES FOLLOW + +DummyArg ::= CHOICE { + null NULL, + single [1] IMPLICIT Extension{{CTExtSet}}, + multiple [2] IMPLICIT SEQUENCE OF Extension{{CTExtSet}} + } + +DummyRes ::= CHOICE { + null NULL, + single [1] IMPLICIT Extension{{CTExtSet}}, + multiple [2] IMPLICIT SEQUENCE OF Extension{{CTExtSet}} + } + +CTIdentifyRes ::= SEQUENCE { + callIdentity CallIdentity, + rerouteingNumber PartyNumber, + resultExtension CHOICE { + single [6] IMPLICIT Extension{{CTExtSet}}, + multiple [7] IMPLICIT SEQUENCE OF Extension{{CTExtSet}} + } OPTIONAL + } + +CTInitiateArg ::= SEQUENCE { + callIdentity CallIdentity, + rerouteingNumber PartyNumber, + argumentExtension CHOICE { + single [6] IMPLICIT Extension{{CTExtSet}}, + multiple [7] IMPLICIT SEQUENCE OF Extension{{CTExtSet}} + } OPTIONAL + } + +CTSetupArg ::= SEQUENCE { + callIdentity CallIdentity, + argumentExtension CHOICE { + single [0] IMPLICIT Extension{{CTExtSet}}, + multiple [1] IMPLICIT SEQUENCE OF Extension{{CTExtSet}} + } OPTIONAL + } + +CTActiveArg ::= SEQUENCE{ + connectedAddress PresentedAddressScreened, + basicCallInfoElements PSS1InformationElement OPTIONAL, + -- ISO/IEC 11572 information element + -- Progress indicator is conveyed + connectedName Name OPTIONAL, + argumentExtension CHOICE { + single [9] IMPLICIT Extension{{CTExtSet}}, + multiple [10] IMPLICIT SEQUENCE OF Extension{{CTExtSet}} + } OPTIONAL + } + +CTCompleteArg ::= SEQUENCE { + endDesignation EndDesignation, + redirectionNumber PresentedNumberScreened, + basicCallInfoElements PSS1InformationElement OPTIONAL, + -- ISO/IEC 11572 information element + -- Progress indicator is conveyed + redirectionName Name OPTIONAL, + callStatus CallStatus DEFAULT answered, + argumentExtension CHOICE { + single [9] IMPLICIT Extension{{CTExtSet}}, + multiple [10] IMPLICIT SEQUENCE OF Extension{{CTExtSet}} + } OPTIONAL + } + +CTUpdateArg ::= SEQUENCE { + redirectionNumber PresentedNumberScreened, + redirectionName Name OPTIONAL, + basicCallInfoElements PSS1InformationElement OPTIONAL, + -- ISO/IEC 11572 information element + -- Progress indicator is conveyed + argumentExtension CHOICE { + single [9] IMPLICIT Extension{{CTExtSet}}, + multiple [10] IMPLICIT SEQUENCE OF Extension{{CTExtSet}} + }OPTIONAL } + +SubaddressTransferArg ::= SEQUENCE { + redirectionSubaddress PartySubaddress, + argumentExtension CHOICE { + single [0] IMPLICIT Extension{{CTExtSet}}, + multiple [1] IMPLICIT SEQUENCE OF Extension{{CTExtSet}} + } OPTIONAL + } + +CallStatus ::= ENUMERATED{ + answered(0), + alerting(1) + } + +CallIdentity ::= NumericString (SIZE (1..4)) + +EndDesignation ::= ENUMERATED { + primaryEnd(0), + secondaryEnd(1) + } + +CTExtSet EXTENSION ::= {...} + +unspecified ERROR ::= { + PARAMETER Extension {{CTExtSet}} + CODE local: 1008 } + + +invalidRerouteingNumber ERROR ::= { CODE local: 1004} + -- used when establishment of the new + -- connection fails because + -- the rerouteingNumber is not a valid + -- PISN address + +unrecognizedCallIdentity ERROR ::= { CODE local: 1005} + -- used when establishment of the new + -- connection fails because it could not be + -- associated with a SS-CT entity + -- at the Secondary PINX + +establishmentFailure ERROR ::= { CODE local: 1006} + -- used when establishment of the new + -- connection fails and no other error applies + -- of Call-Transfer-Operations + +END -- of Call-Transfer-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-DND.asn b/epan/dissectors/asn1/qsig/QSIG-DND.asn new file mode 100644 index 00000000..a0a57119 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-DND.asn @@ -0,0 +1,211 @@ +-- QSIG-DND.asn +-- +-- Taken from Ecma International +-- Standard ECMA-194, 4th edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-194.htm +-- + +Do-Not-Disturb-Operations-asn1-97 + {iso(1) standard(0) pss1-do-not-disturb(14844) do-not-disturb-operations-asn1-97 (2) } + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + {joint-iso-itu-t(2) remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + {iso(1) standard(0) + pss1-generic-procedures(11582) msi-class-asn1-97(11)} + basicServiceNotProvided, invalidServedUserNr, notAvailable, + userNotSubscribed, supplementaryServiceInteractionNotAllowed + FROM General-Error-List + {ccitt recommendation q 950 general-error-list (1)} + PartyNumber FROM Addressing-Data-Elements-asn1-97 + {iso(1) standard(0) pss1-generic-procedures(11582) + addressing-data-elements-asn1-97 (20)} + BasicService FROM Call-Diversion-Operations-asn1-97 + {iso(1) standard(0) pss1-call-diversion(13873) call-diversion-operations-asn1-97 (1) } + ; + +Do-Not-Disturb-Operations OPERATION ::= {doNotDisturbActivateQ | doNotDisturbDeactivateQ | +doNotDisturbInterrogateQ | doNotDisturbOverrideQ | doNotDisturbOvrExecuteQ | pathRetain | serviceAvailable} + +doNotDisturbActivateQ OPERATION ::= { + ARGUMENT DNDActivateArg + RESULT DNDActivateRes + ERRORS { userNotSubscribed | + notAvailable | + invalidServedUserNr | + basicServiceNotProvided | + temporarilyUnavailable | + supplementaryServiceInteractionNotAllowed | + unspecified} + CODE local: 35} + +doNotDisturbDeactivateQ OPERATION ::= { + ARGUMENT DNDDeactivateArg + RESULT DummyRes + ERRORS { userNotSubscribed | + notAvailable | + invalidServedUserNr | + notActivated | + temporarilyUnavailable | + supplementaryServiceInteractionNotAllowed | + unspecified} + CODE local: 36} + +doNotDisturbInterrogateQ OPERATION ::= { + ARGUMENT DNDInterrogateArg + RESULT DNDInterrogateRes + ERRORS { userNotSubscribed | + notAvailable | + invalidServedUserNr | + temporarilyUnavailable | + supplementaryServiceInteractionNotAllowed | + unspecified} + CODE local: 37} + +doNotDisturbOverrideQ OPERATION ::= { + ARGUMENT DNDOverrideArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 38} + +pathRetain OPERATION ::= { + ARGUMENT PathRetainArg -- this operation may be used by other + -- Supplementary Services using other + -- values of the argument + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 41} + +serviceAvailable OPERATION ::= { + ARGUMENT ServiceAvailableArg -- this operation may be used by other + -- Supplementary Services using other + -- values of the argument + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 42} + +doNotDisturbOvrExecuteQ OPERATION ::= { + ARGUMENT DummyArg + RESULT DummyRes + ERRORS { notAvailable | + temporarilyUnavailable | + supplementaryServiceInteractionNotAllowed | + unspecified} + CODE local: 39} + +DummyArg ::= CHOICE { + null NULL, + extension [1] IMPLICIT Extension{{DNDExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{DNDExtSet}} + } + +DummyRes ::= CHOICE { + null NULL, + extension [1] IMPLICIT Extension{{DNDExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{DNDExtSet}} + } + +DNDActivateArg ::= SEQUENCE { + basicService BasicService, + servedUserNr PartyNumber, + argumentExtension CHOICE{ + extension [1] IMPLICIT Extension{{DNDExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{DNDExtSet}} + } OPTIONAL + } + +DNDActivateRes ::= SEQUENCE { + status SET OF SEQUENCE{ + basicService BasicService, + dndProtectionLevel DNDProtectionLevel OPTIONAL + } OPTIONAL, + resultExtension CHOICE{ + extension [1] IMPLICIT Extension{{DNDExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{DNDExtSet}} + } OPTIONAL + } + +DNDDeactivateArg ::= SEQUENCE { + basicService BasicService, + servedUserNr PartyNumber, + argumentExtension CHOICE{ + extension [1] IMPLICIT Extension{{DNDExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{DNDExtSet}} + } OPTIONAL + } + +DNDInterrogateArg ::= SEQUENCE { + servedUserNr PartyNumber, + argumentExtension CHOICE{ + extension [1] IMPLICIT Extension{{DNDExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{DNDExtSet}} + } OPTIONAL + } + +DNDInterrogateRes ::= SEQUENCE { + status SET OF SEQUENCE { + basicService BasicService, + dndProtectionLevel DNDProtectionLevel OPTIONAL + } OPTIONAL, + resultExtension CHOICE{ + extension [1] IMPLICIT Extension{{DNDExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{DNDExtSet}} + } OPTIONAL + } + +DNDOverrideArg ::= SEQUENCE { + dndoCapabilityLevel DNDOCapabilityLevel, + argumentExtension CHOICE{ + extension [1] IMPLICIT Extension{{DNDExtSet}}, + sequenceOfExtn [2] IMPLICIT SEQUENCE OF Extension{{DNDExtSet}} + } OPTIONAL + } + +PathRetainArg ::= CHOICE { + serviceList ServiceList, + extendedServiceList SEQUENCE { + serviceList ServiceList, + extension Extension{{DNDExtSet}} + } + } + +ServiceAvailableArg ::= CHOICE { + serviceList ServiceList, + extendedServiceList SEQUENCE { + serviceList ServiceList, + extension Extension{{DNDExtSet}} + } + } + +DNDProtectionLevel ::= ENUMERATED { + lowProtection(0), + mediumProtection(1), + highProtection(2), + fullProtection(3) + } + +DNDOCapabilityLevel ::= ENUMERATED { + overrideLowProt(1), + overrideMediumProt(2), + overrideHighProt(3) + } + +ServiceList ::= BIT STRING + { dndo-low(1), dndo-medium(2), dndo-high(3) } (SIZE (1..32)) + -- bits other than dndo-low, dndo-medium, or dndo-high, are reserved + -- for other Supplementary Services + +temporarilyUnavailable ERROR ::= { CODE local: 1000} +--notActivated ERROR ::= { CODE local: 43} + +unspecified ERROR ::= { + PARAMETER Extension{{DNDExtSet}} + CODE local: 1008} + +DNDExtSet EXTENSION ::= {...} + +END -- of Do-Not-Disturb-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-MCM.asn b/epan/dissectors/asn1/qsig/QSIG-MCM.asn new file mode 100644 index 00000000..680bdf35 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-MCM.asn @@ -0,0 +1,399 @@ +-- QSIG-MCM.asn +-- +-- Taken from Ecma International +-- Standard ECMA-347, (June 2003) +-- http://www.ecma-international.org/publications/standards/Ecma-347.htm +-- + +SS-MCM-Operations-asn1-97 +{iso (1) identified-organization (3) icd-ecma (12) standard (0) +qsig-message-centre-monitoring (347) +message-centre-monitoring-operations-asn1-97 (1)} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS OPERATION, ERROR FROM + Remote-Operations-Information-Objects + {joint-iso-itu-t remote-operations (4) informationObjects (5) + version1 (0)} + + EXTENSION, Extension{} FROM + Manufacturer-specific-service-extension-class-asn1-97 + {iso standard pss1-generic-procedures (11582) + msi-class-asn1-97 (11)} + + basicServiceNotProvided, userNotSubscribed, invalidServedUserNr + FROM General-Error-List + {itu-t (0) recommendation (0) q (17) 950 + general-error-list (1)} + + PresentedAddressUnscreened, PartyNumber FROM + Addressing-Data-Elements-asn1-97 + {iso standard pss1-generic-procedures (11582) + addressing-data-elements-asn1-97 (20)} + Name FROM Name-Operations-asn1-97 + {iso standard pss1-name (13868) name-operations-asn1-97 (1)} + ; + + +MCM-Operations OPERATION ::= { + mCMNewMsg | + mCMNoNewMsg | + mCMUpdate | + mCMUpdateReq | + mCMService | + mCMInterrogate | + mCMailboxFull } + + +mCMNewMsg OPERATION ::= { + ARGUMENT MCMNewMsgArg + RESULT MCMDummyRes + ERRORS {userNotSubscribed | + invalidServedUserNr | + basicServiceNotProvided | + unspecified} + CODE local: 80} -- same code as for mWIActivate in SS-MWI + + +mCMNoNewMsg OPERATION ::= { + ARGUMENT MCMNoNewMsgArg + RESULT MCMDummyRes + ERRORS {userNotSubscribed | + invalidServedUserNr | + basicServiceNotProvided | + unspecified} + CODE local: 81} -- same code as for mWIDeactivate in SS-MWI + + +mCMUpdate OPERATION ::= { + ARGUMENT MCMUpdateArg + RESULT MCMDummyRes + ERRORS {userNotSubscribed | + invalidServedUserNr | + unspecified} + CODE local: 115} + + +mCMUpdateReq OPERATION ::= { + ARGUMENT MCMUpdateReqArg + RESULT MCMUpdateReqRes + ERRORS {userNotSubscribed | + invalidServedUserNr | + basicServiceNotProvided | + unspecified} + CODE local: 82} + -- same code as for mWIInterrogate in SS-MWI + +mCMService OPERATION ::= { + ARGUMENT MCMServiceArg + RESULT MCMDummyRes + ERRORS {userNotSubscribed | + invalidServedUserNr | + basicServiceNotProvided | + mCMModeNotProvided | + unspecified} + CODE local: 116} + + +mCMInterrogate OPERATION ::= { + ARGUMENT MCMInterrogateArg + RESULT MCMInterrogateRes + ERRORS {userNotSubscribed | + invalidServedUserNr | + basicServiceNotProvided | + mCMModeNotProvided | + unspecified} + CODE local: 117} + + +mCMailboxFull OPERATION ::= { + ARGUMENT MCMailboxFullArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 118} + + +MCMailboxFullArg ::= SEQUENCE + { + partyInfo PartyInfo, + mailboxFullFor MailboxFullFor, + extensions MCMExtensions OPTIONAL, + ... + } + +MailboxFullFor ::= SEQUENCE OF MailboxFullPar + +MailboxFullPar ::= SEQUENCE + { + messageType MessageType, + capacityReached INTEGER (0..100) OPTIONAL + -- percentage of storage capacity already used + } + +MCMServiceArg ::= SEQUENCE + { + + partyInfo PartyInfo, + mCMChange MCMChange, + extensions MCMExtensions OPTIONAL, + ... + } + +MCMChange ::= CHOICE + { + activateMCM [1] IMPLICIT SEQUENCE OF MCMServiceInfo, + deactivateMCM [2] IMPLICIT SEQUENCE OF MessageType, + setToDefaultValues NULL + } + +MCMServiceInfo ::= SEQUENCE + { + messageType MessageType, + mCMModeNew [1] IMPLICIT MCMMode OPTIONAL, + mCMModeRetrieved [2] IMPLICIT MCMMode OPTIONAL + } + +MCMInterrogateArg ::= SEQUENCE + { + partyInfo PartyInfo, + interrogateInfo SEQUENCE OF MessageType, + extensions MCMExtensions OPTIONAL, + ... + } + +MCMInterrogateRes ::= SEQUENCE + { + interrogateResult SEQUENCE OF MCMServiceInfo, + extensions MCMExtensions OPTIONAL, + ... + } + +MCMNewMsgArg ::= SEQUENCE + { + servedUserNr PartyNumber, + specificMessageType MessageType, + msgCentreId MsgCentreId OPTIONAL, + nrOfMessages [3] IMPLICIT NrOfMessages OPTIONAL, + originatingNr [4] PartyNumber OPTIONAL, + timestamp TimeStamp OPTIONAL, + priority [5] IMPLICIT INTEGER (0..9) OPTIONAL, + argumentExt CHOICE { + extension [6] IMPLICIT Extension{{MCMExtSet}}, + multipleExtension [7] IMPLICIT SEQUENCE OF + Extension{{MCMExtSet}} + } OPTIONAL + } + + +MCMNoNewMsgArg ::= SEQUENCE + { + servedUserNr PartyNumber, + specificMessageType MessageType, + msgCentreId MsgCentreId OPTIONAL, + argumentExt CHOICE { + extension [3] IMPLICIT Extension{{MCMExtSet}}, + multipleExtension [4] IMPLICIT SEQUENCE OF + Extension{{MCMExtSet}} + } OPTIONAL + } + +MCMUpdateArg ::= SEQUENCE + { + partyInfo PartyInfo, + messageType MessageType, + updateInfo UpdateInfo, + moreInfoFollows BOOLEAN DEFAULT FALSE, + extensions MCMExtensions OPTIONAL, + ... + } + + +MCMUpdateReqArg ::= SEQUENCE + { + servedUserNr PartyNumber, + specificMessageType MessageType, + msgCentreId MsgCentreId OPTIONAL, + argumentExt CHOICE { + extension [3] IMPLICIT Extension{{MCMExtSet}}, + multipleExtension [4] IMPLICIT SEQUENCE OF + Extension{{MCMExtSet}} + } OPTIONAL + } + + +MCMUpdateReqRes ::= SEQUENCE SIZE (1..10) OF MCMUpdateReqResElt + + +MCMUpdateReqResElt ::= SEQUENCE + { + specificMessageType MessageType, + msgCentreId MsgCentreId OPTIONAL, + nrOfMessages [3] IMPLICIT NrOfMessages OPTIONAL, + originatingNr [4] PartyNumber OPTIONAL, + timestamp TimeStamp OPTIONAL, + priority [5] IMPLICIT INTEGER (0..9) OPTIONAL, + argumentExt CHOICE { + extension [6] IMPLICIT Extension{{MCMExtSet}}, + multipleExtension [7] IMPLICIT SEQUENCE OF + Extension{{MCMExtSet}} + } OPTIONAL + } + + +MCMMode ::= INTEGER + { + compressed (0), + complete (1) + } + +MCMDummyRes ::= MCMExtensions + + +PartyInfo ::= SEQUENCE + { + servedUserNr PartyNumber, + messageCentreID MsgCentreId + } + +UpdateInfo ::= CHOICE + { + newMsgInfoOnly [1] MessageInfo, + retrievedMsgInfoOnly [2] MessageInfo, + allMsgInfo AllMsgInfo + } + + +AllMsgInfo ::= SEQUENCE + { + newMsgInfo MessageInfo, + retrievedMsgInfo MessageInfo + } + + +MessageInfo ::= CHOICE + { + completeInfo [1] IMPLICIT CompleteInfo, + compressedInfo [2] IMPLICIT CompressedInfo, + noMsgsOfMsgType NULL + } + + +CompleteInfo ::= SEQUENCE OF AddressHeader + + +AddressHeader ::= SEQUENCE + { + originatorNr PartyNumber, + timeStamp [1] IMPLICIT TimeStamp OPTIONAL, + priority [2] IMPLICIT Priority OPTIONAL + } + + +CompressedInfo ::= SEQUENCE + { + nrOfMessages NrOfMessages, + lastTimeStamp TimeStamp OPTIONAL, + highestPriority Priority OPTIONAL + } + + +NrOfMessages ::= INTEGER (0..65535) + + +Priority ::= INTEGER (0..9) -- the value 0 means the highest priority + -- and 9 the lowest + +MsgCentreId ::= CHOICE + { + integer [0] IMPLICIT INTEGER (0..65535), + partyNumber [1] PartyNumber, + numericString [2] IMPLICIT NumericString (SIZE(1..10)) + } + +TimeStamp ::= GeneralizedTime (SIZE (12..19)) + -- a VisibleString containing: + -- - the (local) date in 8 digits (YYYYMMDD), + -- - followed by (local) time of day in 4 or 6 digits (HHMM[SS]), + -- - optionally followed by the letter "Z" or + -- by a local time differential in 5 digits ("+"HHMM or "-"HHMM); + -- this date and time representation follows ISO 8601 + -- Examples: 1) 19970621194530, meaning 21 June 1997, 19:45:30; + -- 2) 19970621194530Z, meaning the same as 1); + -- 3) 19970621194530-0500, meaning the same as 1), + -- 5 hours retarded in relation to UTC time + + +MessageType ::= ENUMERATED + { + -- Note: for the following message type see also Annex D.4 + allServices (0), + -- Note: for the following message types see also Annex D.1 + -- For compatibility among vendors, speech is recommended for + -- voice mail indications + speech (1), + unrestrictedDigitalInformation (2), + audio3100Hz (3), + telephony (32), + teletex (33), + telefaxGroup4Class1 (34), + videotextSyntaxBased (35), + videotelephony (36), + telefaxGroup2-3 (37), + reservedNotUsed1 (38), + reservedNotUsed2 (39), + reservedNotUsed3 (40), + reservedNotUsed4 (41), + reservedNotUsed5 (42), + -- Note: for the following message types see also annex D.2 + email (51), + video (52), + fileTransfer (53), + shortMessageService (54), + -- Note: for the following message types see also annex D.3 + speechAndVideo (55), + speechAndFax (56), + speechAndEmail (57), + videoAndFax (58), + videoAndEmail (59), + faxAndEmail (60), + speechVideoAndFax (61), + speechVideoAndEmail (62), + speechFaxAndEmail (63), + videoFaxAndEmail (64), + speechVideoFaxAndEmail (65), + -- Note: for the following message types see also annex D.4 + multimediaUnknown (66), + serviceUnknown (67), + futureReserve1 (68), + futureReserve2 (69), + futureReserve3 (70), + futureReserve4 (71), + futureReserve5 (72), + futureReserve6 (73), + futureReserve7 (74), + futureReserve8 (75) + } + +MCMExtensions ::= CHOICE + { + none NULL, + extension [1] IMPLICIT Extension {{MCMExtSet}}, + multipleExtension [2] IMPLICIT SEQUENCE OF + Extension {{ MCMExtSet }} + } + +mCMModeNotProvided ERROR ::= { + CODE local:1037} + +unspecified ERROR ::= { + PARAMETER Extension{{MCMExtSet}} + CODE local:1008} + +MCMExtSet EXTENSION ::= {...} + + +END -- of SS-MCM-Operations-asn1-97 + diff --git a/epan/dissectors/asn1/qsig/QSIG-MCR.asn b/epan/dissectors/asn1/qsig/QSIG-MCR.asn new file mode 100644 index 00000000..26944ac2 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-MCR.asn @@ -0,0 +1,169 @@ +-- QSIG-MCR.asn +-- +-- Taken from Ecma International +-- Standard ECMA-344, (June 2003) +-- http://www.ecma-international.org/publications/standards/Ecma-344.htm +-- + +SS-MCR-Operations-asn97 +{iso (1) identified-organization (3) icd-ecma (12) standard (0) + qsig-make-call-request (344) make-call-request-operations (0)} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS + +OPERATION, +ERROR +FROM Remote-Operations-Information-Objects +{ joint-iso-itu-t (2) remote-operations (4) informationObjects (5) version1 (0) } + +EXTENSION, +Extension {} +FROM Manufacturer-specific-service-extension-class-asn1-97 +{ iso (1) standard (0) pss1-generic-procedures (11582) msi-class-asn1-97 (11) } + +Name +FROM Name-Operations-asn1-97 +{ iso (1) standard (0) pss1-name (13868) name-operations-asn1-97 (1) } + +BasicService +FROM Call-Diversion-Operations-asn1-97 +{ iso (1) standard (0) pss1-call-diversion (13873) + call-diversion-operations-asn1-97 (1) } + +basicServiceNotProvided, +supplementaryServiceInteractionNotAllowed, +userNotSubscribed +FROM General-Error-List +{itu-t (0) recommendation (0) q (17) 950 general-error-list (1)} + +PresentedAddressUnscreened +FROM Addressing-Data-Elements-asn1-97 +{ iso (1) standard (0) pss1-generic-procedures (11582) + addressing-data-elements-asn1-97 (20) } + +CallIdentity, establishmentFailure +FROM Path-Replacement-Operations-asn1-97 +{iso (1) standard (0) pss1-path-replacement (13874) pr-operations-asn1-97(1)} +; + +Make-Call-Request-Operations OPERATION::= { + mCRequest | mCAlerting | mCInform } + +mCRequest OPERATION ::= { + ARGUMENT MCRequestArg + RESULT MCRequestResult + ERRORS {userNotSubscribed| + basicServiceNotProvided| + supplementaryServiceInteractionNotAllowed| + invalidDestinationNumber| + invalidCooperationNumber| + mCRequestNotAllowed| + mCExecutionNotAllowed| + mCDestUserBusy| + mCCoopUserBusy| + mCCoopUserRejected| + establishmentFailure| + unspecified} + CODE local: 112 + } + +mCInform OPERATION ::= { + ARGUMENT MCInformArg + RETURN RESULT FALSE + ERRORS {userNotSubscribed| + basicServiceNotProvided| + supplementaryServiceInteractionNotAllowed| + invalidDestinationNumber| + mCExecutionNotAllowed| + mCDestUserBusy| + unspecified} + ALWAYS RESPONDS FALSE + CODE local: 113 + } + +mCAlerting OPERATION ::= { + ARGUMENT MCAlertingArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 114 + } + +MCRequestArg ::= SEQUENCE + { + callType CallType, + retainOrigCall BOOLEAN DEFAULT TRUE, + destinationAddress PresentedAddressUnscreened, + requestingAddress [0] PresentedAddressUnscreened OPTIONAL, + cooperatingAddress [1] PresentedAddressUnscreened OPTIONAL, + correlation Correlation, + extensions MCRExtensions OPTIONAL, + ... + } + +MCRequestResult ::= SEQUENCE + { + extensions MCRExtensions OPTIONAL, + ... + } + +MCInformArg ::= SEQUENCE + { + requestingAddress [0] PresentedAddressUnscreened OPTIONAL, + cooperatingAddress [1] PresentedAddressUnscreened OPTIONAL, + correlation Correlation, + extensions MCRExtensions OPTIONAL, + ... + } + +MCAlertingArg ::= SEQUENCE + { + correlation Correlation, + extensions MCRExtensions OPTIONAL, + ... + } +CallType ::= CHOICE + { + basicService BasicService, + cisc NULL + } + +Correlation ::= SEQUENCE + { + correlationData CallIdentity, + correlationReason CorrelationReason OPTIONAL + } +CorrelationReason ::= INTEGER + { + unknown (0), + mCACommunication (1), + cTIApplication (2) + } (0..255) + +MCRExtensions ::= CHOICE + { + none NULL, + single [0] IMPLICIT Extension + { { MakeCallRequestExtension } } , + multiple [1] IMPLICIT SEQUENCE OF Extension + { { MakeCallRequestExtension } } + } + +MakeCallRequestExtension EXTENSION::= {...} + +invalidDestinationNumber ERROR ::= {CODE local : 1030} +invalidCooperationNumber ERROR ::= {CODE local : 1031} +mCRequestNotAllowed ERROR ::= {CODE local : 1032} +mCExecutionNotAllowed ERROR ::= {CODE local : 1033} +mCDestUserBusy ERROR ::= {CODE local : 1034} +mCCoopUserBusy ERROR ::= {CODE local : 1035} +mCCoopUserRejected ERROR ::= {CODE local : 1036} +unspecified ERROR ::= {PARAMETER Extension + { { MakeCallRequestExtension } } + CODE local : 1008 + } + +END -- of SS-MCR-Operations diff --git a/epan/dissectors/asn1/qsig/QSIG-MID.asn b/epan/dissectors/asn1/qsig/QSIG-MID.asn new file mode 100644 index 00000000..8e5bbe07 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-MID.asn @@ -0,0 +1,129 @@ +-- QSIG-MID.asn +-- +-- Taken from Ecma International +-- Standard ECMA-347, (June 2003) +-- http://www.ecma-international.org/publications/standards/Ecma-347.htm +-- + +SS-MID-Operations-asn1-97 +{iso (1) identified-organization (3) icd-ecma (12) standard (0) +qsig-mailbox-identification (347) mailbox-identification-operations-asn1-97 (2)} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS OPERATION, ERROR FROM + Remote-Operations-Information-Objects + {joint-iso-itu-t remote-operations (4) informationObjects (5) + version1 (0)} + + EXTENSION, Extension{} FROM + Manufacturer-specific-service-extension-class-asn1-97 + {iso standard pss1-generic-procedures (11582) msi-class-asn1-97 + (11)} + + basicServiceNotProvided, userNotSubscribed, invalidServedUserNr + FROM General-Error-List + {itu-t (0) recommendation (0) q (17) 950 general-error-list (1)} + + PresentedAddressUnscreened FROM + Addressing-Data-Elements-asn1-97 + {iso standard pss1-generic-procedures (11582) addressing-data-elements-asn1-97 (20)} + + Name FROM + Name-Operations-asn1-97 + {iso standard pss1-name (13868) name-operations-asn1-97 (1)} + + MessageType, MsgCentreId FROM + SS-MCM-Operations-asn1-97 + {iso (1) identified-organization (3) icd-ecma (12) standard (0) + qsig-message-centre-monitoring (347) + message-centre-monitoring-operations-asn1-97 (1)} + ; + + +MID-Operations OPERATION ::= {mIDMailboxAuth | + mIDMailboxID} + +mIDMailboxAuth OPERATION ::= { + ARGUMENT MIDMailboxAuthArg + RESULT MIDDummyRes + ERRORS {userNotSubscribed | + invalidServedUserNr | + invalidMailbox | + authorizationFailed | + unspecified} + CODE local:119} + +mIDMailboxID OPERATION ::= { + ARGUMENT MIDMailboxIDArg + RESULT MIDDummyRes + ERRORS {userNotSubscribed | + invalidServedUserNr | + invalidMailbox | + unspecified} + CODE local:120} + + +MIDMailboxAuthArg ::= SEQUENCE + { + + partyInfo PartyInfo, + servedUserName Name OPTIONAL, + mailBox [8]String OPTIONAL, + password String, + extensions MIDExtensions OPTIONAL, + ... + } + + +MIDMailboxIDArg ::= SEQUENCE + { + + partyInfo PartyInfo, + servedUserName Name OPTIONAL, + mailBox String, + extensions MIDExtensions OPTIONAL, + ... + } + + +MIDDummyRes ::= MIDExtensions + +PartyInfo ::= SEQUENCE + { + servedUserNr PresentedAddressUnscreened, + messageType MessageType OPTIONAL, + messageCentreID MsgCentreId + } + +String ::= CHOICE + { + stringBmp BMPString, + stringUtf8 UTF8String + } + + +MIDExtensions ::= CHOICE + { + none NULL, + extension [1] IMPLICIT Extension {{MIDExtSet}}, + multipleExtension [2] IMPLICIT SEQUENCE OF + Extension {{ MIDExtSet }} + } + +invalidMailbox ERROR ::= { + CODE local:1039} + + +authorizationFailed ERROR ::= { + CODE local:1040} + +unspecified ERROR ::= { + PARAMETER Extension{{MIDExtSet}} + CODE local:1008} + +MIDExtSet EXTENSION ::= {...} + +END -- of SS-MID-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-NA.asn b/epan/dissectors/asn1/qsig/QSIG-NA.asn new file mode 100644 index 00000000..7b03b8b4 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-NA.asn @@ -0,0 +1,135 @@ +-- QSIG-NA.asn +-- +-- Taken from Ecma International +-- Standard ECMA-164, 4th edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-164.htm +-- + +Name-Operations-asn1-97 + { iso ( 1) standard ( 0) pss1-name (13868) name-operations-asn1-97( 1) } + + +DEFINITIONS ::= + +BEGIN + +IMPORTS + +OPERATION FROM Remote-Operations-Information-Objects + {joint-iso-itu-t remote-operations(4) informationObjects(5) version1(0)} + +EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + { iso standard pss1-generic-procedures (11582) msi-class-asn1-97 ( 11) }; + +Name-Operations OPERATION ::= { callingName | calledName | connectedName | busyName } + +callingName OPERATION ::= { + ARGUMENT NameArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 0 + } + +calledName OPERATION ::= { + ARGUMENT NameArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 1 + } + +connectedName OPERATION ::= { + ARGUMENT NameArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 2 + } + +busyName OPERATION ::= { + ARGUMENT NameArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 3 + } + +NameArg ::= CHOICE { + name Name, + nameSequence SEQUENCE { + name Name, + extension NameExtension OPTIONAL + } + } + +NameExtension ::= CHOICE { + single [5] IMPLICIT Extension{{NameExtensionSet}}, + multiple [6] IMPLICIT SEQUENCE OF Extension{{NameExtensionSet}} + } + +NameExtensionSet EXTENSION ::= {...} + +Name ::= CHOICE + { namePresentationAllowed NamePresentationAllowed, + namePresentationRestricted NamePresentationRestricted, + nameNotAvailable NameNotAvailable } + +NamePresentationAllowed ::= CHOICE + { namePresentationAllowedSimple [0] IMPLICIT NameData, + namePresentationAllowedExtended [1] IMPLICIT NameSet } + -- iso8859-1 is implied in namePresentationAllowedSimple. + +NamePresentationRestricted ::= CHOICE + { namePresentationRestrictedSimple [2] IMPLICIT NameData, + namePresentationRestrictedExtended [3] IMPLICIT NameSet, + namePresentationRestrictedNull [7] IMPLICIT NULL} + -- iso8859-1 is implied in namePresentationRestrictedSimple. + -- namePresentationRestrictedNull shall only be used in the + -- case of interworking where the other network provides an + -- indication that the name is restricted without the name itself. + +NameNotAvailable ::= [4] IMPLICIT NULL + +NameData ::= OCTET STRING (SIZE (1..50)) + -- The maximum allowed size of the name field is 50 octets. + -- The minimum required size of the name field is 1 octet. + +NameSet ::= SEQUENCE + { nameData NameData, + characterSet CharacterSet OPTIONAL } + -- If characterSet is not included, iso8859-1 is implied. + +CharacterSet ::= INTEGER + { unknown (0), + iso8859-1 (1), + -- The character set "iso8859-1" is specified in International + -- Standard ISO 8859-1 + -- The value 2 was assigned for CCITT Rec. T.61 + -- which has been withdrawn by ITU-T. + iso8859-2 (3), + -- The character set "iso8859-2" is specified in International + -- Standard ISO 8859-2 + iso8859-3 (4), + --The character set "iso8859-3" is specified in International + -- Standard ISO 8859-3 + iso8859-4 (5), + --The character set "iso8859-4" is specified in International + -- Standard ISO 8859-4 + iso8859-5 (6), + --The character set "iso8859-5" is specified in International + -- Standard ISO 8859-5 + iso8859-7 (7), + --The character set "iso8859-7" is specified in International + -- Standard ISO 8859-7 + iso10646-BmpString (8), + -- The character set "iso10646-BmpString" is specified in International + -- Standard ISO 10646-1 and in ITU-T Rec. X.680 + -- with this character set, each character occupies 2 octets in NameData + iso10646-utf-8String (9) + -- The character set "iso10646-utf-8String" is specified in International + -- Standard ISO 10646-1 + -- UTF-8-String is defined in Annex R of ISO 10646-1 + -- with this character set, each character occupies a variable + -- number of octets (1...6) in NameData + } (0..255) + -- Other character sets might be added in further editions of + -- this Standard + +END -- of Name-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-PR.asn b/epan/dissectors/asn1/qsig/QSIG-PR.asn new file mode 100644 index 00000000..7274ea1b --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-PR.asn @@ -0,0 +1,169 @@ +-- QSIG-PR.asn +-- +-- Taken from Ecma International +-- Standard ECMA-176, 4th edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-176.htm +-- + +Path-Replacement-Operations-asn1-97 + {iso standard pss1-path-replacement (13874) pr-operations-asn1-97(1)} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + {joint-iso-itu-t (2) remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + {iso standard + pss1-generic-procedures (11582) msi-class-asn1-97 (11)} + notAvailable, supplementaryServiceInteractionNotAllowed + FROM General-Error-List + {ccitt recommendation q 950 general-error-list (1)} + PartyNumber FROM Addressing-Data-Elements-asn1-97 + {iso(1) standard(0) pss1-generic-procedures(11582) + addressing-data-elements-asn1-97 (20)}; + +Path-Replacement-Operations OPERATION ::={ +pathReplacePropose | pathReplaceSetup | pathReplaceRetain | pathReplaceInvite} + +pathReplaceInvite OPERATION ::= { + ARGUMENT DummyArg + RETURN RESULT FALSE + ERRORS { + notAvailable | + temporarilyUnavailable | + supplementaryServiceInteractionNotAllowed | + criteriaPermanentlyUnachievable | + criteriaTemporarilyUnachievable | + invalidRerouteingNumber | + unrecognizedCallIdentity | + establishmentFailure | + collision | + unspecified } + ALWAYS RESPONDS FALSE + CODE local: 86 } + +pathReplacePropose OPERATION ::= { + ARGUMENT PRProposeArg + RETURN RESULT FALSE + ERRORS { + notAvailable | + temporarilyUnavailable | + supplementaryServiceInteractionNotAllowed | + criteriaPermanentlyUnachievable | + criteriaTemporarilyUnachievable | + invalidRerouteingNumber | + unrecognizedCallIdentity | + establishmentFailure | + collision | + unspecified } + ALWAYS RESPONDS FALSE + CODE local: 4 } + +pathReplaceSetup OPERATION ::= { + ARGUMENT PRSetupArg + RESULT DummyResult + ERRORS { + criteriaPermanentlyUnachievable | + criteriaTemporarilyUnachievable | + invalidRerouteingNumber | + unrecognizedCallIdentity | + temporarilyUnavailable | + unspecified } + CODE local: 5 } + +pathReplaceRetain OPERATION ::= { + ARGUMENT PRRetainArg + RESULT DummyResult + ERRORS { + notAvailable | + temporarilyUnavailable | + supplementaryServiceInteractionNotAllowed | + criteriaPermanentlyUnachievable | + criteriaTemporarilyUnachievable | + invalidRerouteingNumber | + unrecognizedCallIdentity | + establishmentFailure | + unspecified } + CODE local: 6 } + +PRProposeArg ::= SEQUENCE { + callIdentity CallIdentity, + rerouteingNumber PartyNumber, + extension CHOICE { + single [1] IMPLICIT Extension{{PRExtSet}}, + multiple [2] IMPLICIT SEQUENCE OF Extension{{PRExtSet}} + } OPTIONAL + } + +PRSetupArg ::= SEQUENCE { + callIdentity CallIdentity, + extension CHOICE { + single [1] IMPLICIT Extension{{PRExtSet}}, + multiple [2] IMPLICIT SEQUENCE OF Extension{{PRExtSet}} + } OPTIONAL + } + +PRRetainArg ::= SEQUENCE { + callIdentity CallIdentity, + rerouteingNumber PartyNumber, + extension CHOICE { + single [1] IMPLICIT Extension{{PRExtSet}}, + multiple [2] IMPLICIT SEQUENCE OF Extension{{PRExtSet}} + } OPTIONAL + } + +DummyResult ::= CHOICE { + null NULL, + single [1] IMPLICIT Extension{{PRExtSet}}, + multiple [2] IMPLICIT SEQUENCE OF Extension{{PRExtSet}} + } + +DummyArg ::= CHOICE { + null NULL, + single [1] IMPLICIT Extension{{PRExtSet}}, + multiple [2] IMPLICIT SEQUENCE OF Extension{{PRExtSet}} + } + +PRExtSet EXTENSION ::= {...} + +CallIdentity ::= NumericString (SIZE(1..4)) + +temporarilyUnavailable ERROR ::= {CODE local: 1000} + -- used when the operation is temporarily not available and none of + -- the other errors applies - a later attempt could be successful + +collision ERROR ::= {CODE local: 1001} + -- used when a pathReplacePropose invoke APDU is received by a PINX + -- which has sent a pathReplacePropose invoke APDU + +criteriaPermanentlyUnachievable ERROR ::= {CODE local: 1002} + -- used when the special criteria requested cannot be achieved + -- because the necessary resources are permanently unavailable + +criteriaTemporarilyUnachievable ERROR ::= {CODE local: 1003} + -- used when the special criteria requested cannot be achieved + -- because the necessary resources are temporarily unavailable + -- a later attempt could be successful + +invalidRerouteingNumber ERROR ::= {CODE local: 1004} + -- used when the establishment of the new connection fails because the + -- Called party number information element is not a valid number for + -- routeing the new connection to + +unrecognizedCallIdentity ERROR ::= {CODE local: 1005} + -- used when establishment of the new connection fails because it could + -- not be associated with the old connection at the Requesting PINX + +establishmentFailure ERROR ::= {CODE local: 1006} + -- used when establishment of the new connection fails and no other error + -- applies + +unspecified ERROR ::= { + PARAMETER Extension{{PRExtSet}} + CODE local: 1008} + -- used to convey a manufacturer specific error, possibly with other information + -- of Path-Replacement-Operations + +END -- of Path-Replacement-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-PUMCH.asn b/epan/dissectors/asn1/qsig/QSIG-PUMCH.asn new file mode 100644 index 00000000..dfe66975 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-PUMCH.asn @@ -0,0 +1,135 @@ +-- QSIG-PUMCH.asn +-- +-- Taken from Ecma International +-- Standard ECMA-284, 3rd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-284.htm +-- + +Private-User-Mobility-Call-Handling-Operations-asn1-97 + { iso (1) standard (0) pss1-pum-call-handling (17878) pum-call-handling-operations-asn1-97 (1)} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + { joint-iso-itu-t remote-operations (4) informationObjects (5) version1 (0) } + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + { iso (1) standard (0) + pss1-generic-procedures (11582) msi-class-asn1-97(11) } + PSS1InformationElement FROM PSS1-generic-parameters-definition-asn1-97 + { iso (1) standard (0) + pss1-generic-procedures (11582) pss1-generic-parameters-asn1-97 (17) } + Name FROM Name-Operations-asn1-97 + { iso (1) standard (0) + pss1-name (13868) name-operations-asn1-97 (1) } + basicServiceNotProvided, invalidServedUserNr, notAvailable FROM + General-Error-List + { ccitt recommendation q 950 general-error-list (1) } + Address, PartyNumber, PartySubaddress, PresentedNumberScreened FROM + Addressing-Data-Elements-asn1-97 + { iso (1) standard (0) pss1-generic-procedures (11582) + addressing-data-elements-asn1-97 (20) }; + +Private-User-Mobility-Call-Handling-Operations OPERATION ::= { pumiEnquiry | pumiDivert | pumiInform | +pumoCall } + +-- Operations for ANF-PUMI: -- +pumiEnquiry OPERATION ::= { + -- Sent from the PUMI-detect PINX to the Home PINX. + ARGUMENT EnquiryArg + RESULT EnquiryRes + ERRORS { invalidServedUserNr | locationNotKnown | + notAvailable | basicServiceNotProvided | unspecified } + CODE local: 93} +pumiDivert OPERATION ::= { + -- Sent from the PUMI-detect PINX to the Rerouteing PINX. + ARGUMENT DivertArg + RESULT DummyRes + ERRORS { notAvailable | unspecified } + CODE local: 94} + +pumiInform OPERATION ::= { + -- Sent from the Rerouteing PINX to the Visitor PINX. + ARGUMENT InformArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 95} +EnquiryArg ::= SEQUENCE { pisnNumber PartyNumber, + -- The PISN number of the PUM user + qSIGInfoElement PSS1InformationElement, + -- The basic call information elements Bearer capability, High layer compatibility, + -- Low layer compatibility can be embedded in the qSIGInfoElement + -- in accordance with clause 6.5.2.1. + argExtension PumiExtension OPTIONAL } +DivertArg ::= SEQUENCE { hostingAddr PartyNumber, + -- The PISN number of the hosting user, + -- always a Complete Number. + callingNumber PresentedNumberScreened, + pumIdentity PumIdentity, + -- The PISN number (always a Complete Number) + -- and/or an alternative identifier of the PUM user. + qSIGInfoElement PSS1InformationElement, + -- The basic call information elements Bearer capability, High layer compatibility, + -- Low layer compatibility, and Progress indicator + -- can be embedded in the qSIGInfoElement in accordance with clause 6.5.2.1. + callingUserSub [ 1 ] PartySubaddress OPTIONAL, + callingUserName [ 2 ] Name OPTIONAL, + pumUserSub [ 3 ] PartySubaddress OPTIONAL, + argExtension PumiExtension OPTIONAL } +InformArg ::= SEQUENCE { pumIdentity PumIdentity, + -- The PISN number (always a Complete Number) + -- and/or an alternative identifier of the PUM user. + argExtension PumiExtension OPTIONAL } +EnquiryRes ::= CHOICE { currLocation [ 1 ] IMPLICIT CurrLocation, + cfuActivated [ 2 ] IMPLICIT CfuActivated } +CurrLocation ::= SEQUENCE { hostingAddr PartyNumber, + -- The PISN number of the hosting user, + -- always a Complete Number. + pumIdentity PumIdentity, + -- The PISN number (always a Complete Number) + -- and/or an alternative identifier of the PUM user. + argExtension PumiExtension OPTIONAL } +CfuActivated ::= SEQUENCE { divToAddress Address, + divOptions SubscriptionOption, + pumName [ 1 ] Name OPTIONAL, + argExtension PumiExtension OPTIONAL } +SubscriptionOption ::=ENUMERATED { noNotification (0), + notificationWithoutDivertedToNr (1), + notificationWithDivertedToNr (2) } + +DummyRes ::= CHOICE { null NULL, + extension [ 1 ] IMPLICIT Extension{{PUMCHExtSet}}, + sequOfExtn [ 2 ] IMPLICIT SEQUENCE OF + Extension{{PUMCHExtSet}} } +PumiExtension ::= CHOICE { extension [ 4 ] IMPLICIT Extension{{PUMCHExtSet}}, + sequOfExtn [ 5 ] IMPLICIT SEQUENCE OF + Extension{{PUMCHExtSet}} } +PumIdentity ::= CHOICE { pisnNumber PartyNumber, + alternativeId [ 10 ] IMPLICIT AlternativeId, + both [ 11 ] IMPLICIT SEQUENCE + { pisnNumber PartyNumber, + alternativeId AlternativeId } } +AlternativeId ::= OCTET STRING(SIZE(1..20)) +-- Operation for ANF-PUMO -- +pumoCall OPERATION ::= { + ARGUMENT PumoArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 96} +PumoArg ::= SEQUENCE { destinationNumber [0] PartyNumber OPTIONAL, + pumIdentity [1] PumIdentity OPTIONAL, + -- The PISN number (always a Complete Number) + -- and/or an alternative identifier of the PUM user. + sendingComplete [2] IMPLICIT NULL OPTIONAL, + extension CHOICE + {single [3] IMPLICIT Extension{{PUMCHExtSet}}, + multiple [4] IMPLICIT SEQUENCE OF + Extension{{PUMCHExtSet}} } + OPTIONAL } +PUMCHExtSet EXTENSION ::= {...} + +locationNotKnown ERROR ::= { CODE local: 1015} +unspecified ERROR ::= { PARAMETER Extension{{PUMCHExtSet}} + CODE local: 1008} + +END -- of Private-User-Mobility-Call-Handling-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-PUMR.asn b/epan/dissectors/asn1/qsig/QSIG-PUMR.asn new file mode 100644 index 00000000..6134f436 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-PUMR.asn @@ -0,0 +1,205 @@ +-- QSIG-PUMR.asn +-- +-- Taken from Ecma International +-- Standard ECMA-282, 3rd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-282.htm +-- + +PUM-Registration-Operations-asn1-97 + { iso (1) standard (0) pss1-pum-registration (17876) pum-registration-operations-asn1-97 (1) } + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + { joint-iso-itu-t (2) remote-operations (4) informationObjects (5) version1(0)} + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + { iso (1) standard (0) pss1-generic-procedures (11582) msi-class-asn1-97 (11) } + notAvailable, invalidServedUserNr, supplementaryServiceInteractionNotAllowed + FROM General-Error-List + { ccitt recommendation q 950 general-error-list (1) } + PartyNumber FROM Addressing-Data-Elements-asn1-97 + { iso (1) standard (0) pss1-generic-procedures (11582) + addressing-data-elements-asn1-97 (20) } + BasicService FROM Call-Diversion-Operations-asn1-97 + { iso (1) standard (0) pss1-call-diversion (13873) + call-diversion-operations-asn1-97 (1) } + pisnEnquiry FROM WTM-Location-Registration-Operations-asn1-97 + { iso (1) standard (0) pss1-location-registration (15429) + wtmlr-operations-asn1-97 (1) }; + +PUM-Registration-Operations OPERATION ::= { pumRegistr | pumDelReg | pumDe-reg | + pumInterrog | pisnEnquiry } + +pumRegistr OPERATION ::= { + -- Registration (sent from the Visitor PINX to the Home PINX or + -- from a Remote PINX to the Visitor PINX) + ARGUMENT PumRegistrArg + RESULT PumRegistrRes + ERRORS { invalidServedUserNr | notAuthorized | unspecified | + notAvailable | temporarilyUnavailable | + supplementaryServiceInteractionNotAllowed | + pumUserNotSubscribedToThisServiceOpt | + pumUserFailedAuthentication | hostingAddrInvalid } + CODE local: 89} + +pumDelReg OPERATION ::= { + -- Delete Registration (sent from the Home PINX to the Previous Visitor PINX) + ARGUMENT PumDelRegArg + RESULT DummyRes + ERRORS { notAvailable | temporarilyUnavailable | unspecified | + supplementaryServiceInteractionNotAllowed } + CODE local: 90} +pumDe-reg OPERATION ::= { + -- De-registration (sent from the Visitor PINX or Remote PINX to the Home PINX) + ARGUMENT PumDe-regArg + RESULT DummyRes + ERRORS { invalidServedUserNr | notAuthorized | unspecified | + supplementaryServiceInteractionNotAllowed | + pumUserNotSubscribedToThisServiceOpt | + pumUserFailedAuthentication | hostingAddrInvalid | + pumUserNotRegistered } + CODE local: 91} +pumInterrog OPERATION ::= { + -- Interrogation (sent from the Visitor PINX or Remote PINX to the Home PINX and + -- from the Home PINX to the Visitor PINX) + ARGUMENT PumInterrogArg + RESULT PumInterrogRes + ERRORS { invalidServedUserNr | notAuthorized | unspecified | + supplementaryServiceInteractionNotAllowed | + pumUserFailedAuthentication | hostingAddrInvalid | + pumUserNotRegistered } + CODE local: 92} +PumRegistrArg ::= SEQUENCE { pumUserId CHOICE { pumNumber PartyNumber, + -- The PISN number of the PUM user, + -- always a Complete Number. + alternativeId AlternativeId }, + basicService BasicService, + -- specific basic service or all basic services, + hostingAddr PartyNumber, + -- The PISN number of the hosting user, + -- always a Complete Number. + activatingUserAddr [0] PartyNumber OPTIONAL, + -- The PISN number of the activating user, + -- always a Complete Number. + -- Mandatory if sent from a Remote PINX, else not included. + serviceOption ServiceOption DEFAULT inCallRegistration, + -- Type of registration (InCall, OutCall or AllCall) + sessionParams SessionParams OPTIONAL, + -- Duration of session, Number of outgoing calls + userPin CHOICE { pumUserPin [6] IMPLICIT UserPin, + activatingUserPin [7] IMPLICIT UserPin } OPTIONAL, + argExtension PumrExtension OPTIONAL } + +PumRegistrRes ::= SEQUENCE { pumNumber PartyNumber, + serviceOption ServiceOption OPTIONAL, + -- Type of registration (InCall, OutCall or AllCall) + sessionParams SessionParams OPTIONAL, + -- Duration of session, Number of outgoing calls + argExtension PumrExtension OPTIONAL } +DummyRes ::= CHOICE { null NULL, + extension [ 1 ] IMPLICIT Extension{{PUMRExtSet}}, + sequOfExtn [ 2 ] IMPLICIT SEQUENCE OF + Extension{{PUMRExtSet}} } +PumDelRegArg ::= SEQUENCE { pumUserId CHOICE { pumNumber PartyNumber, + -- The PISN number of the PUM user, + -- always a Complete Number. + alternativeId AlternativeId }, + basicService BasicService, + -- specific basic service or all basic services, + hostingAddr PartyNumber, + -- The PISN number of the hosting user, + -- always a Complete Number. + serviceOption ServiceOption, + -- Type of registration session (InCall, OutCall or AllCall) + argExtension PumrExtension OPTIONAL } +PumDe-regArg ::= SEQUENCE { pumUserId CHOICE { pumNumber PartyNumber, + -- The PISN number of the PUM user, + -- always a Complete Number. + alternativeId AlternativeId }, + basicService BasicService, + -- specific basic service or all basic services, + hostingAddr [0] PartyNumber OPTIONAL, + -- The PISN number of the hosting user, + -- always a Complete Number. + -- Not included if serviceOption indicates 'inCallRegistration', + -- optional if serviceOption indicates 'outCallRegistration' + -- or 'allCallRegistration'. + activatingUserAddr [1] PartyNumber OPTIONAL, + -- The PISN number of the activating user, + -- always a Complete Number. + -- Mandatory if sent from a Remote PINX, else not included. + serviceOption ServiceOption DEFAULT inCallRegistration, + -- Type of registration session (InCall, OutCall or AllCall) + -- If serviceOption indicates 'outCallRegistration' and + -- hostingAddr is omitted, the de-registration applies to + -- all OutCall registrations of this PUM user. + -- If serviceOption indicates 'allCallRegistration' and + -- hostingAddr is omitted, the de-registration applies to the + -- AllCall and all OutCall registrations of this PUM user. + userPin CHOICE { pumUserPin [6] IMPLICIT UserPin, + activatingUserPin [7] IMPLICIT UserPin } OPTIONAL, + argExtension PumrExtension OPTIONAL } + +PumInterrogArg ::= SEQUENCE { pumUserId CHOICE { pumNumber PartyNumber, + -- The PISN number of the PUM user, + -- always a Complete Number. + alternativeId AlternativeId }, + basicService BasicService, + -- specific basic service or all basic services, + hostingAddr [0] PartyNumber OPTIONAL, + -- The PISN number of the hosting user, + -- always a Complete Number. + -- Omission indicates 'all hosting addresses'. + activatingUserAddr [1] PartyNumber OPTIONAL, + -- The PISN number of the activating user, + -- always a Complete Number. + serviceOption [2] ServiceOption OPTIONAL, + homeInfoOnly BOOLEAN DEFAULT TRUE, + -- True = Only Home PINX information (default) + -- False = Complete information + userPin CHOICE { pumUserPin [6] IMPLICIT UserPin, + activatingUserPin [7] IMPLICIT UserPin } OPTIONAL, + argExtension PumrExtension OPTIONAL } +PumInterrogRes ::= SET SIZE(1..8) OF + SEQUENCE { basicService [0] IMPLICIT BasicService OPTIONAL, + -- specific basic service or all basic services, + -- (Home PINX information) + hostingAddr [1] PartyNumber OPTIONAL, + -- The PISN number of the hosting user, + -- always a Complete Number. + -- (Home PINX information) + serviceOption [2] IMPLICIT ServiceOption OPTIONAL, + -- Type of registration session + -- (InCall, OutCall or AllCall) + -- (Home PINX information) + interrogParams SessionParams OPTIONAL, + -- Time left in registration session, + -- Number of outgoing calls left + -- (Visitor PINX information) + argExtension PumrExtension OPTIONAL } +AlternativeId ::= OCTET STRING (SIZE(1..20)) +ServiceOption ::= ENUMERATED { inCallRegistration (0), + outCallRegistration (1), + allCallRegistration (2) } +SessionParams ::= SEQUENCE { durationOfSession [ 1 ] IMPLICIT INTEGER OPTIONAL, + -- Duration of session in seconds, + -- default if omitted: duration of session unlimited. + numberOfOutgCalls [ 2 ] IMPLICIT INTEGER OPTIONAL } + -- Default if omitted: number of outgoing calls unlimited. +UserPin ::= OCTET STRING (SIZE(1..20)) + +PumrExtension ::= CHOICE { + extension [ 4 ] IMPLICIT Extension {{PUMRExtSet}}, + sequOfExtn [ 5 ] IMPLICIT SEQUENCE OF + Extension{{PUMRExtSet}} } +PUMRExtSet EXTENSION ::= {...}unspecified ERROR ::= { PARAMETER + Extension{{PUMRExtSet}} + CODE local: 1008} +notAuthorized ERROR ::= { CODE local: 1007} +temporarilyUnavailable ERROR ::= { CODE local: 1000} +pumUserNotSubscribedToThisServiceOpt ERROR ::= { CODE local: 1019} +pumUserFailedAuthentication ERROR ::= { CODE local: 1020} +hostingAddrInvalid ERROR ::= { CODE local: 1021} +pumUserNotRegistered ERROR ::= { CODE local: 1022} +END -- of PUM-Registration-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-RE.asn b/epan/dissectors/asn1/qsig/QSIG-RE.asn new file mode 100644 index 00000000..64df0fd5 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-RE.asn @@ -0,0 +1,62 @@ +-- QSIG-RE.asn +-- +-- Taken from Ecma International +-- Standard ECMA-214, 3rd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-214.htm +-- + +Recall-Operations-asn1-97 + { iso (1) standard (0) pss1-recall (15052) recall-operations-asn1-97 (1) } + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS + OPERATION, ERROR FROM Remote-Operations-Information-Objects + { joint-iso-itu-t (2) remote-operations (4) informationObjects (5) version1(0) } + + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + { iso (1) standard (0) pss1-generic-procedures (11582) msi-class-asn1-97 (11) } + + Name FROM Name-Operations-asn1-97 + { iso (1) standard (0) pss1-name (13868) name-operations-asn1-97 (1) } + + PresentedNumberScreened, PartySubaddress FROM Addressing-Data-Elements-asn1-97 + { iso (1) standard (0) pss1-generic-procedures (11582) addressing-data-elements-asn1-97 (20) }; + +Recall-Operations OPERATION ::= { recallAlerting | recallAnswered } + +recallAlerting OPERATION ::= { + -- Sent from the Served User PINX to the Primary PINX + ARGUMENT ReAlertingArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 57} + +recallAnswered OPERATION ::= { + -- Sent from the Served User PINX to the Primary PINX + ARGUMENT ReAnswerArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 58} + +ReAlertingArg ::= SEQUENCE { + alertedNumber [1] PresentedNumberScreened OPTIONAL, + alertedName [2] Name OPTIONAL, + argumentExtension CHOICE { + extension [6] IMPLICIT Extension{{REExtSet}}, + multipleExtension [7] IMPLICIT SEQUENCE OF Extension{{REExtSet}} + } OPTIONAL } + +ReAnswerArg ::= SEQUENCE { + connectedNumber [1] PresentedNumberScreened, + connectedSubaddress [2] PartySubaddress OPTIONAL, + connectedName [3] Name OPTIONAL, + argumentExtension CHOICE { + extension [6] IMPLICIT Extension{{REExtSet}}, + multipleExtension [7] IMPLICIT SEQUENCE OF Extension{{REExtSet}} + } OPTIONAL } +REExtSet EXTENSION ::= {...} + +END -- of Recall-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-SD.asn b/epan/dissectors/asn1/qsig/QSIG-SD.asn new file mode 100644 index 00000000..3c24e795 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-SD.asn @@ -0,0 +1,89 @@ +-- QSIG-SD.asn +-- +-- Taken from Ecma International +-- Standard ECMA-311, 2nd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-311.htm +-- + +SS-SD-Operations-asn1-97 +{ iso (1) standard (0) pss1-simple-dialog (21407) simple-dialog-operations-asn1-97 (1)} + + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + {joint-iso-itu-t (2) remote-operations (4) informationObjects (5) + version1 (0)} + + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + {iso (1) standard (0) pss1-generic-procedures (11582) + msi-class-asn1-97(11)}; + +SD-Operations OPERATION ::= { display | keypad} + +display OPERATION ::= { + ARGUMENT DisplayArg + RETURN RESULT FALSE + ERRORS {unspecified | + noDisplayAvailable | + displayTemporarilyNotAvailable | + notPresentable + } + ALWAYS RESPONDS FALSE + CODE local: 103} + + +keypad OPERATION ::= { + ARGUMENT KeypadArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 104} + + +DisplayArg ::= SEQUENCE { + displayString DisplayString, + extension SDExtension OPTIONAL + } + + +DisplayString ::= CHOICE { + displayStringNormal [0] IMPLICIT BMPStringNormal, + displayStringExtended [1] IMPLICIT BMPStringExtended + } + +KeypadArg ::= SEQUENCE { + keypadString [0] IMPLICIT BMPStringNormal, + extension SDExtension OPTIONAL + } + + +BMPStringNormal ::= OCTET STRING (SIZE(2..64)) -- shall be used according to + -- ISO/IEC 10646-1 (section 6.2) + -- coded as a BMP String according to + -- ITU-T Rec. X.690 (section 8.20.8) + +BMPStringExtended ::= OCTET STRING (SIZE(2..160)) -- shall be used according to ISO/IEC 10646-1 + -- coded as a BMP String according to + -- ITU-T Rec. X.690 + + +SDExtension ::= CHOICE { + extension [2] IMPLICIT Extension{{SDExtSet}}, + multipleExtension [3] IMPLICIT SEQUENCE OF Extension{{SDExtSet}} + } + +SDExtSet EXTENSION ::= {...} + +unspecified ERROR ::= { PARAMETER Extension{{SDExtSet}} + CODE local: 1008} + +noDisplayAvailable ERROR ::= { CODE local: 1023} + +displayTemporarilyNotAvailable ERROR ::= { CODE local: 1024} + +notPresentable ERROR ::= { CODE local: 1025} + + +END -- of SS-SD-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-SMS.asn b/epan/dissectors/asn1/qsig/QSIG-SMS.asn new file mode 100644 index 00000000..54304949 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-SMS.asn @@ -0,0 +1,339 @@ +-- QSIG-SMS.asn +-- +-- Taken from Ecma International +-- Standard ECMA-325, (June 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-325.htm +-- + +Short-Message-Service-Operations-asn1-97 +{iso(1) identified-organization(3) icd-ecma(12) standard(0) qsig-short-message-service(325) short-message-service-operations-asn1-97(1)} + +DEFINITIONS::= +BEGIN +IMPORTS + OPERATION, + ERROR +FROM Remote-Operations-Information-Objects +{joint-iso-itu-t (2) remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} +FROM Manufacturer-specific-service-extension-class-asn1-97 +{iso(1) standard(0) pss1-generic-procedures(11582) msi-class-asn1-97(11)} + Name +FROM Name-Operations-asn1-97 +{iso(1) standard(0) pss1-name(13868) name-operations-asn1-97(1)} + supplementaryServiceInteractionNotAllowed +FROM General-Error-List +{ccitt recommendation q 950 general-error-list(1)} + PartyNumber +FROM Addressing-Data-Elements-asn1-97 +{iso(1) standard(0) pss1-generic-procedures(11582) addressing-data-elements-asn1-97(20)}; + +--TYPE DEFINITIONS FOR SMS OPERATIONS FOLLOW + +Sms-Operations OPERATION ::={ + + smsSubmit | smsDeliver | smsStatusReport | smsCommand | scAlert} + +smsSubmit OPERATION ::= { + -- sent from the Sending User PINX/ Sending User Message Centre to the Service Centre + ARGUMENT SmsSubmitArg + RESULT SmsSubmitRes + ERRORS {smsSubmitError | + unspecified} + CODE local:107} + +smsDeliver OPERATION ::= { + -- sent from the Service Centre to the Receiving User PINX or to the Receiving User Message Centre + ARGUMENT SmsDeliverArg + RESULT SmsDeliverRes + ERRORS {smsDeliverError | + unspecified} + CODE local:108} + +smsStatusReport OPERATION ::= { + -- sent from the Service Centre to the Sending User PINX or to the Sending User Message Centre + ARGUMENT SmsStatusReportArg + RESULT SmsStatusReportRes + ERRORS {smsStatusReportError | + unspecified} + CODE local:109} + +smsCommand OPERATION ::= { + -- sent from the Sending User PINX or the Sending User Message Centre to the Service Centre + ARGUMENT SmsCommandArg + RESULT SmsCommandRes + ERRORS {smsCommandError | + unspecified} + CODE local:110} + +scAlert OPERATION ::= { + -- sent from the Receiving User PINX or the Receiving User Message Centre to the Service Centre + ARGUMENT ScAlertArg + RESULT DummyRes + ERRORS {unspecified} + CODE local:111} + +--TYPE DEFINITIONS FOR SMS DATA TYPES FOLLOW + +SmsSubmitArg ::= SEQUENCE { + destinationAddress PartyNumber, + originatingAddress PartyNumber, + messageReference MessageReference, + smSubmitParameter SmSubmitParameter, + userData UserData, + smsExtension SmsExtension OPTIONAL} + +SmsSubmitRes ::= SEQUENCE { + serviceCentreTimeStamp ServiceCentreTimeStamp, + protocolIdentifier [3] IMPLICIT ProtocolIdentifier OPTIONAL, + userData [4] IMPLICIT UserData OPTIONAL, + smsExtension SmsExtension OPTIONAL} + +SmsDeliverArg ::= SEQUENCE { + originatingAddress PartyNumber, + destinationAddress PartyNumber, + originatingName Name OPTIONAL, + smDeliverParameter SmDeliverParameter, + userData UserData, + smsExtension SmsExtension OPTIONAL} + +SmsDeliverRes ::= SEQUENCE { + smsDeliverResponseChoice SmsDeliverResChoice, + smsExtension SmsExtension OPTIONAL} + +SmsStatusReportArg ::= SEQUENCE { + messageReference MessageReference, + serviceCentreTimeStamp ServiceCentreTimeStamp, + dischargeTime DischargeTime, + recipientAddress PartyNumber, + recipientName [10] Name OPTIONAL, + destinationAddress PartyNumber, + status Status, + priority [11] IMPLICIT BOOLEAN DEFAULT FALSE, + moreMessagesToSend [12] IMPLICIT BOOLEAN DEFAULT FALSE, + statusReportQualifier [13] IMPLICIT BOOLEAN DEFAULT FALSE, + protocolIdentifier ProtocolIdentifier OPTIONAL, + userData UserData OPTIONAL, + smsExtension SmsExtension OPTIONAL} + +SmsStatusReportRes ::= SEQUENCE { + smsStatusReportResponseChoice SmsStatusReportResponseChoice, + smsExtension SmsExtension OPTIONAL} + +SmsCommandArg ::= SEQUENCE { + destinationAddress PartyNumber, + messageReference MessageReference, + messageNumber MessageReference, + protocolIdentifier ProtocolIdentifier, + commandType CommandType, + commandData CommandData OPTIONAL, + statusReportRequest BOOLEAN OPTIONAL, + smsExtension SmsExtension OPTIONAL} + +SmsCommandRes ::= SEQUENCE { + serviceCentreTimeStamp ServiceCentreTimeStamp, + protocolIdentifier ProtocolIdentifier OPTIONAL, + userData UserData OPTIONAL, + smsExtension SmsExtension OPTIONAL} + +ScAlertArg ::= SEQUENCE { + originatingAddress PartyNumber, + smsExtension SmsExtension OPTIONAL} + +DummyRes ::= CHOICE{ + null NULL, + smsExtension SmsExtension} + +SmSubmitParameter ::= SEQUENCE { + protocolIdentifier ProtocolIdentifier, + validityPeriod ValidityPeriod OPTIONAL, + statusReportRequest [11] IMPLICIT BOOLEAN DEFAULT FALSE, + replyPath [12] IMPLICIT BOOLEAN DEFAULT FALSE, + rejectDuplicates [13] IMPLICIT BOOLEAN DEFAULT FALSE} + +SmDeliverParameter ::= SEQUENCE { + protocolIdentifier ProtocolIdentifier, + serviceCentreTimeStamp ServiceCentreTimeStamp, + priority [11] IMPLICIT BOOLEAN DEFAULT FALSE, + moreMessagesToSend [12] IMPLICIT BOOLEAN DEFAULT FALSE, + statusReportIndication [13] IMPLICIT BOOLEAN DEFAULT FALSE, + replyPath [14] IMPLICIT BOOLEAN DEFAULT FALSE} + +SmsDeliverResChoice ::= CHOICE { + null NULL, + protocolIdentifier ProtocolIdentifier, + userData [0] IMPLICIT UserData, + resChoiceSeq [1] IMPLICIT ResChoiceSeq} + +ResChoiceSeq ::= SEQUENCE { + protocolIdentifier ProtocolIdentifier, + userData UserData} + +SmsStatusReportResponseChoice ::= CHOICE { + null NULL, + protocolIdentifier ProtocolIdentifier, + userData [0] IMPLICIT UserData, + resChoiceSeq [1] IMPLICIT ResChoiceSeq} + +MessageReference ::= INTEGER(0..255) + +SmsExtension ::= CHOICE{ + single [1]IMPLICIT Extension{{SmsExtSet}}, + multiple [2]IMPLICIT SEQUENCE OF + Extension{{SmsExtSet}} + } + +SmsExtSet EXTENSION ::= {...} + +ProtocolIdentifier ::= INTEGER (0..127) + -- definition of the ProtocolIdentifier values and default value can be found in annex E section + -- E.1.2.1 + +ServiceCentreTimeStamp ::= GeneralizedTime(SIZE(12..19)) + -- this date and time representation follows ISO 8601 + +DischargeTime ::= GeneralizedTime(SIZE(12..19)) + -- this date and time representation follows ISO 8601 + +ValidityPeriod ::= CHOICE{ + validityPeriodRel [0] IMPLICIT ValidityPeriodRel, + validityPeriodAbs [1] IMPLICIT ValidityPeriodAbs, + validityPeriodEnh [2] IMPLICIT ValidityPeriodEnh} + +ValidityPeriodAbs ::= GeneralizedTime(SIZE(12..19)) + -- this date and time representation follows ISO 8601 + +ValidityPeriodRel ::= INTEGER(0..255) + -- the rules for the encoding of ValidityPeriodRel are shown in annex E section E.1.2.2 + +ValidityPeriodEnh ::= SEQUENCE{ + singleShotSM BOOLEAN DEFAULT FALSE, + enhancedVP EnhancedVP OPTIONAL} + +EnhancedVP ::= CHOICE{ + validityPeriodRel [0] IMPLICIT ValidityPeriodRel, + validityPeriodSec [1] IMPLICIT INTEGER(0..255), + validityPeriodSemi [2] IMPLICIT ValidityPeriodSemi} + +ValidityPeriodSemi ::= OCTET STRING (SIZE(3)) + -- Validity Period is relative in semi-octet representation, see ETSI TS 100 901, section 9.1.2.3 + -- and section 9.2.3.12.3 + +UserData ::= SEQUENCE{ + userDataHeader [0] IMPLICIT UserDataHeader OPTIONAL, + class [1] IMPLICIT INTEGER (0..3) OPTIONAL, + compressed [2] IMPLICIT BOOLEAN DEFAULT FALSE, + shortMessageText ShortMessageText} + +ShortMessageText ::= SEQUENCE{ + shortMessageTextType ShortMessageTextType, + shortMessageTextData ShortMessageTextData} + +ShortMessageTextType ::= INTEGER{ + iA5Coded (0), -- ShortMessageTextData shall contain data according to + octetCoded (1), -- the type given in ShortMessageTextType, for further + uniCoded (2), -- details see annex E. 1.3.4. + compressedCoded (3)} (0..8) + +ShortMessageTextData ::= OCTET STRING (SIZE(0..140)) + +Status ::= INTEGER (0..255) + -- definition of status values can be found in section E.7.6 in annex E + +CommandType ::= INTEGER{ + enquiry (0), + cancelSRR (1), + deletePreviouslySubmittedSM (2), + enableSRRrelatingToPreviouslySubmittedSM (3)} (0..255) + +CommandData ::= OCTET STRING (SIZE(0..157)) + +FailureCause ::= INTEGER (0..255) + -- definition for failureCause values can be found in section E.3.1 in annex E + +UserDataHeader ::= SEQUENCE OF UserDataHeaderChoice + +UserDataHeaderChoice ::= CHOICE{ + smscControlParameterHeader [0] IMPLICIT SmscControlParameterHeader, + concatenated8BitSMHeader [1] IMPLICIT Concatenated8BitSMHeader, + concatenated16BitSMHeader [2] IMPLICIT Concatenated16BitSMHeader, + applicationPort8BitHeader [3] IMPLICIT ApplicationPort8BitHeader, + applicationPort16BitHeader [4] IMPLICIT ApplicationPort16BitHeader, + dataHeaderSourceIndicator [5] IMPLICIT DataHeaderSourceIndicator, + wirelessControlHeader [6] IMPLICIT WirelessControlHeader, + genericUserValue [99] IMPLICIT GenericUserValue} + +SmscControlParameterHeader ::= BIT STRING { + sRforTransactionCompleted (0), + sRforPermanentError (1), + sRforTempErrorSCnotTrying (2), + sRforTempErrorSCstillTrying (3), + cancelSRRforConcatenatedSM (6), + includeOrigUDHintoSR (7)} (SIZE(8)) + +Concatenated8BitSMHeader ::= SEQUENCE{ + concatenated8BitSMReferenceNumber INTEGER(0..255), + maximumNumberOf8BitSMInConcatenatedSM INTEGER(0..255), + sequenceNumberOf8BitSM INTEGER(0..255)} + +Concatenated16BitSMHeader ::= SEQUENCE{ + concatenated16BitSMReferenceNumber INTEGER(0..65536), + maximumNumberOf16BitSMInConcatenatedSM INTEGER(0..255), + sequenceNumberOf16BitSM INTEGER(0..255)} + +ApplicationPort8BitHeader ::= SEQUENCE{ + destination8BitPort INTEGER(0..255), + originator8BitPort INTEGER(0..255)} + +ApplicationPort16BitHeader ::= SEQUENCE{ + destination16BitPort INTEGER(0..65536), + originator16BitPort INTEGER(0..65536)} + +DataHeaderSourceIndicator ::= INTEGER{ + originalSender (1), -- valid in case of Status Report + originalReceiver (2), -- valid in case of Status Report + sMSC (3)}(0..255) -- can occur in any message or report + +WirelessControlHeader ::= OCTET STRING + +GenericUserValue ::= SEQUENCE{ + parameterValue INTEGER(0..255), + genericUserData OCTET STRING} + +smsDeliverError ERROR ::= { + PARAMETER SEQUENCE{ + failureCause FailureCause, + protocolIdentifier [0] IMPLICIT ProtocolIdentifier OPTIONAL, + userData [1] IMPLICIT UserData OPTIONAL, + scAddressSaved [2] IMPLICIT BOOLEAN DEFAULT FALSE} + CODE local:1026} + +smsSubmitError ERROR ::= { + PARAMETER SEQUENCE{ + failureCause FailureCause, + serviceCentreTimeStamp ServiceCentreTimeStamp, + protocolIdentifier [0] IMPLICIT ProtocolIdentifier OPTIONAL, + userData [1] IMPLICIT UserData OPTIONAL} + CODE local:1027} + +smsStatusReportError ERROR ::= { + PARAMETER SEQUENCE{ + failureCause FailureCause, + protocolIdentifier [0] IMPLICIT ProtocolIdentifier OPTIONAL, + userData [1] IMPLICIT UserData OPTIONAL, + scAddressSaved [2] IMPLICIT BOOLEAN DEFAULT FALSE} + CODE local: 1028} + +smsCommandError ERROR ::= { + PARAMETER SEQUENCE{ + failureCause FailureCause, + serviceCentreTimeStamp ServiceCentreTimeStamp, + protocolIdentifier [0] IMPLICIT ProtocolIdentifier OPTIONAL, + userData [1] IMPLICIT UserData OPTIONAL} + CODE local:1029} + +unspecified ERROR ::= { + PARAMETER SmsExtension + CODE local: 1008} + +END -- of Short-Message-Service-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-SSCT.asn b/epan/dissectors/asn1/qsig/QSIG-SSCT.asn new file mode 100644 index 00000000..9e97a73b --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-SSCT.asn @@ -0,0 +1,120 @@ +-- QSIG-SSCT.asn +-- +-- Taken from Ecma International +-- Standard ECMA-300, 2nd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-300.htm +-- + +Single-Step-Call-Transfer-Operations-asn1-97 +{ iso(1) standard (0) pss1-single-step-call-transfer (19460) +single-step-call-transfer-operations-asn1-97 (1)} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN +IMPORTS + OPERATION, ERROR FROM Remote-Operations-Information-Objects + { joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0) } + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + { iso (1) standard (0) pss1-generic-procedures (11582) msi-class-asn1-97 (11) } + Name FROM Name-Operations-asn1-97 + {iso(1) standard(0) pss1-name (13868) name-operations-asn1-97 (1)} + supplementaryServiceInteractionNotAllowed, notAvailable, invalidCallState + FROM General-Error-List + { ccitt recommendation q 950 general-error-list (1) } + PresentedAddressScreened, PartyNumber FROM Addressing-Data-Elements-asn1-97 + {iso(1) standard (0) pss1-generic-procedures (11582) + addressing-data-elements-asn1-97 (20)} + PSS1InformationElement FROM PSS1-generic-parameters-definition-asn1-97 + {iso(1) standard (0) pss1-generic-procedures (11582) + pss1-generic-parameters-asn1-97 (17)} + callTransferUpdate, callTransferComplete, callTransferActive, subaddressTransfer, + invalidRerouteingNumber, establishmentFailure FROM Call-Transfer-Operations-asn1-97 + {iso(1) standard (0) pss1-call-transfer (13869) call-transfer-operations-asn1-97 (1)}; + +Single-Step-Call-Transfer-Operations OPERATION ::= { ssctInitiate | ssctSetup | ssctPostDial | +ssctDigitInfo } + +ssctInitiate OPERATION ::= { + -- sent from the Transferring PINX to the Rerouting PINX + ARGUMENT SSCTInitiateArg + RESULT DummyRes + ERRORS { notAvailable | invalidCallState | invalidRerouteingNumber | + establishmentFailure | unspecified | + supplementaryServiceInteractionNotAllowed } + CODE local: 99} + +ssctSetup OPERATION ::= { + -- sent from the Rerouting PINX to the Transferred-To PINX + ARGUMENT SSCTSetupArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 100} + +ssctPostDial OPERATION ::= { + -- sent from the Rerouting PINX to the Transferred PINX + ARGUMENT DummyArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 101} + +ssctDigitInfo OPERATION ::= { + -- sent from the Transferred PINX to the Rerouting PINX + ARGUMENT SSCTDigitInfoArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 102} + +DummyArg ::= CHOICE { + null NULL, + single [1] IMPLICIT Extension{{SSCTExtSet}}, + multiple [2] IMPLICIT SEQUENCE OF Extension{{SSCTExtSet}}} + +DummyRes ::= CHOICE { + null NULL, + single [1] IMPLICIT Extension{{SSCTExtSet}}, + multiple [2] IMPLICIT SEQUENCE OF Extension{{SSCTExtSet}}} + +SSCTInitiateArg ::= SEQUENCE { + rerouteingNumber PartyNumber, -- Transferred-To Number + transferredAddress PresentedAddressScreened, + awaitConnect AwaitConnect, + transferredName [1] Name OPTIONAL, + transferringAddress [2] PresentedAddressScreened OPTIONAL, + transferringName [3] Name OPTIONAL, + argumentExtension CHOICE { + single [4] IMPLICIT Extension{{SSCTExtSet}}, + multiple [5] IMPLICIT SEQUENCE OF Extension{{SSCTExtSet}} + } OPTIONAL + } + +AwaitConnect ::= BOOLEAN + -- FALSE = release the original call upon ALERTING received + -- TRUE = release the original call upon CONNECT received + +SSCTSetupArg ::= SEQUENCE { + transferringAddress [1] PresentedAddressScreened OPTIONAL, + transferringName [2] Name OPTIONAL, + argumentExtension CHOICE { + single [3] IMPLICIT Extension{{SSCTExtSet}}, + multiple [4] IMPLICIT SEQUENCE OF Extension{{SSCTExtSet}} + } OPTIONAL + } + +SSCTDigitInfoArg ::= SEQUENCE { + reroutingNumber [1] PartyNumber OPTIONAL, + -- remaining digits of the Transferred-To Number + sendingComplete [2] IMPLICIT NULL OPTIONAL, + argumentExtension CHOICE { + single [3] IMPLICIT Extension{{SSCTExtSet}}, + multiple [4] IMPLICIT SEQUENCE OF Extension{{SSCTExtSet}} + } OPTIONAL + } + +SSCTExtSet EXTENSION ::= {...} + +unspecified ERROR ::= { + PARAMETER Extension{{SSCTExtSet}} + CODE local: 1008} + +END -- of SSCT Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-WTMAU.asn b/epan/dissectors/asn1/qsig/QSIG-WTMAU.asn new file mode 100644 index 00000000..c0dfea51 --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-WTMAU.asn @@ -0,0 +1,154 @@ +-- QSIG-WTMAU.asn +-- +-- Taken from Ecma International +-- Standard ECMA-306, 2nd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-306.htm +-- + +WTM-Authentication-Operations-asn1-97 + {iso standard pss1-authentication (15433) authentication-operations-asn1-97 (1)} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + {joint-iso-itu-t(2) remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + {iso standard + pss1-generic-procedures (11582) msi-class-asn1-97 (11)} + invalidServedUserNr FROM General-Error-List + {ccitt recommendation q 950 general-error-list (1)} + PartyNumber FROM Addressing-Data-Elements-asn1-97 + {iso(1) standard(0) pss1-generic-procedures(11582) + addressing-data-elements-asn1-97(20)}; +WTMAuth-Operations OPERATION ::= {authWtmUser | getWtatParam | wtatParamEnq | getWtanParam | + wtanParamEnq | transferAuthParam} +-- The following three operations shall apply to SS-WTAT -- +authWtmUser OPERATION ::= { -- from Home PINX to Visitor PINX-- + ARGUMENT AuthWtmArg + RESULT AuthWtmRes + ERRORS { temporarilyUnavailable | invalidServedUserNr | + notAuthorized | paramNotAvailable | unspecified} + CODE local : 72} +getWtatParam OPERATION ::= { -- from Visitor PINX to Home PINX -- + ARGUMENT WtatParamArg + RESULT WtatParamRes + ERRORS { invalidServedUserNr | notAuthorized | + paramNotAvailable | temporarilyUnavailable | unspecified} + CODE local : 73} +wtatParamEnq OPERATION ::= { -- from Home PINX to Authentication Server PINX-- + ARGUMENT WtatParamArg + RESULT WtatParamRes + ERRORS { invalidServedUserNr | paramNotAvailable | unspecified} + CODE local : 74} +AuthWtmArg ::= SEQUENCE { + wtmUserId WtmUserId, + calcWtatInfo [ 1 ] IMPLICIT CalcWtatInfo OPTIONAL, + dummyExtension DummyExtension OPTIONAL} + +AuthWtmRes ::= SEQUENCE { + autWtmResValue ENUMERATED + {auth-res-correct (0), + auth-res-incorrect (1) }, + dummyExtension DummyExtension OPTIONAL} +WtatParamArg ::= SEQUENCE { + wtmUserId WtmUserId, + canCompute CanCompute OPTIONAL, + authChallenge AuthChallenge OPTIONAL, + dummyExtension DummyExtension OPTIONAL} + -- The presence of element canCompute indicates that the Visitor PINX is able to -- + -- compute a challenge and the expected response from session key information -- +WtatParamRes ::= SEQUENCE {wtatParamInfo WtatParamInfo, + dummyExtension DummyExtension OPTIONAL} +-- The following two operations shall apply to SS-WTAN -- +getWtanParam OPERATION ::= { -- from Visitor PINX to Home PINX -- + ARGUMENT WtanParamArg + RESULT WtanParamRes + ERRORS { invalidServedUserNr | notAuthorized | + paramNotAvailable | temporarilyUnavailable | unspecified} + CODE local : 75} +wtanParamEnq OPERATION ::= { -- from Home PINX to Authentication Server PINX-- + ARGUMENT WtanParamArg + RESULT WtanParamRes + ERRORS { invalidServedUserNr | paramNotAvailable | unspecified} + CODE local : 76} +WtanParamArg ::= SEQUENCE { wtmUserId WtmUserId, + authChallenge AuthChallenge, + authAlgorithm AuthAlgorithm, + canCompute CanCompute OPTIONAL, + dummyExtension DummyExtension OPTIONAL} + -- The presence of element canCompute indicates that the Visitor PINX is able to -- + -- compute the response from session key information -- +WtmUserId ::= CHOICE { pisnNumber PartyNumber, + -- The PISN number of the WTM user, + -- always a Complete Number. + alternativeId AlternativeId } +AlternativeId ::= OCTET STRING(SIZE(1..20)) +WtanParamRes ::= SEQUENCE {wtanParamInfo WtanParamInfo, + dummyExtension DummyExtension OPTIONAL} + +-- The following unconfirmed operation shall apply when interaction between SS-WTAT and ANF-WTINFO -- +transferAuthParam OPERATION ::= { -- from Home PINX to Visitor PINX -- + ARGUMENT SEQUENCE { + wtatParamInfo WtatParamInfo, + dummyExtension DummyExtension OPTIONAL} + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local : 77} +WtatParamInfo ::= SEQUENCE {authAlgorithm AuthAlgorithm, + wtatParamInfoChoice CHOICE { + authSessionKeyInfo [ 1 ] IMPLICIT AuthSessionKeyInfo, + calcWtatInfo [ 2 ] IMPLICIT CalcWtatInfo, + authKey [ 3 ] IMPLICIT AuthKey, + challLen [ 4 ] IMPLICIT INTEGER(1..8) } } +AuthKey ::= OCTET STRING (SIZE(1..16)) -- Authentication key -- +WtanParamInfo ::= CHOICE {authSessionKeyInfo [ 1 ] IMPLICIT AuthSessionKeyInfo, + calcWtanInfo [ 2 ] IMPLICIT CalcWtanInfo} +AuthSessionKeyInfo ::= SEQUENCE {authSessionKey AuthSessionKey, + calculationParam CalculationParam} +CalcWtatInfo ::= SEQUENCE SIZE(1..5) OF CalcWtatInfoUnit +CalcWtatInfoUnit ::= SEQUENCE {authChallenge AuthChallenge, + authResponse AuthResponse, + derivedCipherKey [1] IMPLICIT DerivedCipherKey OPTIONAL, + calculationParam [2] IMPLICIT CalculationParam OPTIONAL} + -- included if required by the authentication algorithm in use -- +CalcWtanInfo ::= SEQUENCE {authResponse AuthResponse, + calculationParam CalculationParam OPTIONAL} + -- included if required by the authentication algorithm in use -- +DummyExtension ::= CHOICE {extension [5] IMPLICIT Extension{{WTMAuthExtSet}}, + sequOfExtn [6] IMPLICIT SEQUENCE OF + Extension{{WTMAuthExtSet}} } +AUTH-ALG ::= CLASS { + &id DefinedIDs UNIQUE, + &Type OPTIONAL + } +DefinedIDs ::= INTEGER { ct2 (0), dect (1), gsm (2), pci (3), pwt (4), us-gsm (5), phs (6), tetra (7) } (0..255) +AuthAlgSet AUTH-ALG ::= {...} +AuthAlgorithm ::= SEQUENCE { + authAlg AUTH-ALG.&id({AuthAlgSet}), + param AUTH-ALG.&Type({AuthAlgSet}{@.authAlg}) OPTIONAL + } +AuthChallenge ::= OCTET STRING (SIZE(1..8)) -- Randomly generated parameter -- + +AuthResponse ::= OCTET STRING (SIZE(1..4)) -- WTAT: Expected response value -- + -- WTAN: Response value from network -- +AuthSessionKey ::= OCTET STRING (SIZE(1..16)) -- Authentication session key-- +CalculationParam ::= OCTET STRING (SIZE(1..8)) -- Parameter used when calculating -- + -- the authentication session key from -- + -- the real authentication key. It may be -- + -- transferred to the WTM user during -- + -- both WTAT and WTAN. -- +CanCompute ::= NULL -- indicates capability of computing -- + -- challenge and/or response value -- +DerivedCipherKey ::= OCTET STRING (SIZE(1..8)) -- derived cipher key may be computed -- + -- when computing challenge and -- + -- expected response values-- +WTMAuthExtSet EXTENSION ::= {...} +notAuthorized ERROR ::= {CODE local : 1007 } +paramNotAvailable ERROR ::= {CODE local : 1017 } +temporarilyUnavailable ERROR ::= {CODE local : 1000 } +unspecified ERROR ::={ + PARAMETER Extension{{WTMAuthExtSet}} + CODE local : 1008} +END -- of WTM-Authentication-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-WTMCH.asn b/epan/dissectors/asn1/qsig/QSIG-WTMCH.asn new file mode 100644 index 00000000..efb8e09e --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-WTMCH.asn @@ -0,0 +1,138 @@ +-- QSIG-WTMCH.asn +-- +-- Taken from Ecma International +-- Standard ECMA-304, 2nd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-304.htm +-- + +Wireless-Terminal-Call-Handling-Operations-asn1-97 + { iso (1) standard (0) pss1-wtm-call-handling (15431) operations-asn1-97 (1)} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + { joint-iso-itu-t remote-operations (4) informationObjects(5) version1(0)} + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + { iso (1) standard (0) + pss1-generic-procedures (11582) msi-class-asn1-97 (11) } + PSS1InformationElement FROM PSS1-generic-parameters-definition-asn1-97 + { iso (1) standard (0) + pss1-generic-procedures (11582) pss1-generic-parameters-asn1-97 (17) } + Name FROM Name-Operations-asn1-97 + { iso (1) standard (0) + pss1-name (13868) name-operations-asn1-97 (1) } + basicServiceNotProvided, invalidServedUserNr, notAvailable FROM + General-Error-List + { ccitt (0) recommendation (0) q 950 general-error-list (1) } + Address, PartyNumber, PartySubaddress, PresentedNumberScreened FROM + Addressing-Data-Elements-asn1-97 + { iso (1) standard (0) pss1-generic-procedures (11582) + addressing-data-elements-asn1-97 (20) }; + +-- Operations for ANF-WTMI: -- + +WTMCH-Operations OPERATION ::= {wtmiEnquiry | wtmiDivert | wtmiInform| wtmoCall} + +wtmiEnquiry OPERATION ::= { + -- Sent from the WTMI-detect PINX to the Home PINX. + ARGUMENT EnquiryArg + RESULT EnquiryRes + ERRORS { invalidServedUserNr | locationNotKnown | + notAvailable | basicServiceNotProvided | unspecified } + CODE local: 54} + +wtmiDivert OPERATION ::= { + -- Sent from the WTMI-detect PINX to the Rerouteing PINX. + ARGUMENT DivertArg + RESULT DummyRes + ERRORS { notAvailable | unspecified } + CODE local: 55} +wtmiInform OPERATION ::= { + -- Sent from the Rerouteing PINX to the Visitor PINX. + ARGUMENT InformArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 56} + +EnquiryArg ::= SEQUENCE { pisnNumber PartyNumber, + -- The PISN number of the WTMI user + qSIGInfoElement PSS1InformationElement, + -- The basic call information elements Bearer capability, High layer compatibility, + -- Low layer compatibility can be embedded in the qSIGInfoElement + -- in accordance with clause 6.5.2.1. + argExtension WtmiExtension OPTIONAL } +DivertArg ::= SEQUENCE { visitPINX PartyNumber, + -- The PISN number of the Visitor PINX, + -- always a Complete Number. + callingNumber PresentedNumberScreened, + wtmIdentity WtmIdentity, + -- The PISN number (always a Complete Number) + -- and/or an alternative identifier of the WTMI user. + qSIGInfoElement PSS1InformationElement, + -- The basic call information elements Bearer capability, High layer compatibility, + -- Low layer compatibility, and Progress indicator + -- can be embedded in the qSIGInfoElement in accordance with clause 6.5.2.1. + callingUserSub [ 1 ] PartySubaddress OPTIONAL, + callingName [ 2 ] Name OPTIONAL, + wtmUserSub [ 3 ] PartySubaddress OPTIONAL, + argExtension WtmiExtension OPTIONAL } +InformArg ::= SEQUENCE { wtmIdentity WtmIdentity, + -- The PISN number (always a Complete Number) + -- and/or an alternative identifier of the WTMI user. + argExtension WtmiExtension OPTIONAL } +EnquiryRes ::= CHOICE { currLocation [ 1 ] IMPLICIT CurrLocation, + cfuActivated [ 2 ] IMPLICIT CfuActivated } +CurrLocation ::= SEQUENCE { visitPINX PartyNumber, + -- The PISN number of the Visitor PINX, + -- always a Complete Number. + wtmIdentity WtmIdentity, + -- The PISN number (always a Complete Number) + -- and/or an alternative identifier of the WTMI user + argExtension WtmiExtension OPTIONAL } + +CfuActivated ::= SEQUENCE { divToAddress Address, + divOptions SubscriptionOption, + wtmName [ 1 ] Name OPTIONAL, + argExtension WtmiExtension OPTIONAL } +SubscriptionOption ::= ENUMERATED { noNotification (0), + notificationWithoutDivertedToNr (1), + notificationWithDivertedToNr (2) } +DummyRes ::= CHOICE { null NULL, + extension [ 1 ] IMPLICIT Extension{{WTMCHExtSet}}, + sequOfExtn [ 2 ] IMPLICIT SEQUENCE OF + Extension{{WTMCHExtSet}} } +WtmiExtension ::= CHOICE { extension [ 4 ] IMPLICIT Extension{{WTMCHExtSet}}, + sequOfExtn [ 5 ] IMPLICIT SEQUENCE OF + Extension{{WTMCHExtSet}} } +WtmIdentity ::= CHOICE { pisnNumber PartyNumber, + alternativeId [ 10 ] IMPLICIT AlternativeId, + both [ 11 ] IMPLICIT SEQUENCE + { pisnNumber PartyNumber, + alternativeId AlternativeId } } +AlternativeId ::= OCTET STRING(SIZE(1..20)) + +-- Operation for ANF-WTMO -- +wtmoCall OPERATION ::= { + ARGUMENT WtmoArg + RETURN RESULT FALSE + ALWAYS RESPONDS FALSE + CODE local: 71} +WtmoArg ::= SEQUENCE { + destinationNumber [0] PartyNumber OPTIONAL, + sendingComplete [1] IMPLICIT NULL OPTIONAL, + extension CHOICE + {single [2] IMPLICIT Extension{{WTMCHExtSet}}, + multiple [3] IMPLICIT SEQUENCE OF + Extension{{WTMCHExtSet}} + } OPTIONAL + } + +WTMCHExtSet EXTENSION ::= {...} + +unspecified ERROR ::= { + PARAMETER Extension{{WTMCHExtSet}} + CODE local: 1008} +locationNotKnown ERROR ::= { CODE local: 1015} + +END -- of Wireless-Terminal-Call-Handling-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/QSIG-WTMLR.asn b/epan/dissectors/asn1/qsig/QSIG-WTMLR.asn new file mode 100644 index 00000000..509a2b5d --- /dev/null +++ b/epan/dissectors/asn1/qsig/QSIG-WTMLR.asn @@ -0,0 +1,122 @@ +-- QSIG-WTMLT.asn +-- +-- Taken from Ecma International +-- Standard ECMA-302, 2nd edition (December 2001) +-- http://www.ecma-international.org/publications/standards/Ecma-302.htm +-- + +WTM-Location-Registration-Operations-asn1-97 + {iso standard pss1-location-registration (15429) wtlr-operations-asn1-97 (1)} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN +IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects + {joint-iso-itu-t remote-operations(4) informationObjects(5) version1(0)} + EXTENSION, Extension{} FROM Manufacturer-specific-service-extension-class-asn1-97 + {iso standard + pss1-generic-procedures (11582) msi-class-asn1-97(11)} + notAvailable, invalidServedUserNr + FROM General-Error-List + {ccitt recommendation q 950 general-error-list (1)} + PartyNumber FROM Addressing-Data-Elements-asn1-97 + {iso(1) standard(0) pss1-generic-procedures(11582) + addressing-data-elements-asn1-97(20)} + BasicService FROM Call-Diversion-Operations-asn1-97 + { iso (1) standard (0) pss1-call-diversion (13873) + call-diversion-operations-asn1-97 (1) }; +WTMLR-Operations OPERATION ::= {locUpdate | locDelete | locDeReg | pisnEnquiry | getRRCInf | locInfoCheck} + +locUpdate OPERATION ::={ + -- Sent from the Visitor PINX to the Home PINX. + ARGUMENT LocUpdArg + RESULT DummyRes + ERRORS { invalidServedUserNr | notAuthorized | unspecified } + CODE local: 50} + +locDelete OPERATION ::= { + -- Sent from the Home PINX to the previous Visitor PINX. + ARGUMENT LocDelArg + RESULT DummyRes + ERRORS { temporarilyUnavailable | unspecified } + CODE local: 51} +locDeReg OPERATION ::= { + -- Sent from the Visitor PINX to the Home PINX. + ARGUMENT LocDeRegArg + RESULT DummyRes + ERRORS { notAvailable | unspecified } + CODE local: 52} +pisnEnquiry OPERATION ::= { + -- Sent from the Visitor PINX to the previous Visitor PINX or a Directory PINX. + ARGUMENT PisnEnqArg + RESULT PisnEnqRes + ERRORS { invalidServedUserNr | unspecified} + CODE local: 53} +getRRCInf OPERATION ::= { + -- Sent from the Visitor PINX to the Home PINX. + ARGUMENT GetRRCInfArg + RESULT GetRRCInfRes + ERRORS { notAvailable | unspecified } + CODE local: 97} +locInfoCheck OPERATION ::= { + -- Sent from the Visitor PINX to the Home PINX or vice versa. + ARGUMENT LocInfoCheckArg + RESULT LocInfoCheckRes + ERRORS { notAvailable | unspecified } + CODE local: 98} +LocUpdArg ::= SEQUENCE { wtmUserId WtmUserId, + basicService BasicService DEFAULT allServices, + visitPINX PartyNumber, + -- The pisnNumber of the Visitor PINX, + -- always a Complete Number. + argExtension LrExtension OPTIONAL } +DummyRes ::= CHOICE { null NULL, + extension [ 1 ] IMPLICIT Extension{{WTMLRExtSet}}, + sequOfExtn [ 2 ] IMPLICIT SEQUENCE OF + Extension{{WTMLRExtSet}} } +LocDelArg ::= SEQUENCE { wtmUserId WtmUserId, + basicService BasicService DEFAULT allServices, + argExtension LrExtension OPTIONAL } +LocDeRegArg ::= SEQUENCE { wtmUserId WtmUserId, + basicService BasicService DEFAULT allServices, + argExtension LrExtension OPTIONAL } + +PisnEnqArg ::= SEQUENCE { alternativeId AlternativeId, + -- Can be a temporary identifier, e.g. Network Assigned + -- Identity structure, or a fixed handset identifier. + argExtension LrExtension OPTIONAL } +PisnEnqRes ::= SEQUENCE { wtmUserId WtmUserId, + resExtension LrExtension OPTIONAL } +GetRRCInfArg ::= SEQUENCE { wtmUserId WtmUserId, + basicService BasicService DEFAULT allServices, + argExtension LrExtension OPTIONAL } +GetRRCInfRes ::= SEQUENCE { alternativeId AlternativeId OPTIONAL, + rrClass RRClass OPTIONAL, + argExtension LrExtension OPTIONAL } +LocInfoCheckArg ::= SEQUENCE { wtmUserId WtmUserId, + basicService BasicService DEFAULT allServices, + visitPINX PartyNumber, + -- The PISN number of the Visitor PINX, + -- always a Complete Number. + argExtension LrExtension OPTIONAL } +LocInfoCheckRes ::= SEQUENCE { checkResult CheckResult, + argExtension LrExtension OPTIONAL } +WtmUserId ::= CHOICE { pisnNumber PartyNumber, + -- The PISN number of the WTM user, + -- always a Complete Number. + alternativeId AlternativeId } +AlternativeId ::= OCTET STRING(SIZE(1..20)) +LrExtension ::= CHOICE { extension [ 1 ] IMPLICIT Extension{{WTMLRExtSet}}, + sequOfExtn [ 2 ] IMPLICIT SEQUENCE OF + Extension{{WTMLRExtSet}} } +RRClass ::= INTEGER (0..99) +CheckResult ::= ENUMERATED { locInfChk-correct (0), + locInfChk-incorrect (1) } +WTMLRExtSet EXTENSION ::= {...} +notAuthorized ERROR ::= {CODE local: 1007} +temporarilyUnavailable ERROR ::= {CODE local: 1000} + +unspecified ERROR ::= { + PARAMETER Extension{{WTMLRExtSet}} + CODE local: 1008} +END -- of WTM-Location-Registration-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/SYNC-SIG.asn b/epan/dissectors/asn1/qsig/SYNC-SIG.asn new file mode 100644 index 00000000..d0f5f4d9 --- /dev/null +++ b/epan/dissectors/asn1/qsig/SYNC-SIG.asn @@ -0,0 +1,72 @@ +-- SYNC-SIG.asn +-- +-- Taken from Ecma International +-- Standard ECMA-245, 2nd Edition - September 1997 +-- http://www.ecma-international.org/publications/standards/Ecma-245.htm +-- +-- updated from macro notation to information object notation +-- + +Synchronization-Operations-asn1-97 + { iso (1) standard (0) pinx-clock-synchronization (15507) synchronization-operations-asn1-97 (1) } + +DEFINITIONS EXPLICIT TAGS::= + +BEGIN + +IMPORTS OPERATION, ERROR FROM + Remote-Operations-Information-Objects + {joint-iso-itu-t remote-operations (4) informationObjects (5) + version1 (0)} + + EXTENSION, Extension{} FROM + Manufacturer-specific-service-extension-class-asn1-97 + {iso standard pss1-generic-procedures (11582) + msi-class-asn1-97 (11)} ; + +-- The following two operations shall apply to SYNC-SIG + +Synchronization-Operations OPERATION ::= { synchronizationRequest | synchronizationInfo } + +synchronizationRequest OPERATION ::= { + ARGUMENT SynchronizationReqArg + RESULT SynchronizationReqRes + ERRORS {unspecified} + CODE local:78 +} + +synchronizationInfo OPERATION ::= { + ARGUMENT SynchronizationInfoArg + CODE local:79 +} + +SynchronizationReqArg ::= SEQUENCE { + action Action, + argExtension ArgExtension OPTIONAL +} + +SynchronizationReqRes ::= SEQUENCE { + action Action, + response BOOLEAN, -- TRUE = yes, FALSE = no + argExtension ArgExtension OPTIONAL +} + +SynchronizationInfoArg ::= SEQUENCE { + stateinfo INTEGER { freerunning (0), idle (1)}, + argExtension ArgExtension OPTIONAL +} + +Action ::= INTEGER { enslavement(0), holdon (1)} + +ArgExtension::= CHOICE{ + extension [1] IMPLICIT Extension{{SYNCExtSet}}, + sequOfExtn [2] IMPLICIT SEQUENCE OF Extension{{SYNCExtSet}} +} + +unspecified ERROR ::= { + PARAMETER Extension{{SYNCExtSet}} + CODE local:1008} + +SYNCExtSet EXTENSION ::= {...} + +END -- of Synchronization-Operations-asn1-97 diff --git a/epan/dissectors/asn1/qsig/packet-qsig-template.c b/epan/dissectors/asn1/qsig/packet-qsig-template.c new file mode 100644 index 00000000..b7d3fb4a --- /dev/null +++ b/epan/dissectors/asn1/qsig/packet-qsig-template.c @@ -0,0 +1,714 @@ +/* packet-qsig.c + * Routines for QSIG packet dissection + * 2007 Tomas Kukosa + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "config.h" + +#include <epan/packet.h> +#include <epan/expert.h> +#include <epan/strutil.h> +#include <epan/asn1.h> +#include <wsutil/strtoi.h> + +#include "packet-ber.h" +#include "packet-qsig.h" + +#define PNAME "QSIG" +#define PSNAME "QSIG" +#define PFNAME "qsig" + +/* Shifted codeset values */ +#define CS0 0x000 +#define CS1 0x100 +#define CS2 0x200 +#define CS3 0x300 +#define CS4 0x400 +#define CS5 0x500 +#define CS6 0x600 +#define CS7 0x700 + +#define QSIG_IE_TRANSIT_COUNTER 0x31 +#define QSIG_IE_PARTY_CATEGORY 0x32 + +void proto_register_qsig(void); +void proto_reg_handoff_qsig(void); + +static dissector_handle_t qsig_arg_handle; +static dissector_handle_t qsig_res_handle; +static dissector_handle_t qsig_err_handle; +static dissector_handle_t qsig_ie4_handle; +static dissector_handle_t qsig_ie5_handle; + +static const value_string qsig_str_ie_type_cs4[] = { + { QSIG_IE_TRANSIT_COUNTER , "Transit counter" }, + { 0, NULL} +}; +static const value_string qsig_str_ie_type_cs5[] = { + { QSIG_IE_PARTY_CATEGORY , "Party category" }, + { 0, NULL} +}; +/* Codeset array */ +static const value_string *qsig_str_ie_type[] = { + NULL, + NULL, + NULL, + NULL, + qsig_str_ie_type_cs4, + qsig_str_ie_type_cs5, + NULL, + NULL, +}; + + +static const value_string qsig_str_pc[] = { + { 0x00 , "unknown" }, + { 0x01 , "extension" }, + { 0x02 , "operator" }, + { 0x03 , "emergency extension" }, + { 0, NULL} +}; + +static const value_string qsig_str_service[] = { + { 13868, "QSIG-NA" }, + { 13873, "QSIG-CF" }, + { 13874, "QSIG-PR" }, + { 13869, "QSIG-CT" }, + { 13870, "QSIG-CC" }, + { 14843, "QSIG-CO" }, + { 14844, "QSIG-DND(O)" }, + { 14846, "QSIG-CI" }, + { 15050, "QSIG-AOC" }, + { 15052, "QSIG-RE" }, + { 15054, "QSIG-CINT" }, + { 15506, "QSIG-MWI" }, + { 15507, "SYNC-SIG" }, + { 15772, "QSIG-CMN" }, + { 15992, "QSIG-CPI(P)" }, + { 17876, "QSIG-PUMR" }, + { 17878, "QSIG-PUMCH" }, + { 19460, "QSIG-SSCT" }, + { 15429, "QSIG-WTMLR" }, + { 15431, "QSIG-WTMCH" }, + { 15433, "QSIG-WTMAU" }, + { 21407, "QSIG-SD" }, + { 21889, "QSIG-CIDL" }, + { 325, "QSIG-SMS" }, + { 344, "QSIG-MCR" }, + { 3471, "QSIG-MCM" }, + { 3472, "QSIG-MID" }, + { 0, NULL} +}; + +static const value_string qsig_str_service_name[] = { + { 13868, "Name-Operations" }, + { 13873, "Call-Diversion-Operations" }, + { 13874, "Path-Replacement-Operations" }, + { 13869, "Call-Transfer-Operations" }, + { 13870, "SS-CC-Operations" }, + { 14843, "Call-Offer-Operations" }, + { 14844, "Do-Not-Disturb-Operations" }, + { 14846, "Call-Intrusion-Operations" }, + { 15050, "SS-AOC-Operation" }, + { 15052, "Recall-Operation" }, + { 15054, "Call-Interception-Operations" }, + { 15506, "SS-MWI-Operations" }, + { 15507, "Synchronization-Operations" }, + { 15772, "Common-Information-Operations" }, + { 15992, "Call-Interruption-Operation" }, + { 17876, "PUM-Registration-Operation" }, + { 17878, "Private-User-Mobility-Call-Handling-Operations" }, + { 19460, "Single-Step-Call-Transfer-Operations" }, + { 15429, "WTM-Location-Registration-Operations" }, + { 15431, "Wireless-Terminal-Call-Handling-Operations" }, + { 15433, "WTM-Authentication-Operations" }, + { 21407, "SS-SD-Operations" }, + { 21889, "Call-Identification-and-Call-Linkage-Operations" }, + { 325, "Short-Message-Service-Operations" }, + { 344, "SS-MCR-Operations" }, + { 3471, "SS-MCM-Operations" }, + { 3472, "SS-MID-Operations" }, + { 0, NULL} +}; + +#define NO_SRV (-1) +static const gint32 op2srv_tab[] = { + /* 0 */ 13868, + /* 1 */ 13868, + /* 2 */ 13868, + /* 3 */ 13868, + /* 4 */ 13874, + /* 5 */ 13874, + /* 6 */ 13874, + /* 7 */ 13869, + /* 8 */ 13869, + /* 9 */ 13869, + /* 10 */ 13869, + /* 11 */ 13869, + /* 12 */ 13869, + /* 13 */ 13869, + /* 14 */ 13869, + /* 15 */ 13873, + /* 16 */ 13873, + /* 17 */ 13873, + /* 18 */ 13873, + /* 19 */ 13873, + /* 20 */ 13873, + /* 21 */ 13873, + /* 22 */ 13873, + /* 23 */ 13873, + /* 24 */ NO_SRV, + /* 25 */ NO_SRV, + /* 26 */ NO_SRV, + /* 27 */ 13870, + /* 28 */ 13870, + /* 29 */ 13870, + /* 30 */ 13870, + /* 31 */ 13870, + /* 32 */ 13870, + /* 33 */ 13870, + /* 34 */ 14843, + /* 35 */ 14844, + /* 36 */ 14844, + /* 37 */ 14844, + /* 38 */ 14844, + /* 39 */ 14844, + /* 40 */ 13870, + /* 41 */ 90001, + /* 42 */ 90001, + /* 43 */ 14846, + /* 44 */ 14846, + /* 45 */ 14846, + /* 46 */ 14846, + /* 47 */ 14846, + /* 48 */ 14846, + /* 49 */ 90001, + /* 50 */ 15429, + /* 51 */ 15429, + /* 52 */ 15429, + /* 53 */ 15429, + /* 54 */ 15431, + /* 55 */ 15431, + /* 56 */ 15431, + /* 57 */ 15052, + /* 58 */ 15052, + /* 59 */ 15050, + /* 60 */ 15050, + /* 61 */ 15050, + /* 62 */ 15050, + /* 63 */ 15050, + /* 64 */ 15050, + /* 65 */ 15050, + /* 66 */ 15054, + /* 67 */ 15054, + /* 68 */ 15054, + /* 69 */ 15054, + /* 70 */ 15054, + /* 71 */ 15431, + /* 72 */ 15433, + /* 73 */ 15433, + /* 74 */ 15433, + /* 75 */ 15433, + /* 76 */ 15433, + /* 77 */ 15433, + /* 78 */ 15507, + /* 79 */ 15507, + /* 80 */ 3471, + /* 81 */ 3471, + /* 82 */ 3471, + /* 83 */ NO_SRV, + /* 84 */ 15772, + /* 85 */ 15772, + /* 86 */ 13874, + /* 87 */ 15992, + /* 88 */ 15992, + /* 89 */ 17876, + /* 90 */ 17876, + /* 91 */ 17876, + /* 92 */ 17876, + /* 93 */ 17878, + /* 94 */ 17878, + /* 95 */ 17878, + /* 96 */ 17878, + /* 97 */ 15429, + /* 98 */ 15429, + /* 99 */ 19460, + /* 100 */ 19460, + /* 101 */ 19460, + /* 102 */ 19460, + /* 103 */ 21407, + /* 104 */ 21407, + /* 105 */ 21889, + /* 106 */ 21889, + /* 107 */ 325, + /* 108 */ 325, + /* 109 */ 325, + /* 110 */ 325, + /* 111 */ 325, + /* 112 */ 344, + /* 113 */ 344, + /* 114 */ 344, + /* 115 */ 3471, + /* 116 */ 3471, + /* 117 */ 3471, + /* 118 */ 3471, + /* 119 */ 3472, + /* 120 */ 3472, +}; + +static const value_string qsig_str_operation[] = { +#include "packet-qsig-table10.c" + { 0, NULL} +}; + +static const value_string qsig_str_error[] = { +#include "packet-qsig-table20.c" + { 0, NULL} +}; + +/* Initialize the protocol and registered fields */ +static int proto_qsig = -1; +static int hf_qsig_operation = -1; +static int hf_qsig_service = -1; +static int hf_qsig_error = -1; +static int hf_qsig_ie_type = -1; +static int hf_qsig_ie_type_cs4 = -1; +static int hf_qsig_ie_type_cs5 = -1; +static int hf_qsig_ie_len = -1; +static int hf_qsig_ie_data = -1; +static int hf_qsig_tc = -1; +static int hf_qsig_pc = -1; +#include "packet-qsig-hf.c" + +static int *hf_qsig_ie_type_arr[] = { + NULL, + NULL, + NULL, + NULL, + &hf_qsig_ie_type_cs4, + &hf_qsig_ie_type_cs5, + NULL, + NULL, +}; + +/* Initialize the subtree pointers */ +static gint ett_qsig = -1; +static gint ett_qsig_ie = -1; +static gint ett_qsig_unknown_extension = -1; +#include "packet-qsig-ett.c" +static gint ett_cnq_PSS1InformationElement = -1; + +/* static expert_field ei_qsig_unsupported_arg_type = EI_INIT; */ +static expert_field ei_qsig_unsupported_result_type = EI_INIT; +static expert_field ei_qsig_unsupported_error_type = EI_INIT; + +/* Preferences */ + +/* Subdissectors */ +static dissector_handle_t q931_ie_handle = NULL; + +/* Global variables */ +static const char *extension_oid = NULL; + +/* Dissector tables */ +static dissector_table_t extension_dissector_table; + +#include "packet-qsig-fn.c" + +typedef struct _qsig_op_t { + gint32 opcode; + dissector_t arg_pdu; + dissector_t res_pdu; +} qsig_op_t; + +static const qsig_op_t qsig_op_tab[] = { +#include "packet-qsig-table11.c" +}; + +typedef struct _qsig_err_t { + gint32 errcode; + dissector_t err_pdu; +} qsig_err_t; + +static const qsig_err_t qsig_err_tab[] = { +#include "packet-qsig-table21.c" +}; + +static const qsig_op_t *get_op(gint32 opcode) { + int i; + + /* search from the end to get the last occurrence if the operation is redefined in some newer specification */ + for (i = array_length(qsig_op_tab) - 1; i >= 0; i--) + if (qsig_op_tab[i].opcode == opcode) + return &qsig_op_tab[i]; + return NULL; +} + +static gint32 get_service(gint32 opcode) { + if ((opcode < 0) || (opcode >= (int)array_length(op2srv_tab))) + return NO_SRV; + return op2srv_tab[opcode]; +} + +static const qsig_err_t *get_err(gint32 errcode) { + int i; + + /* search from the end to get the last occurrence if the operation is redefined in some newer specification */ + for (i = array_length(qsig_err_tab) - 1; i >= 0; i--) + if (qsig_err_tab[i].errcode == errcode) + return &qsig_err_tab[i]; + return NULL; +} + +/*--- dissect_qsig_arg ------------------------------------------------------*/ +static int +dissect_qsig_arg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { + int offset = 0; + rose_ctx_t *rctx; + gint32 opcode = 0, service, oid_num; + const qsig_op_t *op_ptr = NULL; + const gchar *p, *oid; + proto_item *ti, *ti_tmp; + proto_tree *qsig_tree; + + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + rctx = get_rose_ctx(data); + DISSECTOR_ASSERT(rctx); + + if (rctx->d.pdu != 1) /* invoke */ + return offset; + if (rctx->d.code == 0) { /* local */ + opcode = rctx->d.code_local; + op_ptr = get_op(opcode); + } else if (rctx->d.code == 1) { /* global */ + oid = g_strrstr(rctx->d.code_global, "."); + if (oid != NULL) { + if (ws_strtou32(oid+1, NULL, &oid_num)) + op_ptr = get_op(oid_num); + } + if (op_ptr) + opcode = op_ptr->opcode; + } else { + return offset; + } + if (!op_ptr) + return offset; + service = get_service(opcode); + + ti = proto_tree_add_item(tree, proto_qsig, tvb, offset, tvb_captured_length(tvb), ENC_NA); + qsig_tree = proto_item_add_subtree(ti, ett_qsig); + + proto_tree_add_uint(qsig_tree, hf_qsig_operation, tvb, 0, 0, opcode); + p = try_val_to_str(opcode, VALS(qsig_str_operation)); + if (p) { + proto_item_append_text(ti, ": %s", p); + proto_item_append_text(rctx->d.code_item, " - %s", p); + if (rctx->apdu_depth >= 0) + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), rctx->apdu_depth), " %s", p); + } + + ti_tmp = proto_tree_add_uint(qsig_tree, hf_qsig_service, tvb, 0, 0, service); + p = try_val_to_str(service, VALS(qsig_str_service_name)); + if (p) proto_item_append_text(ti_tmp, " - %s", p); + + if (op_ptr->arg_pdu) + offset = op_ptr->arg_pdu(tvb, pinfo, qsig_tree, NULL); + else + if (tvb_reported_length_remaining(tvb, offset) > 0) { + proto_tree_add_expert(tree, pinfo, &ei_qsig_unsupported_error_type, tvb, offset, -1); + offset += tvb_captured_length_remaining(tvb, offset); + } + + return offset; +} + +/*--- dissect_qsig_res -------------------------------------------------------*/ +static int +dissect_qsig_res(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { + gint offset = 0; + rose_ctx_t *rctx; + gint32 opcode, service; + const qsig_op_t *op_ptr; + const gchar *p; + proto_item *ti, *ti_tmp; + proto_tree *qsig_tree; + + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + rctx = get_rose_ctx(data); + DISSECTOR_ASSERT(rctx); + + if (rctx->d.pdu != 2) /* returnResult */ + return offset; + if (rctx->d.code != 0) /* local */ + return offset; + opcode = rctx->d.code_local; + op_ptr = get_op(opcode); + if (!op_ptr) + return offset; + service = get_service(opcode); + + ti = proto_tree_add_item(tree, proto_qsig, tvb, offset, tvb_captured_length(tvb), ENC_NA); + qsig_tree = proto_item_add_subtree(ti, ett_qsig); + + proto_tree_add_uint(qsig_tree, hf_qsig_operation, tvb, 0, 0, opcode); + p = try_val_to_str(opcode, VALS(qsig_str_operation)); + if (p) { + proto_item_append_text(ti, ": %s", p); + proto_item_append_text(rctx->d.code_item, " - %s", p); + if (rctx->apdu_depth >= 0) + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), rctx->apdu_depth), " %s", p); + } + + ti_tmp = proto_tree_add_uint(qsig_tree, hf_qsig_service, tvb, 0, 0, service); + p = try_val_to_str(service, VALS(qsig_str_service_name)); + if (p) proto_item_append_text(ti_tmp, " - %s", p); + + if (op_ptr->res_pdu) + offset = op_ptr->res_pdu(tvb, pinfo, qsig_tree, NULL); + else + if (tvb_reported_length_remaining(tvb, offset) > 0) { + proto_tree_add_expert(tree, pinfo, &ei_qsig_unsupported_result_type, tvb, offset, -1); + offset += tvb_captured_length_remaining(tvb, offset); + } + + return offset; +} + +/*--- dissect_qsig_err ------------------------------------------------------*/ +static int +dissect_qsig_err(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { + int offset = 0; + rose_ctx_t *rctx; + gint32 errcode; + const qsig_err_t *err_ptr; + const gchar *p; + proto_item *ti; + proto_tree *qsig_tree; + + /* Reject the packet if data is NULL */ + if (data == NULL) + return 0; + rctx = get_rose_ctx(data); + DISSECTOR_ASSERT(rctx); + + if (rctx->d.pdu != 3) /* returnError */ + return offset; + if (rctx->d.code != 0) /* local */ + return offset; + errcode = rctx->d.code_local; + err_ptr = get_err(errcode); + if (!err_ptr) + return offset; + + ti = proto_tree_add_item(tree, proto_qsig, tvb, offset, tvb_captured_length(tvb), ENC_NA); + qsig_tree = proto_item_add_subtree(ti, ett_qsig); + + proto_tree_add_uint(qsig_tree, hf_qsig_error, tvb, 0, 0, errcode); + p = try_val_to_str(errcode, VALS(qsig_str_error)); + if (p) { + proto_item_append_text(ti, ": %s", p); + proto_item_append_text(rctx->d.code_item, " - %s", p); + if (rctx->apdu_depth >= 0) + proto_item_append_text(proto_item_get_parent_nth(proto_tree_get_parent(tree), rctx->apdu_depth), " %s", p); + } + + if (err_ptr->err_pdu) + offset = err_ptr->err_pdu(tvb, pinfo, qsig_tree, NULL); + else + if (tvb_reported_length_remaining(tvb, offset) > 0) { + proto_tree_add_expert(tree, pinfo, &ei_qsig_unsupported_error_type, tvb, offset, -1); + offset += tvb_captured_length_remaining(tvb, offset); + } + + return offset; +} + +/*--- dissect_qsig_transit_counter_ie ---------------------------------------*/ +static int +dissect_qsig_transit_counter_ie(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int length _U_) { + proto_tree_add_item(tree, hf_qsig_tc, tvb, offset, 1, ENC_BIG_ENDIAN); + offset++; + return offset; +} +/*--- dissect_qsig_party_category_ie ----------------------------------------*/ +static int +dissect_qsig_party_category_ie(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int length _U_) { + proto_tree_add_item(tree, hf_qsig_pc, tvb, offset, 1, ENC_BIG_ENDIAN); + offset++; + return offset; +} + +/*--- dissect_qsig_ie -------------------------------------------------------*/ +static void +dissect_qsig_ie(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int codeset) { + gint offset; + proto_item *ti, *hidden_item; + proto_tree *ie_tree; + guint8 ie_type, ie_len; + + offset = 0; + + ti = proto_tree_add_item(tree, proto_qsig, tvb, offset, -1, ENC_NA); + proto_item_set_hidden(ti); + + ie_type = tvb_get_guint8(tvb, offset); + ie_len = tvb_get_guint8(tvb, offset + 1); + + ie_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_qsig_ie, NULL, + val_to_str(ie_type, VALS(qsig_str_ie_type[codeset]), "unknown (0x%02X)")); + + proto_tree_add_item(ie_tree, *hf_qsig_ie_type_arr[codeset], tvb, offset, 1, ENC_BIG_ENDIAN); + hidden_item = proto_tree_add_item(ie_tree, hf_qsig_ie_type, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_item_set_hidden(hidden_item); + proto_tree_add_item(ie_tree, hf_qsig_ie_len, tvb, offset + 1, 1, ENC_BIG_ENDIAN); + offset += 2; + if (tvb_reported_length_remaining(tvb, offset) <= 0) + return; + switch ((codeset << 8) | ie_type) { + case CS4 | QSIG_IE_TRANSIT_COUNTER : + dissect_qsig_transit_counter_ie(tvb, offset, pinfo, ie_tree, ie_len); + break; + case CS5 | QSIG_IE_PARTY_CATEGORY : + dissect_qsig_party_category_ie(tvb, offset, pinfo, ie_tree, ie_len); + break; + default: + if (ie_len > 0) { + if (tree) proto_tree_add_item(ie_tree, hf_qsig_ie_data, tvb, offset, ie_len, ENC_NA); + } + } +} +/*--- dissect_qsig_ie_cs4 ---------------------------------------------------*/ +static int +dissect_qsig_ie_cs4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { + dissect_qsig_ie(tvb, pinfo, tree, 4); + return tvb_captured_length(tvb); +} +/*--- dissect_qsig_ie_cs5 ---------------------------------------------------*/ +static int +dissect_qsig_ie_cs5(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { + dissect_qsig_ie(tvb, pinfo, tree, 5); + return tvb_captured_length(tvb); +} + +/*--- proto_register_qsig ---------------------------------------------------*/ +void proto_register_qsig(void) { + + /* List of fields */ + static hf_register_info hf[] = { + { &hf_qsig_operation, { "Operation", "qsig.operation", + FT_UINT8, BASE_DEC, VALS(qsig_str_operation), 0x0, + NULL, HFILL }}, + { &hf_qsig_service, { "Service", "qsig.service", + FT_UINT16, BASE_DEC, VALS(qsig_str_service), 0x0, + "Supplementary Service", HFILL }}, + { &hf_qsig_error, { "Error", "qsig.error", + FT_UINT8, BASE_DEC, VALS(qsig_str_error), 0x0, + NULL, HFILL }}, + { &hf_qsig_ie_type, { "Type", "qsig.ie.type", + FT_UINT8, BASE_HEX, NULL, 0x0, + "Information Element Type", HFILL }}, + { &hf_qsig_ie_type_cs4, { "Type", "qsig.ie.type.cs4", + FT_UINT8, BASE_HEX, VALS(qsig_str_ie_type_cs4), 0x0, + "Information Element Type (Codeset 4)", HFILL }}, + { &hf_qsig_ie_type_cs5, { "Type", "qsig.ie.type.cs5", + FT_UINT8, BASE_HEX, VALS(qsig_str_ie_type_cs5), 0x0, + "Information Element Type (Codeset 5)", HFILL }}, + { &hf_qsig_ie_len, { "Length", "qsig.ie.len", + FT_UINT8, BASE_DEC, NULL, 0x0, + "Information Element Length", HFILL }}, + { &hf_qsig_ie_data, { "Data", "qsig.ie.data", + FT_BYTES, BASE_NONE, NULL, 0x0, + NULL, HFILL }}, + { &hf_qsig_tc, { "Transit count", "qsig.tc", + FT_UINT8, BASE_DEC, NULL, 0x1F, + NULL, HFILL }}, + { &hf_qsig_pc, { "Party category", "qsig.pc", + FT_UINT8, BASE_HEX, VALS(qsig_str_pc), 0x07, + NULL, HFILL }}, +#include "packet-qsig-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_qsig, + &ett_qsig_ie, + &ett_qsig_unknown_extension, +#include "packet-qsig-ettarr.c" + &ett_cnq_PSS1InformationElement, + }; + + static ei_register_info ei[] = { +#if 0 + { &ei_qsig_unsupported_arg_type, { "qsig.unsupported.arg_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ARGUMENT TYPE (QSIG)", EXPFILL }}, +#endif + { &ei_qsig_unsupported_result_type, { "qsig.unsupported.result_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED RESULT TYPE (QSIG)", EXPFILL }}, + { &ei_qsig_unsupported_error_type, { "qsig.unsupported.error_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ERROR TYPE (QSIG)", EXPFILL }}, + }; + + expert_module_t* expert_qsig; + + /* Register protocol and dissector */ + proto_qsig = proto_register_protocol(PNAME, PSNAME, PFNAME); + + /* Register fields and subtrees */ + proto_register_field_array(proto_qsig, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + expert_qsig = expert_register_protocol(proto_qsig); + expert_register_field_array(expert_qsig, ei, array_length(ei)); + + /* Register dissectors */ + qsig_arg_handle = register_dissector(PFNAME "_arg", dissect_qsig_arg, proto_qsig); + qsig_res_handle = register_dissector(PFNAME "_res", dissect_qsig_res, proto_qsig); + qsig_err_handle = register_dissector(PFNAME "_err", dissect_qsig_err, proto_qsig); + qsig_ie4_handle = register_dissector(PFNAME "_ie_cs4", dissect_qsig_ie_cs4, proto_qsig); + qsig_ie5_handle = register_dissector(PFNAME "_ie_cs5", dissect_qsig_ie_cs5, proto_qsig); + + /* Register dissector tables */ + extension_dissector_table = register_dissector_table("qsig.ext", "QSIG Extension", proto_qsig, FT_STRING, STRING_CASE_SENSITIVE); +} + + +/*--- proto_reg_handoff_qsig ------------------------------------------------*/ +void proto_reg_handoff_qsig(void) { + int i; + gchar *oid; + dissector_handle_t q931_handle; + + q931_handle = find_dissector_add_dependency("q931", proto_qsig); + q931_ie_handle = find_dissector_add_dependency("q931.ie", proto_qsig); + + for (i=0; i<(int)array_length(qsig_op_tab); i++) { + dissector_add_uint("q932.ros.local.arg", qsig_op_tab[i].opcode, qsig_arg_handle); + dissector_add_uint("q932.ros.local.res", qsig_op_tab[i].opcode, qsig_res_handle); + + oid = wmem_strdup_printf(NULL, "1.3.12.9.%d", qsig_op_tab[i].opcode); + dissector_add_string("q932.ros.global.arg", oid, qsig_arg_handle); + dissector_add_string("q932.ros.global.res", oid, qsig_res_handle); + wmem_free(NULL, oid); + } + for (i=0; i<(int)array_length(qsig_err_tab); i++) { + dissector_add_uint("q932.ros.local.err", qsig_err_tab[i].errcode, qsig_err_handle); + } + + /* QSIG-TC - Transit counter */ + dissector_add_uint("q931.ie", CS4 | QSIG_IE_TRANSIT_COUNTER, qsig_ie4_handle); + + /* SSIG-BC - Party category */ + dissector_add_uint("q931.ie", CS5 | QSIG_IE_PARTY_CATEGORY, qsig_ie5_handle); + + /* RFC 3204, 3.2 QSIG Media Type */ + dissector_add_string("media_type", "application/qsig", q931_handle); + +} + +/*---------------------------------------------------------------------------*/ diff --git a/epan/dissectors/asn1/qsig/packet-qsig-template.h b/epan/dissectors/asn1/qsig/packet-qsig-template.h new file mode 100644 index 00000000..12c79f27 --- /dev/null +++ b/epan/dissectors/asn1/qsig/packet-qsig-template.h @@ -0,0 +1,18 @@ +/* packet-qsig.h + * Routines for QSIG packet dissection + * 2007 Tomas Kukosa + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef PACKET_QSIG_H +#define PACKET_QSIG_H + +#include "packet-qsig-exp.h" + +#endif /* PACKET_QSIG_H */ + diff --git a/epan/dissectors/asn1/qsig/qsig-gf-ade.asn b/epan/dissectors/asn1/qsig/qsig-gf-ade.asn new file mode 100644 index 00000000..78a3c44c --- /dev/null +++ b/epan/dissectors/asn1/qsig/qsig-gf-ade.asn @@ -0,0 +1,132 @@ +-- QSIG-GF-ADE.asn +-- +-- Taken from Ecma International +-- http://www.ecma-international.org/publications/standards/Ecma-165.htm +-- +-- B.1 Addressing information +-- + +Addressing-Data-Elements-asn1-97 {iso(1) standard(0) + pss1-generic-procedures(11582) addressing-data-elements-asn1-97(20)} +DEFINITIONS EXPLICIT TAGS ::= +BEGIN + +PresentedAddressScreened ::= CHOICE { + presentationAllowedAddressS [0] IMPLICIT AddressScreened, + presentationRestricted [1] IMPLICIT NULL, + numberNotAvailableDueToInterworking [2] IMPLICIT NULL, + presentationRestrictedAddressS [3] IMPLICIT AddressScreened} + +PresentedAddressUnscreened ::= CHOICE { + presentationAllowedAddressU [0] IMPLICIT Address, + presentationRestricted [1] IMPLICIT NULL, + numberNotAvailableDueToInterworking [2] IMPLICIT NULL, + presentationRestrictedAddressU [3] IMPLICIT Address} + +PresentedNumberScreened ::= CHOICE { + presentationAllowedAddressNS [0] IMPLICIT NumberScreened, + presentationRestricted [1] IMPLICIT NULL, + numberNotAvailableDueToInterworking [2] IMPLICIT NULL, + presentationRestrictedAddressNS [3] IMPLICIT NumberScreened} + +PresentedNumberUnscreened ::= CHOICE { + presentationAllowedAddressNU [0] PartyNumber, + presentationRestricted [1] IMPLICIT NULL, + numberNotAvailableDueToInterworking [2] IMPLICIT NULL, + presentationRestrictedAddressNU [3] PartyNumber} + +AddressScreened ::= SEQUENCE { + partyNumber PartyNumber, + screeningIndicator ScreeningIndicator, + partySubaddress PartySubaddress OPTIONAL} + +NumberScreened ::= SEQUENCE { + partyNumber PartyNumber, + screeningIndicator ScreeningIndicator} + +Address ::= SEQUENCE { + partyNumber PartyNumber, + partySubaddress PartySubaddress OPTIONAL} + +PartyNumber ::= CHOICE { + unknownPartyNumber [0] IMPLICIT NumberDigits, + -- the numbering plan is the default numbering + -- plan of the network. It is recommanded that + -- this value is used. + publicPartyNumber [1] IMPLICIT PublicPartyNumber, + -- the numbering plan is according to + -- Recommendation E.163 and E.164. + dataPartyNumber [3] IMPLICIT NumberDigits, + -- not used, value reserved. + telexPartyNumber [4] IMPLICIT NumberDigits, + -- not used, value reserved. + privatePartyNumber [5] IMPLICIT PrivatePartyNumber, + nationalStandardPartyNumber [8] IMPLICIT NumberDigits} + +-- not used, value reserved. +PublicPartyNumber ::= SEQUENCE { + publicTypeOfNumber PublicTypeOfNumber, + publicNumberDigits NumberDigits} + +PrivatePartyNumber ::= SEQUENCE { + privateTypeOfNumber PrivateTypeOfNumber, + privateNumberDigits NumberDigits} + +NumberDigits ::= NumericString(SIZE (1..20)) + +PublicTypeOfNumber ::= ENUMERATED { + unknown(0), + -- if used number digits carry prefix indicating type + -- of number according to national recommendations. + internationalNumber(1), nationalNumber(2), + networkSpecificNumber(3), + -- not used, value reserved + subscriberNumber(4), abbreviatedNumber(6)} + +-- valid only for called party number at the outgoing +-- access, network substitutes appropriate number. +PrivateTypeOfNumber ::= ENUMERATED { + unknown(0), level2RegionalNumber(1), level1RegionalNumber(2), + pISNSpecificNumber(3), localNumber(4), abbreviatedNumber(6)} + +PartySubaddress ::= CHOICE { + userSpecifiedSubaddress UserSpecifiedSubaddress, + -- not recommended. + nSAPSubaddress NSAPSubaddress} + +-- according to Recommendation X.213. +UserSpecifiedSubaddress ::= SEQUENCE { + subaddressInformation SubaddressInformation, + oddCountIndicator BOOLEAN OPTIONAL} + +-- used when the coding of subaddress is BCD +NSAPSubaddress ::= OCTET STRING(SIZE (1..20)) + +-- specified according to X.213. Some networks may +-- limit the subaddress value to some other length +-- e.g. 4 octets +SubaddressInformation ::= OCTET STRING(SIZE (1..20)) + +-- coded according to user requirements. Some networks +-- may limit the subaddress value to some other length +-- e.g. 4 octets +ScreeningIndicator ::= ENUMERATED { + userProvidedNotScreened(0), + -- number was provided by a remote user terminal + -- equipment, and has been screened by a network that + -- is not the local public or the local private + -- network. + userProvidedVerifiedAndPassed(1), + -- number was provided by a remote user terminal + -- equipment (or by a remote private network), and has + -- been screened by the local public or the local + -- private network. + userProvidedVerifiedAndFailed(2), + -- not used, value reserved. + networkProvided(3)} + +-- number was provided by local public or local +-- private network. +PresentationAllowedIndicator ::= BOOLEAN + +END -- of Addressing-Data-Elements
\ No newline at end of file diff --git a/epan/dissectors/asn1/qsig/qsig-gf-ext.asn b/epan/dissectors/asn1/qsig/qsig-gf-ext.asn new file mode 100644 index 00000000..3cee9f59 --- /dev/null +++ b/epan/dissectors/asn1/qsig/qsig-gf-ext.asn @@ -0,0 +1,32 @@ +-- QSIG-GF-EXT.asn +-- +-- Taken from Ecma International +-- http://www.ecma-international.org/publications/standards/Ecma-165.htm +-- +-- 9.2 Manufacturer specific additions to standardised operations +-- + +Manufacturer-specific-service-extension-class-asn1-97 {iso(1) standard(0) + pss1-generic-procedures(11582) msi-class-asn1-97(11)} DEFINITIONS ::= +BEGIN + +EXTENSION ::= CLASS { + &ArgumentType , + &extensionId OBJECT IDENTIFIER +} WITH SYNTAX { + ARGUMENT &ArgumentType + IDENTIFIER &extensionId +} + +Extension{EXTENSION:ExtensionSet} ::= SEQUENCE { + extensionId EXTENSION.&extensionId({Extensionset}), + extensionArgument EXTENSION.&ArgumentType({ExtensionSet}{@extensionId}) +} + +Extensionset EXTENSION ::= {...} + +-- ExtensionSet is a set of objects of class EXTENSION. Element extensionId is constrained to be +-- the identifier of an object from that set, and element extensionArgument is constrained to be the +-- argument type for that particular object. + +END -- of Manufacturer-specific-service-extension-class-asn1-97
\ No newline at end of file diff --git a/epan/dissectors/asn1/qsig/qsig-gf-gp.asn b/epan/dissectors/asn1/qsig/qsig-gf-gp.asn new file mode 100644 index 00000000..f0937122 --- /dev/null +++ b/epan/dissectors/asn1/qsig/qsig-gf-gp.asn @@ -0,0 +1,15 @@ +-- QSIG-GF-EXT.asn +-- +-- Taken from Ecma International +-- http://www.ecma-international.org/publications/standards/Ecma-165.htm +-- +-- B.3 PSS1InformationElement +-- + +PSS1-generic-parameters-definition-asn1-97 { iso( 1) standard( 0) + pss1-generic-procedures( 11582) pss1-generic-parameters-asn1-97( 17)} DEFINITIONS ::= +BEGIN + +PSS1InformationElement ::= [APPLICATION 0] IMPLICIT OCTET STRING + +END -- of PSS1 Generic parameters definition-asn1-97
\ No newline at end of file diff --git a/epan/dissectors/asn1/qsig/qsig.cnf b/epan/dissectors/asn1/qsig/qsig.cnf new file mode 100644 index 00000000..abdd580b --- /dev/null +++ b/epan/dissectors/asn1/qsig/qsig.cnf @@ -0,0 +1,189 @@ +# qsig.cnf +# QSIG conformation file +# 2007 Tomas Kukosa + +#.OPT +BER +GROUP_BY_PROT +-o qsig +#.END + +#.EXPORTS EXTERN VALS_WITH_TABLE WS_DLL + +Name +PSS1InformationElement +Extension + +#.MODULE +Addressing-Data-Elements-asn1-97 qsig +Manufacturer-specific-service-extension-class-asn1-97 qsig +PSS1-generic-parameters-definition-asn1-97 qsig + +Name-Operations-asn1-97 qsig.na +Call-Diversion-Operations-asn1-97 qsig.cf +Path-Replacement-Operations-asn1-97 qsig.pr +Call-Transfer-Operations-asn1-97 qsig.ct +SS-CC-Operations-asn1-97 qsig.cc +Call-Offer-Operations-asn1-97 qsig.co +Do-Not-Disturb-Operations-asn1-97 qsig.dnd +Call-Intrusion-Operations-asn1-97 qsig.ci +SS-AOC-Operations-asn1-97 qsig.aoc +Recall-Operations-asn1-97 qsig.re +Call-Interception-Operations-asn1-97 qsig.cint +Synchronization-Operations-asn1-97 qsig.sync +Common-Information-Operations-asn1-97 qsig.cmn +Call-Interruption-Operations-asn1-97 qsig.cpi +PUM-Registration-Operations-asn1-97 qsig.pumr +Private-User-Mobility-Call-Handling-Operations-asn1-97 qsig.pumch +Single-Step-Call-Transfer-Operations-asn1-97 qsig.ssct +WTM-Location-Registration-Operations-asn1-97 qsig.wtmlr +Wireless-Terminal-Call-Handling-Operations-asn1-97 qsig.wtmch +WTM-Authentication-Operations-asn1-97 qsig.wtmau +SS-SD-Operations-asn1-97 qsig.sd +Call-Identification-and-Call-Linkage-Operations-asn1-97 qsig.cidl +Short-Message-Service-Operations-asn1-97 qsig.sms +SS-MCR-Operations-asn97 qsig.mcr +SS-MCM-Operations-asn1-97 qsig.mcm +SS-MID-Operations-asn1-97 qsig.mid + +#.PDU + +OPERATION.&ArgumentType +OPERATION.&ResultType +ERROR.&ParameterType + +#.END + +#.TYPE_RENAME +ARG-activateDiversionQ/extension ADExtension +ARG-deactivateDiversionQ/extension DDExtension +ARG-interrogateDiversionQ/extension IDExtension +ARG-checkRestriction/extension CHRExtension +ARG-callRerouteing/extension CRRExtension +ARG-divertingLegInformation1/extension DLI1Extension +ARG-divertingLegInformation2/extension DLI2Extension +ARG-divertingLegInformation3/extension DLI3Extension +IntResult/extension IRExtension +PRProposeArg/extension PRPExtension +PRSetupArg/extension PRSExtension +PRRetainArg/extension PRRExtension +CTInitiateArg/argumentExtension CTIargumentExtension +CTSetupArg/argumentExtension CTSargumentExtension +CTActiveArg/argumentExtension CTAargumentExtension +CTCompleteArg/argumentExtension CTCargumentExtension +CTUpdateArg/argumentExtension CTUargumentExtension +SubaddressTransferArg/argumentExtension STargumentExtension +DNDActivateArg/argumentExtension DNDAargumentExtension +DNDDeactivateArg/argumentExtension DNDDargumentExtension +DNDInterrogateArg/argumentExtension DNDIargumentExtension +DNDOverrideArg/argumentExtension DNDOargumentExtension +SSCTInitiateArg/argumentExtension SSCTIargumentExtension +SSCTSetupArg/argumentExtension SSCTSargumentExtension +SSCTDigitInfoArg/argumentExtension SSCTDargumentExtension +PumRegistrArg/pumUserId RpumUserId +PumDelRegArg/pumUserId XpumUserId +PumDe-regArg/pumUserId DpumUserId +PumInterrogArg/pumUserId IpumUserId +MCMNewMsgArg/argumentExt MCMNewArgumentExt +MCMNoNewMsgArg/argumentExt MCMNoNewArgumentExt +MCMUpdateReqArg/argumentExt MCMUpdArgArgumentExt +MCMUpdateReqResElt/argumentExt MCMUpdResArgumentExt +#.END + +#.FIELD_RENAME +NameArg/nameSequence/extension extensionNA +ARG-activateDiversionQ/extension extensionAD +ARG-deactivateDiversionQ/extension extensionDD +ARG-interrogateDiversionQ/extension extensionID +ARG-checkRestriction/extension extensionCHR +ARG-callRerouteing/extension extensionCRR +ARG-divertingLegInformation1/extension extensionDLI1 +ARG-divertingLegInformation2/extension extensionDLI2 +ARG-divertingLegInformation3/extension extensionDLI3 +IntResult/extension extensionIR +PRSetupArg/extension extensionPRS +PRProposeArg/extension extensionPRP +PRRetainArg/extension extensionPRR +CTInitiateArg/argumentExtension argumentExtensionCTI +CTSetupArg/argumentExtension argumentExtensionCTS +CTActiveArg/argumentExtension argumentExtensionCTA +CTCompleteArg/argumentExtension argumentExtensionCTC +CTUpdateArg/argumentExtension argumentExtensionCTU +SubaddressTransferArg/argumentExtension argumentExtensionST +DNDActivateArg/argumentExtension argumentExtensionDNDA +DNDDeactivateArg/argumentExtension argumentExtensionDNDD +DNDInterrogateArg/argumentExtension argumentExtensionDNDI +DNDOverrideArg/argumentExtension argumentExtensionDNDO +SSCTInitiateArg/argumentExtension argumentExtensionSSCTI +SSCTSetupArg/argumentExtension argumentExtensionSSCTS +SSCTDigitInfoArg/argumentExtension argumentExtensionSSCTD +PumRegistrArg/pumUserId pumRUserId +PumDelRegArg/pumUserId pumXUserId +PumDe-regArg/pumUserId pumDUserId +PumInterrogArg/pumUserId pumIUserId +MCMNewMsgArg/argumentExt argumentExtMCMNew +MCMNoNewMsgArg/argumentExt argumentExtMCMNoNew +MCMUpdateReqArg/argumentExt argumentExtMCMUpdArg +MCMUpdateReqResElt/argumentExt argumentExtMCMUpdRes +CallIdentificationAssignArg/extension extensiont +CallIdentificationUpdateArg/extension extensiont +DisplayArg/extension sdextension +KeypadArg/extension sdextension +AddressHeader/priority ahpriority +WtmoArg/extension wtmoaextension +PumoArg/extension pumoaextension +#.END + + +#.TYPE_ATTR +NameData TYPE = FT_STRING DISPLAY = BASE_NONE +#.END + +#.FN_HDR Extension + extension_oid = NULL; +#.FN_PARS Extension/extensionId FN_VARIANT = _str VAL_PTR = &extension_oid +#.FN_BODY Extension/extensionArgument + tvbuff_t *next_tvb; + + next_tvb = tvb_new_subset_remaining(tvb, offset); + if (!dissector_try_string_new(extension_dissector_table, extension_oid, next_tvb, actx->pinfo, tree, FALSE, NULL)) { + proto_tree *next_tree; + + next_tree=proto_tree_add_subtree_format(tree, next_tvb, 0, -1, ett_qsig_unknown_extension, NULL, + "QSIG: Dissector for extension with OID:%%s not implemented.", extension_oid); + + dissect_unknown_ber(actx->pinfo, next_tvb, offset, next_tree); + } + + offset+=tvb_reported_length_remaining(tvb, offset); +#.END + +#.FN_BODY AuthAlgorithm/param + +#.END + +#.FN_BODY PSS1InformationElement/_untag VAL_PTR = &out_tvb + tvbuff_t *out_tvb = NULL; + proto_tree *data_tree; + +%(DEFAULT_BODY)s + data_tree = proto_item_add_subtree(%(ACTX)s->created_item, ett_cnq_PSS1InformationElement); + if (out_tvb && (tvb_reported_length(out_tvb) > 0) && q931_ie_handle) + call_dissector(q931_ie_handle, out_tvb, %(ACTX)s->pinfo, data_tree); +#.END + +#.TABLE10_BODY OPERATION + { %(&operationCode)3s, "%(_name)s" }, +#.END + +#.TABLE11_BODY OPERATION + /* %(_name)-24s */ { %(&operationCode)3s, %(_argument_pdu)s, %(_result_pdu)s }, +#.END + +#.TABLE20_BODY ERROR + { %(&errorCode)4s, "%(_name)s" }, +#.END + +#.TABLE21_BODY ERROR + /* %(_name)-24s */ { %(&errorCode)4s, %(_parameter_pdu)s }, +#.END |