summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/qsig
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/qsig
parentInitial commit. (diff)
downloadwireshark-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')
-rw-r--r--epan/dissectors/asn1/qsig/CMakeLists.txt68
-rw-r--r--epan/dissectors/asn1/qsig/General-Error-List.asn84
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-AOC.asn305
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-CC.asn175
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-CF.asn251
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-CI.asn176
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-CIDL.asn78
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-CINT.asn152
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-CMN.asn143
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-CO.asn102
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-CPI.asn67
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-CT.asn229
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-DND.asn211
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-MCM.asn399
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-MCR.asn169
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-MID.asn129
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-NA.asn135
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-PR.asn169
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-PUMCH.asn135
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-PUMR.asn205
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-RE.asn62
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-SD.asn89
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-SMS.asn339
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-SSCT.asn120
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-WTMAU.asn154
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-WTMCH.asn138
-rw-r--r--epan/dissectors/asn1/qsig/QSIG-WTMLR.asn122
-rw-r--r--epan/dissectors/asn1/qsig/SYNC-SIG.asn72
-rw-r--r--epan/dissectors/asn1/qsig/packet-qsig-template.c714
-rw-r--r--epan/dissectors/asn1/qsig/packet-qsig-template.h18
-rw-r--r--epan/dissectors/asn1/qsig/qsig-gf-ade.asn132
-rw-r--r--epan/dissectors/asn1/qsig/qsig-gf-ext.asn32
-rw-r--r--epan/dissectors/asn1/qsig/qsig-gf-gp.asn15
-rw-r--r--epan/dissectors/asn1/qsig/qsig.cnf189
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