aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/isdn-sup
diff options
context:
space:
mode:
authorJoão Valverde <joao.valverde@tecnico.ulisboa.pt>2016-03-09 03:17:51 +0000
committerJoão Valverde <j@v6e.pt>2016-03-13 21:30:24 +0000
commit54a520d4a1151c68d0b4e5f09a8d82466fa499f3 (patch)
tree7aacae160382098ce651ac862a5dfd5de4beff94 /epan/dissectors/asn1/isdn-sup
parentc1f3c935bdd33090c87f0d2f84842ce9729b747a (diff)
Move /asn1 to /epan/dissectors
Change-Id: I1208fe3c2ba428995526f561e8f792b8d871e9a9 Reviewed-on: https://code.wireshark.org/review/14388 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com> Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Reviewed-by: João Valverde <j@v6e.pt>
Diffstat (limited to 'epan/dissectors/asn1/isdn-sup')
-rw-r--r--epan/dissectors/asn1/isdn-sup/Addressing-Data-Elements.asn140
-rw-r--r--epan/dissectors/asn1/isdn-sup/Advice-of-Charge-Operations.asn265
-rw-r--r--epan/dissectors/asn1/isdn-sup/Basic-Service-Elements.asn32
-rw-r--r--epan/dissectors/asn1/isdn-sup/CCBS-Operations-and-Errors.asn170
-rw-r--r--epan/dissectors/asn1/isdn-sup/CCBS-private-networks-Operations-and-Errors.asn69
-rw-r--r--epan/dissectors/asn1/isdn-sup/CMakeLists.txt62
-rw-r--r--epan/dissectors/asn1/isdn-sup/Closed-User-Group-Service-Operations.asn77
-rw-r--r--epan/dissectors/asn1/isdn-sup/Conference-Add-On-Operations.asn123
-rw-r--r--epan/dissectors/asn1/isdn-sup/Diversion-Operations.asn365
-rw-r--r--epan/dissectors/asn1/isdn-sup/Embedded-Q931-Types.asn11
-rw-r--r--epan/dissectors/asn1/isdn-sup/Explicit-Call-Transfer-Operations-and-Errors.asn150
-rw-r--r--epan/dissectors/asn1/isdn-sup/Freephone-Operations.asn112
-rw-r--r--epan/dissectors/asn1/isdn-sup/General-Errors.asn65
-rw-r--r--epan/dissectors/asn1/isdn-sup/MCID-Operations.asn38
-rw-r--r--epan/dissectors/asn1/isdn-sup/MLPP-Operations-And-Errors.asn135
-rw-r--r--epan/dissectors/asn1/isdn-sup/MWI-Operations-and-Errors.asn144
-rw-r--r--epan/dissectors/asn1/isdn-sup/Makefile.am23
-rw-r--r--epan/dissectors/asn1/isdn-sup/Makefile.common65
-rw-r--r--epan/dissectors/asn1/isdn-sup/Makefile.nmake30
-rw-r--r--epan/dissectors/asn1/isdn-sup/Outgoing-Call-Barring-Operations-and-Errors.asn201
-rw-r--r--epan/dissectors/asn1/isdn-sup/Set-Operations-and-Errors.asn98
-rw-r--r--epan/dissectors/asn1/isdn-sup/Three-Party-Operations.asn53
-rw-r--r--epan/dissectors/asn1/isdn-sup/User-To-User-Signalling-Operations.asn48
-rw-r--r--epan/dissectors/asn1/isdn-sup/isdn-sup.cnf81
-rw-r--r--epan/dissectors/asn1/isdn-sup/packet-isdn-sup-template.c373
25 files changed, 2930 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/isdn-sup/Addressing-Data-Elements.asn b/epan/dissectors/asn1/isdn-sup/Addressing-Data-Elements.asn
new file mode 100644
index 0000000000..f2f6ad43cd
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Addressing-Data-Elements.asn
@@ -0,0 +1,140 @@
+--
+-- EN 300 196-1 Ver. 1.3.2
+--
+
+Addressing-Data-Elements {itu-t identified-organization etsi(0) 196 addressing-data-elements(6)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS PresentedAddressScreened, PresentedAddressUnscreened,
+ PresentedNumberScreened, PresentedNumberUnscreened,
+ Address, PartyNumber, PartySubaddress,
+ ScreeningIndicator, PresentationAllowedIndicator;
+
+PresentedAddressScreened ::= CHOICE {
+ presentationAllowedAddress [0] IMPLICIT AddressScreened,
+ presentationRestricted [1] IMPLICIT NULL,
+ numberNotAvailableDueToInterworking [2] IMPLICIT NULL,
+ presentationRestrictedAddress [3] IMPLICIT AddressScreened }
+
+PresentedAddressUnscreened ::= CHOICE {
+ presentationAllowedAddress [0] IMPLICIT Address,
+ presentationRestricted [1] IMPLICIT NULL,
+ numberNotAvailableDueToInterworking [2] IMPLICIT NULL,
+ presentationRestrictedAddress [3] IMPLICIT Address}
+
+PresentedNumberScreened ::= CHOICE {
+ presentationAllowedNumber [0] IMPLICIT NumberScreened,
+ presentationRestricted [1] IMPLICIT NULL,
+ numberNotAvailableDueToInterworking [2] IMPLICIT NULL,
+ presentationRestrictedNumber [3] IMPLICIT NumberScreened}
+
+PresentedNumberUnscreened ::= CHOICE {
+ presentationAllowedNumber [0] PartyNumber,
+ presentationRestricted [1] IMPLICIT NULL,
+ numberNotAvailableDueToInterworking [2] IMPLICIT NULL,
+ presentationRestrictedNumber [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 recommended that this value is used.
+ publicPartyNumber [1] IMPLICIT PublicPartyNumber,
+ -- the numbering plan is according to
+ -- ITU-T Recommendation E.164.
+ nsapEncodedNumber [2] IMPLICIT NsapEncodedNumber,
+ -- ATM endsystem address encoded as an NSAP address.
+ 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}
+NsapEncodedNumber ::= OCTET STRING (SIZE(20))
+
+
+
+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),
+ pTNSpecificNumber (3),
+ localNumber (4),
+ abbreviatedNumber (6)}
+
+PartySubaddress ::= CHOICE {
+ userSpecifiedSubaddress UserSpecifiedSubaddress,
+ -- not recommended
+ nSAPSubaddress NSAPSubaddress}
+ -- according to ITU-T 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 ITU-T Recommendation 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 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 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
diff --git a/epan/dissectors/asn1/isdn-sup/Advice-of-Charge-Operations.asn b/epan/dissectors/asn1/isdn-sup/Advice-of-Charge-Operations.asn
new file mode 100644
index 0000000000..df1b7e7404
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Advice-of-Charge-Operations.asn
@@ -0,0 +1,265 @@
+--
+-- EN 300 182-1 Ver. 1.3.6
+--
+
+Advice-of-Charge-Operations {ccitt identified-organization etsi (0) 182 operations-and-errors (1)}
+
+DEFINITIONS IMPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS ChargingRequest, AOCSCurrency, AOCSSpecialArr,
+ AOCDCurrency, AOCDChargingUnit, AOCECurrency, AOCEChargingUnit,
+ NoChargingInfoAvailable, ChargingAssociation;
+
+IMPORTS OPERATION, ERROR
+ FROM Remote-Operations-Information-Objects {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)}
+ notSubscribed, notAvailable, notImplemented, invalidCallState
+ FROM General-Errors
+ {ccitt identified-organization etsi (0) 196 general-errors (2)}
+ PartyNumber
+ FROM Addressing-Data-Elements
+ {itu-t(0) identified-organization(4) 196 addressing-data-elements (6)};
+
+ chargingRequest OPERATION ::= {
+ ARGUMENT ChargingRequestArg
+ RESULT ChargingRequestRes
+ ERRORS {notSubscribed | notAvailable | notImplemented |
+ invalidCallState | NoChargingInfoAvailable}
+ CODE local: 30}
+
+ChargingRequestArg ::= ChargingCase
+
+ChargingRequestRes ::= CHOICE {
+ aOCSCurrencyInfoList AOCSCurrencyInfoList,
+ aOCSSpecialArrInfo AOCSSpecialArrInfo,
+ chargingInfoFollows NULL}
+
+aOCSCurrency OPERATION ::= { -- AOC-S given in currency units
+ ARGUMENT AOCSCurrencyArg
+ RETURN RESULT FALSE
+ CODE local: 31}
+
+AOCSCurrencyArg ::= CHOICE {
+ chargeNotAvailable NULL,
+ aOCSCurrencyInfoList AOCSCurrencyInfoList }
+
+aOCSSpecialArr OPERATION ::= { -- AOC-S for special charging arrangement
+ ARGUMENT AOCSSpecialArrArg
+ RETURN RESULT FALSE
+ CODE local: 32}
+
+AOCSSpecialArrArg ::=CHOICE {
+ chargeNotAvailable NULL,
+ aOCSSpecialArrInfo AOCSSpecialArrInfo }
+
+aOCDCurrency OPERATION ::= { -- AOC-D given in currency units
+ ARGUMENT AOCDCurrencyArg
+ RETURN RESULT FALSE
+ CODE local: 33}
+
+AOCDCurrencyArg ::= CHOICE {
+ chargeNotAvailable NULL,
+ aOCDCurrencyInfo AOCDCurrencyInfo }
+
+aOCDChargingUnit OPERATION ::= { -- AOC-D given in charging units
+ ARGUMENT AOCDChargingUnitArg
+ RETURN RESULT FALSE
+ CODE local: 34}
+
+AOCDChargingUnitArg ::= CHOICE {
+ chargeNotAvailable NULL,
+ aOCDChargingUnitInfo AOCDChargingUnitInfo }
+
+aOCECurrency OPERATION ::= { -- AOC-E given in currency units
+ ARGUMENT AOCECurrencyArg
+ RETURN RESULT FALSE
+ CODE local: 35}
+
+
+AOCECurrencyArg ::=CHOICE {
+ chargeNotAvailable NULL,
+ aOCECurrencyInfo AOCECurrencyInfo }
+
+aOCEChargingUnit OPERATION::= { -- AOC-E given in charging units
+ ARGUMENT AOCEChargingUnitArg
+ RETURN RESULT FALSE
+ CODE local: 36}
+
+AOCEChargingUnitArg ::= CHOICE {
+ chargeNotAvailable NULL,
+ aOCEChargingUnitInfo AOCEChargingUnitInfo }
+
+ChargingCase ::= ENUMERATED {
+ chargingInformationAtCallSetup (0),
+ chargingDuringACall (1),
+ chargingAtTheEndOfACall (2) }
+
+AOCSCurrencyInfoList ::= SEQUENCE SIZE (1..10) OF AOCSCurrencyInfo
+
+AOCSCurrencyInfo ::= SEQUENCE {
+ chargedItem ChargedItem,
+ chargingtype CHOICE {
+ specificCurrency CHOICE {
+ durationCurrency [1] IMPLICIT DurationCurrency,
+ flatRateCurrency [2] IMPLICIT FlatRateCurrency,
+ volumeRateCurrency [3] IMPLICIT VolumeRateCurrency},
+ specialChargingCode SpecialChargingCode,
+ freeOfCharge [4] IMPLICIT NULL,
+ currencyInfoNotAvailable [5] IMPLICIT NULL} }
+
+AOCSSpecialArrInfo ::= INTEGER (1..10)
+
+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)
+
+AOCDCurrencyInfo ::= CHOICE {
+ specificCurrency SEQUENCE {
+ recordedCurrency [1] IMPLICIT RecordedCurrency,
+ typeOfChargingInfo [2] IMPLICIT TypeOfChargingInfo,
+ aOCDBillingId [3] IMPLICIT AOCDBillingId OPTIONAL },
+ freeOfCharge [1] IMPLICIT NULL}
+
+
+AOCDChargingUnitInfo ::= CHOICE {
+ specificChargingUnits SEQUENCE {
+ recordedUnitsList [1] IMPLICIT RecordedUnitsList,
+ typeOfChargingInfo [2] IMPLICIT TypeOfChargingInfo,
+ aOCDBillingId [3] IMPLICIT AOCDBillingId OPTIONAL },
+ freeOfCharge [1] IMPLICIT NULL}
+
+RecordedCurrency ::= SEQUENCE {
+ rCurrency [1] IMPLICIT Currency,
+ rAmount [2] IMPLICIT Amount }
+
+RecordedUnitsList ::= SEQUENCE SIZE (1..32) OF RecordedUnits
+
+TypeOfChargingInfo ::= ENUMERATED {
+ subTotal (0),
+ total (1)}
+
+RecordedUnits ::= SEQUENCE {
+ cc CHOICE{
+ recordedNumberOfUnits NumberOfUnits,
+ notAvailable NULL},
+ recordedTypeOfUnits TypeOfUnit OPTIONAL }
+
+AOCDBillingId ::= ENUMERATED {
+ normalCharging (0),
+ reverseCharging (1),
+ creditCardCharging (2)}
+
+AOCECurrencyInfo ::= SEQUENCE {
+ cc CHOICE {
+ specificCurrency SEQUENCE {
+ recordedCurrency [1] IMPLICIT RecordedCurrency,
+ aOCEBillingId [2] IMPLICIT AOCEBillingId OPTIONAL},
+ freeOfCharge [1] IMPLICIT NULL},
+ chargingAssociation ChargingAssociation OPTIONAL}
+
+AOCEChargingUnitInfo ::= SEQUENCE {
+ cc CHOICE {
+ specificChargingUnits SEQUENCE {
+ recordedUnitsList [1] IMPLICIT RecordedUnitsList,
+ aOCEBillingId [2] IMPLICIT AOCEBillingId OPTIONAL},
+ freeOfCharge [1] IMPLICIT NULL},
+ chargingAssociation ChargingAssociation OPTIONAL}
+
+AOCEBillingId ::= ENUMERATED {
+ normalCharging (0),
+ reverseCharging (1),
+ creditCardCharging (2),
+ callForwardingUnconditional (3),
+ callForwardingBusy (4),
+ callForwardingNoReply (5),
+ callDeflection (6),
+ callTransfer (7)}
+
+Currency ::= IA5String (SIZE (1..10))
+
+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) }
+
+TypeOfUnit ::= INTEGER (1..16) -- Value 1-16
+
+NumberOfUnits ::= INTEGER (0..16777215)
+
+ChargingType ::= ENUMERATED {
+ continuousCharging (0),
+ stepFunction (1) }
+
+ChargingAssociation ::= CHOICE {
+ chargeNumber [0] EXPLICIT PartyNumber,
+ chargeIdentifier ChargeIdentifier}
+
+ChargeIdentifier ::= INTEGER (-32768..32767)
+
+-- NoChargingInfoAvailable ::= ERROR
+
+-- chargingRequest ChargingRequest ::= 30
+-- aOCSCurrency AOCSCurrency ::= 31
+-- aOCSSpecialArr AOCSSpecialArr ::= 32
+-- aOCDCurrency AOCDCurrency ::= 33
+-- aOCDChargingUnit AOCDChargingUnit ::= 34
+-- aOCECurrency AOCECurrency ::= 35
+-- aOCEChargingUnit AOCEChargingUnit ::= 36
+-- noChargingInfoAvailable NoChargingInfoAvailable ::= 26
+
+noChargingInfoAvailable ERROR ::= { CODE local: 26}
+
+END
+
diff --git a/epan/dissectors/asn1/isdn-sup/Basic-Service-Elements.asn b/epan/dissectors/asn1/isdn-sup/Basic-Service-Elements.asn
new file mode 100644
index 0000000000..7f11a6cba0
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Basic-Service-Elements.asn
@@ -0,0 +1,32 @@
+--
+-- EN 300 196-1 Ver. 1.3.2
+--
+Basic-Service-Elements {itu-t identified-organization etsi(0) 196 basic-service-elements(8)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS BasicService;
+
+BasicService ::= ENUMERATED {
+ allServices (0),
+ speech (1),
+ unrestrictedDigitalInformation (2),
+ audio3k1Hz (3),
+ unrestrictedDigitalInformationWithTonesAndAnnouncements (4),
+ multirate(5),
+ telephony3k1Hz (32),
+ teletex (33),
+ telefaxGroup4Class1 (34),
+ videotexSyntaxBased (35),
+ videotelephony (36),
+ telefaxGroup2-3 (37),
+ telephony7kHz (38),
+ euroFileTransfer (39),
+ fileTransferAndAccessManagement (40),
+ videoconference (41),
+ audioGraphicConference (42)
+ }
+
+END -- of Basic-Service-Elements
diff --git a/epan/dissectors/asn1/isdn-sup/CCBS-Operations-and-Errors.asn b/epan/dissectors/asn1/isdn-sup/CCBS-Operations-and-Errors.asn
new file mode 100644
index 0000000000..66c19c7220
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/CCBS-Operations-and-Errors.asn
@@ -0,0 +1,170 @@
+--
+-- EN 300 359-1 Ver. 1.3.2
+--
+CCBS-Operations-and-Errors {ccitt identified-organization etsi(0) 359 operations-and-errors(1)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS CallInfoRetain, EraseCallLinkageID,
+ CCBSRequest, CCBSDeactivate, CCBSInterrogate, CCBSErase,
+ CCBSRemoteUserFree, CCBSCall, CCBSStatusRequest, CCBSBFree,
+ CCBSStopAlerting,
+ InvalidCallLinkageID, InvalidCCBSReference, LongTermDenial, ShortTermDenial,
+ CCBSIsAlreadyActivated, AlreadyAccepted, OutgoingCCBSQueueFull,
+ CallFailureReasonNotBusy, NotReadyForCall;
+
+IMPORTS OPERATION, ERROR
+ FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)}
+
+ notSubscribed, supplementaryServiceInteractionNotAllowed
+ FROM General-Errors
+ {ccitt identified-organization etsi(0) 196 general-errors(2)}
+
+ Address, PartyNumber, PartySubaddress
+ FROM Addressing-Data-Elements
+ {ccitt identified-organization etsi(0) 196 addressing-data-elements(6)}
+
+ Q931InformationElement
+ FROM Embedded-Q931-Types
+ {ccitt identified-organization etsi(0) 196 embedded-q931-types(7)};
+
+CallInfoRetain ::= OPERATION
+ ARGUMENT callLinkageID CallLinkageID
+
+EraseCallLinkageID ::= OPERATION
+ ARGUMENT callLinkageID CallLinkageID
+
+CCBSRequest ::= OPERATION
+ ARGUMENT callLinkageID CallLinkageID
+ RESULT SEQUENCE {
+ recallMode RecallMode,
+ cCBSReference CCBSReference}
+ ERRORS {notSubscribed, InvalidCallLinkageID, ShortTermDenial,
+ LongTermDenial, CCBSIsAlreadyActivated,
+ supplementaryServiceInteractionNotAllowed,
+ OutgoingCCBSQueueFull, CallFailureReasonNotBusy}
+
+CCBSInterrogate ::= OPERATION
+ ARGUMENT SEQUENCE {
+ cCBSReference CCBSReference OPTIONAL,
+ partyNumberOfA PartyNumber OPTIONAL}
+ RESULT SEQUENCE {
+ recallMode RecallMode,
+ callDetails CallDetails OPTIONAL}
+ ERRORS {InvalidCCBSReference, notSubscribed}
+
+CCBSDeactivate ::= OPERATION
+ ARGUMENT cCBSReference CCBSReference
+ RESULT
+ ERRORS {InvalidCCBSReference}
+CCBSErase ::= OPERATION
+ ARGUMENT SEQUENCE {
+ recallMode RecallMode,
+ cCBSReference CCBSReference,
+ addressOfB Address,
+ q931InfoElement Q931InformationElement,
+ eraseReason CCBSEraseReason}
+
+-- The Bearer capability, High layer compatibility (optional) and Low layer compatibility
+-- (optional) information elements shall be embedded in q931InfoElement.
+
+CCBSRemoteUserFree ::= OPERATION
+ ARGUMENT SEQUENCE {
+ recallMode RecallMode,
+ cCBSReference CCBSReference,
+ addressOfB Address,
+ q931InfoElement Q931InformationElement}
+
+-- The Bearer capability, High layer compatibility (optional) and Low layer compatibility
+-- (optional) information elements shall be embedded in q931InfoElement.
+
+CCBSBFree ::= OPERATION
+ ARGUMENT SEQUENCE {
+ recallMode RecallMode,
+ cCBSReference CCBSReference,
+ addressOfB Address,
+ q931InfoElement Q931InformationElement}
+
+-- The Bearer capability, High layer compatibility (optional) and Low layer compatibility
+-- (optional) information elements shall be embedded in q931InfoElement.
+
+CCBSCall ::= OPERATION
+ ARGUMENT cCBSReference CCBSReference
+ ERRORS {InvalidCCBSReference, AlreadyAccepted,
+ NotReadyForCall}
+
+CCBSStatusRequest ::= OPERATION
+ ARGUMENT SEQUENCE {
+ recallMode RecallMode,
+ cCBSReference CCBSReference,
+ q931InfoElement Q931InformationElement}
+ RESULT BOOLEAN -- free=TRUE, busy=FALSE
+
+-- The Bearer capability, High layer compatibility (optional) and Low layer compatibility
+-- (optional) information elements shall be embedded in q931InfoElement.
+
+CCBSStopAlerting ::= OPERATION
+ ARGUMENT cCBSReference CCBSReference
+
+CallDetails ::= SEQUENCE SIZE(1..5) OF CallInformation
+
+CallInformation ::= SEQUENCE {
+ addressOfB Address,
+ q931InfoElement Q931InformationElement,
+ cCBSReference CCBSReference,
+ subAddressOfA PartySubaddress OPTIONAL}
+
+-- The Bearer capability, High layer compatibility (optional) and Low layer compatibility
+-- (optional) information elements shall be embedded in q931InfoElement.
+
+InvalidCallLinkageID ::= ERROR
+InvalidCCBSReference ::= ERROR
+LongTermDenial ::= ERROR
+ShortTermDenial ::= ERROR
+CCBSIsAlreadyActivated ::= ERROR
+AlreadyAccepted ::= ERROR
+OutgoingCCBSQueueFull ::= ERROR
+CallFailureReasonNotBusy ::= ERROR
+NotReadyForCall ::= ERROR
+
+CallLinkageID ::= INTEGER (0..127)
+CCBSReference ::= INTEGER (0..127)
+CCBSEraseReason ::= ENUMERATED {
+ normal-unspecified (0),
+ t-CCBS2-timeout (1),
+ t-CCBS3-timeout (2),
+ basic-call-failed (3)}
+
+RecallMode ::= ENUMERATED {
+ globalRecall (0),
+ specificRecall (1)}
+
+cCBSOID OBJECT IDENTIFIER ::= {ccitt identified-organization etsi(0) 359
+ operations-and-errors(1)}
+
+callInfoRetain CallInfoRetain ::= globalValue {cCBSOID 1}
+cCBSRequest CCBSRequest ::= globalValue {cCBSOID 2}
+cCBSDeactivate CCBSDeactivate ::= globalValue {cCBSOID 3}
+cCBSInterrogate CCBSInterrogate ::= globalValue {cCBSOID 4}
+cCBSErase CCBSErase ::= globalValue {cCBSOID 5}
+cCBSRemoteUserFree CCBSRemoteUserFree ::= globalValue {cCBSOID 6}
+cCBSCall CCBSCall ::= globalValue {cCBSOID 7}
+cCBSStatusRequest CCBSStatusRequest ::= globalValue {cCBSOID 8}
+cCBSBFree CCBSBFree ::= globalValue {cCBSOID 9}
+eraseCallLinkageID EraseCallLinkageID ::= globalValue {cCBSOID 10}
+cCBSStopAlerting CCBSStopAlerting ::= globalValue {cCBSOID 11}
+invalidCallLinkageID InvalidCallLinkageID ::= globalValue {cCBSOID 20}
+invalidCCBSReference InvalidCCBSReference ::= globalValue {cCBSOID 21}
+longTermDenial LongTermDenial ::= globalValue {cCBSOID 22}
+shortTermDenial ShortTermDenial ::= globalValue {cCBSOID 23}
+cCBSIsAlreadyActivated CCBSIsAlreadyActivated ::= globalValue {cCBSOID 24}
+alreadyAccepted AlreadyAccepted ::= globalValue {cCBSOID 25}
+outgoingCCBSQueueFull OutgoingCCBSQueueFull ::= globalValue {cCBSOID 26}
+callFailureReasonNotBusy CallFailureReasonNotBusy ::= globalValue {cCBSOID 27}
+notReadyForCall NotReadyForCall ::= globalValue {cCBSOID 28}
+
+
+END -- of CCBS-Operations-and-Errors
diff --git a/epan/dissectors/asn1/isdn-sup/CCBS-private-networks-Operations-and-Errors.asn b/epan/dissectors/asn1/isdn-sup/CCBS-private-networks-Operations-and-Errors.asn
new file mode 100644
index 0000000000..61712b734e
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/CCBS-private-networks-Operations-and-Errors.asn
@@ -0,0 +1,69 @@
+--
+-- EN 300 359-1 Ver. 1.3.2
+--
+CCBS-private-networks-Operations-and-Errors {ccitt identified-organization etsi(0) 359
+ private-networks-operations-and-errors(2)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS CCBS-T-Request, CCBS-T-Call, CCBS-T-Suspend, CCBS-T-Resume,
+ CCBS-T-RemoteUserFree, CCBS-T-Available, LongTermDenial, ShortTermDenial;
+
+IMPORTS OPERATION, ERROR
+ FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)}
+
+ notSubscribed
+ FROM General-Errors
+ {ccitt identified-organization etsi(0) 196 general-errors(2)}
+
+ Address
+ FROM Addressing-Data-Elements
+ {ccitt identified-organization etsi(0) 196 addressing-data-elements(6)}
+ Q931InformationElement
+ FROM Embedded-Q931-Types
+ {ccitt identified-organization etsi(0) 196 embedded-q931-types(7)};
+
+CCBS-T-Request ::= OPERATION
+ ARGUMENT SEQUENCE {
+ destinationAddress Address,
+ q931InfoElement Q931InformationElement,
+ -- contains HLC, LLC and BC information
+ retentionSupported [1] IMPLICIT BOOLEAN
+ DEFAULT FALSE,
+ presentationAllowedIndicator [2] IMPLICIT BOOLEAN
+ OPTIONAL,
+ -- The use of this parameter is specified in
+ -- EN 300 195-1 for interaction of CCBS with CLIP
+ originatingAddress Address OPTIONAL}
+ -- The use of this parameter is specified in
+ -- EN 300 195-1 for interaction of CCBS with CLIP
+ RESULT retentionSupported BOOLEAN -- Default False
+ ERRORS {ShortTermDenial, notSubscribed, LongTermDenial}
+
+CCBS-T-Call ::= OPERATION
+CCBS-T-Suspend ::= OPERATION
+CCBS-T-Resume ::= OPERATION
+CCBS-T-RemoteUserFree ::= OPERATION
+CCBS-T-Available ::= OPERATION
+
+ShortTermDenial ::= ERROR
+LongTermDenial ::= ERROR
+
+cCBS-T-OID OBJECT IDENTIFIER ::= {ccitt identified-organization etsi(0) 359
+ private-networks-operations-and-errors(2)}
+
+cCBS-T-Request CCBS-T-Request ::= globalValue {cCBS-T-OID 1}
+cCBS-T-Call CCBS-T-Call ::= globalValue {cCBS-T-OID 2}
+cCBS-T-Suspend CCBS-T-Suspend ::= globalValue {cCBS-T-OID 3}
+cCBS-T-Resume CCBS-T-Resume ::= globalValue {cCBS-T-OID 4}
+cCBS-T-RemoteUserFree CCBS-T-RemoteUserFree ::= globalValue {cCBS-T-OID 5}
+cCBS-T-Available CCBS-T-Available ::= globalValue {cCBS-T-OID 6}
+
+longTermDenial LongTermDenial ::= globalValue {cCBS-T-OID 20}
+shortTermDenial ShortTermDenial ::= globalValue {cCBS-T-OID 21}
+
+
+END -- of CCBS-private-networks-operations-and-errors
diff --git a/epan/dissectors/asn1/isdn-sup/CMakeLists.txt b/epan/dissectors/asn1/isdn-sup/CMakeLists.txt
new file mode 100644
index 0000000000..a5210cce27
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/CMakeLists.txt
@@ -0,0 +1,62 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+set( PROTOCOL_NAME isdn-sup )
+
+set( PROTO_OPT )
+
+set( EXPORT_FILES
+ ${PROTOCOL_NAME}-exp.cnf
+)
+
+set( EXT_ASN_FILE_LIST
+)
+
+set( ASN_FILE_LIST
+ Addressing-Data-Elements.asn
+ Basic-Service-Elements.asn
+ Embedded-Q931-Types.asn
+ General-Errors.asn
+ Advice-of-Charge-Operations.asn
+ Closed-User-Group-Service-Operations.asn
+ Conference-Add-On-Operations.asn
+ Diversion-Operations.asn
+ MCID-Operations.asn
+ User-To-User-Signalling-Operations.asn
+ Freephone-Operations.asn
+ MLPP-Operations-And-Errors.asn
+)
+
+set( EXTRA_DIST
+ ${ASN_FILE_LIST}
+ packet-${PROTOCOL_NAME}-template.c
+ ${PROTOCOL_NAME}.cnf
+)
+
+set( SRC_FILES
+ ${EXTRA_DIST}
+ ${EXT_ASN_FILE_LIST}
+)
+
+set( A2W_FLAGS -b )
+
+ASN2WRS()
+
diff --git a/epan/dissectors/asn1/isdn-sup/Closed-User-Group-Service-Operations.asn b/epan/dissectors/asn1/isdn-sup/Closed-User-Group-Service-Operations.asn
new file mode 100644
index 0000000000..db63f8fed9
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Closed-User-Group-Service-Operations.asn
@@ -0,0 +1,77 @@
+--
+-- EN 300 138-1 Ver. 1.3.4
+--
+Closed-User-Group-Service-Operations {ccitt identified-organization etsi (0) 138 operations-and-errors (1)}
+
+DEFINITIONS ::=
+BEGIN
+
+EXPORTS CUGCall,
+ InvalidOrUnregisteredCUGIndex,
+ RequestedBasicServiceViolatesCUGConstraints,
+ OutgoingCallsBarredWithinCUG,
+ IncomingCallsBarredWithinCUG,
+ UserNotMemeberOfCUG,
+ InconsistencyInDesignatedFacilityAndSubscriberClass;
+
+IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)}
+ notSubscribed,
+ basicServiceNotProvided
+ FROM General-Errors
+ {ccitt identified-organization etsi(0) 196 general-errors};
+
+
+ cUGcall OPERATION ::= {
+ -- in Facility information element. Invoked from calling user to originating
+ -- network side. Also from destination network side to called user
+ ARGUMENT CUGcallArg
+ -- in SETUP message
+ RETURN RESULT FALSE
+
+ ERRORS {
+ invalidOrUnregisteredCUGIndex |
+ requestedBasicServiceViolatesCUGConstraints |
+ outgoingCallsBarredWithinCUG |
+ incomingCallsBarredWithinCUG |
+ userNotMemberOfCUG |
+ basicServiceNotProvided |
+ inconsistencyInDesignatedFacilityAndSubscriberClass |
+ notSubscribed
+ }
+ -- in clearing message to calling user. Also to destination network side.
+ CODE local: 2}
+
+
+CUGcallArg ::= SEQUENCE{
+ oARequested OARequested DEFAULT FALSE,
+ cUGIndex CUGIndex OPTIONAL
+ }
+
+OARequested ::= [1] IMPLICIT BOOLEAN
+CUGIndex ::= [2] IMPLICIT INTEGER (0..32767)
+
+InvalidOrUnregisteredCUGIndex ::= ERROR
+invalidOrUnregisteredCUGIndex ERROR ::= { CODE local: 16}
+RequestedBasicServiceViolatesCUGConstraints ::= ERROR
+requestedBasicServiceViolatesCUGConstraints ERROR ::= { CODE local: 17}
+OutgoingCallsBarredWithinCUG ::= ERROR
+outgoingCallsBarredWithinCUG ERROR ::= { CODE local: 18}
+IncomingCallsBarredWithinCUG ::= ERROR
+incomingCallsBarredWithinCUG ERROR ::= { CODE local: 19}
+UserNotMemberOfCUG ::= ERROR
+userNotMemberOfCUG ERROR ::= { CODE local: 20}
+InconsistencyInDesignatedFacilityAndSubscriberClass ::= ERROR
+inconsistencyInDesignatedFacilityAndSubscriberClass ERROR ::= { CODE local: 21}
+
+-- cUGCall CUGCall ::= localValue 2
+
+--invalidOrUnregisteredCUGIndex InvalidOrUnregisteredCUGIndex ::= localValue 16
+--requestedBasicServiceViolatesCUGConstraints RequestedBasicServiceViolatesCUGConstraints ::= localValue 17
+--outgoingCallsBarredWithinCUG OutgoingCallsBarredWithinCUG ::= localValue 18
+--incomingCallsBarredWithinCUG IncomingCallsBarredWithinCUG ::= localValue 19
+--userNotMemberOfCUG UserNotMemberOfCUG ::= localValue 20
+--inconsistencyInDesignatedFacilityAndSubscriberClass InconsistencyInDesignatedFacilityAndSubscriberClass ::= localValue 21
+
+END -- Closed-User-Group-Service-Operations
+
diff --git a/epan/dissectors/asn1/isdn-sup/Conference-Add-On-Operations.asn b/epan/dissectors/asn1/isdn-sup/Conference-Add-On-Operations.asn
new file mode 100644
index 0000000000..6fb2c17cf8
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Conference-Add-On-Operations.asn
@@ -0,0 +1,123 @@
+--
+-- EN 300 185-1 Ver. 1.2.4
+--
+Conference-Add-On-Operations {ccitt identified-organization etsi (0) 185 operations-and-types (1)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+BEGIN
+
+EXPORTS BeginCONF, AddCONF, SplitCONF, DropCONF,
+ IsolateCONF, ReattachCONF, PartyDISC,
+ IllConferenceId, IllPartyId,
+ NumberOfPartiesExceeded,
+ NotActive, NotAllowed, PartyId, ConferenceId, ConfSize;
+
+IMPORTS OPERATION,
+ ERROR
+ FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)}
+ notSubscribed, notAvailable,
+ supplementaryServiceInteractionNotAllowed,
+ resourceUnavailable, invalidCallState
+ FROM General-Errors
+ {ccitt identified-organization etsi(0) 196 general-errors (2)};
+
+beginCONF OPERATION ::= {
+ ARGUMENT BeginCONFArg -- optional
+ RESULT BeginCONFRes
+ ERRORS {notSubscribed | notAvailable |
+ resourceUnavailable |
+ invalidCallState |
+ numberOfPartiesExceeded}
+ CODE local: 40}
+
+BeginCONFArg ::= ConfSize
+
+BeginCONFRes ::= SEQUENCE {
+ conferenceId ConferenceId,
+ partyId PartyId OPTIONAL }
+
+addCONF OPERATION ::= {
+ ARGUMENT AddCONFArg
+ RESULT AddCONFRes
+ ERRORS {IllConferenceId |
+ NumberOfPartiesExceeded |
+ NotAllowed |
+ supplementaryServiceInteractionNotAllowed |
+ invalidCallState}
+ CODE local: 41}
+
+AddCONFArg ::= ConferenceId
+AddCONFRes ::= PartyId
+
+splitCONF OPERATION ::= {
+ ARGUMENT SplitCONFArg
+ RETURN RESULT FALSE
+ ERRORS {IllConferenceId | IllPartyId}
+ CODE local: 42}
+
+
+SplitCONFArg ::= SEQUENCE { conferenceId ConferenceId,
+ partyId PartyId}
+
+dropCONF OPERATION ::= {
+ ARGUMENT DropCONFArg
+ RETURN RESULT FALSE
+ ERRORS {IllPartyId, NotActive}
+ CODE local: 43}
+
+DropCONFArg ::= PartyId
+
+isolateCONF OPERATION ::= {
+ ARGUMENT IsolateCONFArg
+ RETURN RESULT FALSE
+ ERRORS {IllPartyId, NotActive}
+ CODE local: 44}
+
+IsolateCONFArg ::= PartyId
+
+reattachCONF OPERATION ::= {
+ ARGUMENT ReattachCONFArg
+ RETURN RESULT FALSE
+ ERRORS {IllPartyId, NotActive}
+ CODE local: 45}
+
+ReattachCONFArg ::= PartyId
+
+partyDISC OPERATION ::= {
+ ARGUMENT PartyDISCArg
+ RETURN RESULT FALSE
+ CODE local: 46}
+
+PartyDISCArg ::= PartyId
+
+--IllConferenceId ::= ERROR
+illConferenceId ERROR ::= { CODE local: 28}
+--IllPartyId ::= ERROR
+illPartyId ERROR ::= { CODE local: 29}
+--NumberOfPartiesExceeded ::= ERROR
+numberOfPartiesExceeded ERROR ::= { CODE local: 30}
+--NotActive ::= ERROR
+notActive ERROR ::= { CODE local: 31}
+--NotAllowed ::= ERROR
+notAllowed ERROR ::= { CODE local: 32}
+
+PartyId ::= INTEGER (0..127)
+ConferenceId ::= INTEGER (0..127)
+ConfSize ::= INTEGER (0..127)
+
+--beginCONF BeginCONF ::= 40
+--addCONF AddCONF ::= 41
+--splitCONF SplitCONF ::= 42
+--dropCONF DropCONF ::= 43
+--isolateCONF IsolateCONF ::= 44
+--reattachCONF ReattachCONF ::= 45
+--partyDISC PartyDISC ::= 46
+--illConferenceId IllConferenceId ::= 28
+--illPartyId IllPartyId ::= 29
+--numberOfPartiesExceeded NumberOfPartiesExceeded ::= 30
+--notActive NotActive ::= 31
+--notAllowed NotAllowed ::= 32
+
+END -- of Conference-Add-On-Operations
+
diff --git a/epan/dissectors/asn1/isdn-sup/Diversion-Operations.asn b/epan/dissectors/asn1/isdn-sup/Diversion-Operations.asn
new file mode 100644
index 0000000000..9db186c0ef
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Diversion-Operations.asn
@@ -0,0 +1,365 @@
+--
+-- ETSI EN 300 207-1 V3.1.1 (2001-06)
+--
+
+Diversion-Operations {etsi(0) xx(207) operations-and-errors(1)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS ActivationDiversion,
+ DeactivationDiversion,
+ ActivationStatusNotificationDiv,
+ DeactivationStatusNotificationDiv,
+ InterrogationDiversion,
+ InterrogateServedUserNumbers,
+ DiversionInformation,
+ CallDeflection,
+ CallRerouteing,
+ DivertingLegInformation1,
+ DivertingLegInformation2,
+ DivertingLegInformation3,
+ InvalidDivertedToNr,
+ SpecialServiceNr,
+ DiversionToServedUserNr,
+ IncomingCallAccepted,
+ NumberOfDiversionsExceeded,
+ NotActivated,
+ RequestAlreadyAccepted,
+ invalidDivertedToNr,
+ specialServiceNr,
+ diversionToServedUserNr,
+ incomingCallAccepted,
+ numberOfDiversionsExceeded,
+ notActivated,
+ requestAlreadyAccepted,
+ServedUserNr;
+
+IMPORTS OPERATION, ERROR FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)}
+
+ notSubscribed,
+ notAvailable,
+ invalidServedUserNr,
+ basicServiceNotProvided,
+ supplementaryServiceInteractionNotAllowed,
+ resourceUnavailable
+ FROM General-Errors
+ {itu-t(0) identified-organization(4) etsi(0) 196 general-errors(2)}
+
+ PresentedAddressScreened,
+ PresentedNumberUnscreened,
+ Address,
+ PartyNumber,
+ PartySubaddress,
+ PresentationAllowedIndicator
+
+ FROM Addressing-Data-Elements
+ {itu-t(0) identified-organization(4) etsi(0) 196 addressing-data-elements(6)}
+
+ BasicService
+ FROM Basic-Service-Elements
+ {itu-t(0) identified-organization(4) etsi(0) 196 basic-service-elements(8)}
+
+ Q931InformationElement
+ FROM Embedded-Q931-Types
+ {itu-t(0) identified-organization(4) etsi(0) 196 embedded-q931-types(7)};
+
+
+ activationDiversion OPERATION ::= {
+ ARGUMENT ActivationDiversionArg
+ RETURN RESULT FALSE
+ ALWAYS RESPONDS FALSE
+ ERRORS {
+ notSubscribed,
+ notAvailable,
+ invalidServedUserNr,
+ supplementaryServiceInteractionNotAllowed,
+ basicServiceNotProvided,
+ resourceUnavailable,
+ invalidDivertedToNr,
+ specialServiceNr,
+ diversionToServedUserNr,
+ invalidNoReplyTimerValue}
+ CODE local: 7}
+
+ ActivationDiversionArg ::= SEQUENCE {
+ procedure Procedure,
+ basicService BasicService,
+ forwardedToAddress Address,
+ servedUserNr ServedUserNr,
+ noReplyTimer NoReplyTimer OPTIONAL
+ }
+
+
+
+
+-- End of ActivationDiversion operation definition
+
+ deactivationDiversion OPERATION ::= {
+ ARGUMENT DeactivationDiversionArg
+ RETURN RESULT FALSE
+ ALWAYS RESPONDS FALSE
+ ERRORS {
+ notSubscribed |
+ notAvailable |
+ invalidServedUserNr |
+ NotActivated}
+ CODE local: 8}
+
+ DeactivationDiversionArg ::= SEQUENCE {
+ procedure Procedure,
+ basicService BasicService,
+ servedUserNr ServedUserNr
+ }
+
+
+-- End of DeactivationDiversion operation definition
+
+ activationStatusNotificationDiv OPERATION ::= {
+ ARGUMENT ActivationStatusNotificationDivArg
+ RETURN RESULT FALSE
+ ALWAYS RESPONDS FALSE
+ CODE local: 9}
+
+ ActivationStatusNotificationDivArg ::= SEQUENCE {
+ procedure Procedure,
+ basicService BasicService,
+ forwardedToAddresss Address,
+ servedUserNr ServedUserNr}
+
+-- End of ActivationStatusNotificationDiv operation definition
+
+ deactivationStatusNotificationDiv OPERATION ::= {
+ ARGUMENT DeactivationStatusNotificationDivArg
+ RETURN RESULT FALSE
+ ALWAYS RESPONDS FALSE
+ CODE local: 10}
+
+ DeactivationStatusNotificationDivArg ::= SEQUENCE {
+ procedure Procedure,
+ basicService BasicService,
+ servedUserNr ServedUserNr}
+
+-- End of DeactivationStatusNotificationDiv operation definition
+
+ interrogationDiversion OPERATION ::= {
+ ARGUMENT InterrogationDiversionArg
+ RESULT InterrogationDiversionRes
+ ERRORS {
+ notSubscribed |
+ notAvailable |
+ invalidServedUserNr}
+ CODE local: 11}
+
+ InterrogationDiversionArg ::= SEQUENCE {
+ procedure Procedure,
+ basicService BasicService DEFAULT allServices,
+ servedUserNr ServedUserNr}
+
+ InterrogationDiversionRes ::= IntResultList
+
+
+-- End of InterrogationDiversion operation definition
+
+ interrogateServedUserNumbers OPERATION ::= {
+ RESULT InterrogateServedUserNumbersRes
+ ERRORS {
+ notSubscribed |
+ notAvailable}
+ CODE local: 17}
+
+ InterrogateServedUserNumbersRes ::= ServedUserNumberList
+
+-- End of InterrogateServedUserNumbers operation definition
+
+ diversionInformation OPERATION ::= {
+ ARGUMENT DiversionInformationArg
+ RETURN RESULT FALSE
+ ALWAYS RESPONDS FALSE
+ CODE local: 12}
+
+ DiversionInformationArg ::= SEQUENCE {
+ diversionReason DiversionReason,
+ basicService BasicService,
+ servedUserSubaddress PartySubaddress OPTIONAL,
+ callingAddress [0] PresentedAddressScreened OPTIONAL,
+ originalCalledNr [1] PresentedNumberUnscreened OPTIONAL,
+ lastDivertingNr [2] PresentedNumberUnscreened OPTIONAL,
+ lastDivertingReason [3] DiversionReason OPTIONAL,
+ userInfo Q931InformationElement OPTIONAL}
+
+-- The User-user information element, as specified in EN 300 286-1 [19] clause 7.3.3 , shall be
+--embedded in the userInfo parameter.
+
+-- End of DiversionInformation operation definition
+
+ callDeflection OPERATION ::= {
+ ARGUMENT CallDeflectionArg
+ RETURN RESULT FALSE
+ ERRORS {
+ notSubscribed |
+ notAvailable |
+ invalidDivertedToNr |
+ specialServiceNr |
+ diversionToServedUserNr |
+ incomingCallAccepted |
+ numberOfDiversionsExceeded |
+ supplementaryServiceInteractionNotAllowed |
+ requestAlreadyAccepted}
+ CODE local: 13}
+
+ CallDeflectionArg ::= SEQUENCE {
+ deflectionAddress Address,
+ presentationAllowedDivertedToUser PresentationAllowedIndicator
+ OPTIONAL}
+
+-- End of CallDeflection operation definition
+
+ callRerouteing OPERATION ::= {
+ ARGUMENT CallRerouteingArg
+ RETURN RESULT FALSE
+ ALWAYS RESPONDS FALSE
+ ERRORS {
+ notSubscribed |
+ notAvailable |
+ supplementaryServiceInteractionNotAllowed |
+ resourceUnavailable |
+ invalidDivertedToNr |
+ specialServiceNr |
+ diversionToServedUserNr |
+ numberOfDiversionsExceeded}
+ CODE local: 14}
+
+ CallRerouteingArg ::= SEQUENCE {
+ rerouteingReason DiversionReason,
+ calledAddress Address,
+ rerouteingCounter DiversionCounter,
+ q931InfoElement Q931InformationElement,
+ lastRerouteingNr [1] PresentedNumberUnscreened,
+ subscriptionOption [2] SubscriptionOption
+ DEFAULT noNotification,
+ callingPartySubaddress [3] PartySubaddress OPTIONAL}
+
+-- The User-user information element (optional), High layer compatibility information element
+-- (optional), Bearer capability information element and Low layer compatibility information
+-- element (optional) as specified in EN 300 403-1 [11] clause 4.5 shall be embedded in the
+-- q931InfoElement.
+
+
+-- End of CallRerouteing operation definition
+
+ divertingLegInformation1 OPERATION ::= {
+ ARGUMENT DivertingLegInformation1Arg
+ RETURN RESULT FALSE
+ ALWAYS RESPONDS FALSE
+ CODE local: 18}
+
+ DivertingLegInformation1Arg ::= SEQUENCE {
+ diversionReason DiversionReason,
+ subscriptionOption SubscriptionOption,
+ divertedToNumber PresentedNumberUnscreened OPTIONAL}
+
+-- End of DivertingLegInformation1 operation definition
+
+
+ divertingLegInformation2 OPERATION ::= {
+ ARGUMENT DivertingLegInformation2Arg
+ RETURN RESULT FALSE
+ ALWAYS RESPONDS FALSE
+ CODE local: 15}
+
+ DivertingLegInformation2Arg ::= SEQUENCE {
+ diversionCounter DiversionCounter,
+ diversionReason DiversionReason,
+ divertingNr [1] PresentedNumberUnscreened OPTIONAL,
+ originalCalledNr [2] PresentedNumberUnscreened OPTIONAL}
+
+-- End of DivertingLegInformation2 operation definition
+ divertingLegInformation3 OPERATION ::= {
+ ARGUMENT DivertingLegInformation3Arg
+ RETURN RESULT FALSE
+ ALWAYS RESPONDS FALSE
+ CODE local: 19}
+
+ DivertingLegInformation3Arg ::= PresentationAllowedIndicator
+
+-- End of DivertingLegInformation3 operation definition
+
+IntResultList ::= SET SIZE (0..29) OF IntResult
+
+IntResult ::= SEQUENCE {servedUserNr ServedUserNr,
+ basicService BasicService,
+ procedure Procedure,
+ forwardedToAddress Address}
+
+ServedUserNr ::= CHOICE {individualNumber PartyNumber,
+ allNumbers NULL}
+
+DiversionCounter ::= INTEGER (1..5)
+
+SubscriptionOption ::= ENUMERATED {noNotification (0),
+ notificationWithoutDivertedToNr (1),
+ notificationWithDivertedToNr (2)}
+
+Procedure ::= ENUMERATED {cfu (0),
+ cfb (1),
+ cfnr (2)}
+
+ServedUserNumberList ::= SET SIZE (0..99) OF PartyNumber
+
+DiversionReason ::= ENUMERATED {unknown (0),
+ cfu (1),
+ cfb (2),
+ cfnr (3),
+ cdAlerting (4),
+ cdImmediate (5)}
+
+NoReplyTimer ::= INTEGER (1..180)
+
+InvalidDivertedToNr ::= ERROR
+invalidDivertedToNr ERROR ::= { CODE local: 12}
+
+SpecialServiceNr ::= ERROR
+specialServiceNr ERROR ::= { CODE local: 14}
+
+DiversionToServedUserNr ::= ERROR
+diversionToServedUserNr ERROR ::= { CODE local: 15}
+
+IncomingCallAccepted ::= ERROR
+incomingCallAccepted ERROR ::= { CODE local: 23}
+
+NumberOfDiversionsExceeded ::= ERROR
+numberOfDiversionsExceeded ERROR ::= { CODE local: 24}
+
+NotActivated ::= ERROR
+notActivated ERROR ::= { CODE local: 46}
+
+RequestAlreadyAccepted ::= ERROR
+requestAlreadyAccepted ERROR ::= { CODE local: 48}
+
+InvalidNoReplyTimerValue ::= ERROR
+--invalidNoReplyTimerValue ERROR ::= { CODE local: xx}
+
+--deactivationDiversion DeactivationDiversion ::= localValue 8
+--activationStatusNotificationDiv ActivationStatusNotificationDiv ::= localValue 9
+--deactivationStatusNotificationDiv DeactivationStatusNotificationDiv ::= localValue 10
+--interrogationDiversion InterrogationDiversion ::= localValue 11
+--interrogateServedUserNumbers InterrogateServedUserNumbers ::= localValue 17
+--diversionInformation DiversionInformation ::= localValue 12
+--callDeflection CallDeflection ::= localValue 13
+--callRerouteing CallRerouteing ::= localValue 14
+--divertingLegInformation1 DivertingLegInformation1 ::= localValue 18
+--divertingLegInformation3 DivertingLegInformation3 ::= localValue 19
+--divertingLegInformation2 DivertingLegInformation2 ::= localValue 15
+--invalidDivertedToNr InvalidDivertedToNr ::= localValue 12
+--specialServiceNr SpecialServiceNr ::= localValue 14
+--diversionToServedUserNr DiversionToServedUserNr ::= localValue 15
+--incomingCallAccepted IncomingCallAccepted ::= localValue 23
+--numberOfDiversionsExceeded NumberOfDiversionsExceeded ::= localValue 24
+--notActivated NotActivated ::= localValue 46
+--requestAlreadyAccepted RequestAlreadyAccepted ::= localValue 48
+
+END -- of Diversion-Operations
+
diff --git a/epan/dissectors/asn1/isdn-sup/Embedded-Q931-Types.asn b/epan/dissectors/asn1/isdn-sup/Embedded-Q931-Types.asn
new file mode 100644
index 0000000000..27be2df7b8
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Embedded-Q931-Types.asn
@@ -0,0 +1,11 @@
+Embedded-Q931-Types {itu-t identified-organization etsi(0) 196 embedded-q931-types(7)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS Q931InformationElement;
+
+Q931InformationElement ::= [APPLICATION 0] IMPLICIT OCTET STRING
+
+END -- of Embedded-Q931-Types
diff --git a/epan/dissectors/asn1/isdn-sup/Explicit-Call-Transfer-Operations-and-Errors.asn b/epan/dissectors/asn1/isdn-sup/Explicit-Call-Transfer-Operations-and-Errors.asn
new file mode 100644
index 0000000000..3d054539a5
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Explicit-Call-Transfer-Operations-and-Errors.asn
@@ -0,0 +1,150 @@
+--
+-- EN 300 369-1 V1.2.4 (1998-10)
+--
+Explicit-Call-Transfer-Operations-and-Errors {ccitt identified-organization etsi(0) 369
+version(2) operations-and-errors(1)}
+
+DEFINITIONS ::=
+
+
+BEGIN
+
+
+ EXPORTS
+ ectLinkIdRequest,
+ ectExecute,
+ requestSubaddress,
+ subaddressTransfer,
+ explicitEctExecute,
+ linkIdNotAssignedByNetwork,
+ ectLoopTest,
+ ectInform;
+
+
+ IMPORTS
+ OPERATION,
+ ERROR
+ FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t remote-operations (4) notation (0)}
+
+
+ notAvailable,
+ notSubscribed,
+ resourceUnavailable,
+ supplementaryServiceInteractionNotAllowed,
+ invalidCallState
+ FROM General-Errors
+ {itu-t(0) identified-organization(4) etsi (0) 196 general-errors (2)}
+
+
+ PartySubaddress,
+ PresentedNumberUnscreened
+ FROM Addressing-Data-Elements
+ {itu-t(0) identified-organization(4) etsi (0) 196 addressing-data-elements (6)};
+
+
+ ectExecute OPERATION::=
+ {
+ ERRORS {
+ notAvailable |
+ notSubscribed |
+ invalidCallState |
+ supplementaryServiceInteractionNotAllowed }
+
+ CODE local:6
+ }
+
+ ectInform OPERATION::=
+ {
+ ARGUMENT SEQUENCE {
+ en ENUMERATED {
+ alerting (0),
+ active (1) },
+ redirectionNumber PresentedNumberUnscreened OPTIONAL }
+
+ CODE global:{eCTOID ectInform-operation (5)}
+ }
+
+ ectLinkIdRequest OPERATION::=
+ {
+ RESULT EctLinkIdRequestRes
+ ERRORS {
+ resourceUnavailable }
+
+ CODE global:{eCTOID ectLinkIdRequest-operation (4)}
+ }
+
+ EctLinkIdRequestRes ::= LinkId
+
+ ectLoopTest OPERATION::=
+ {
+ ARGUMENT
+ CallTransferIdentity
+
+
+ RESULT
+ LoopResult
+
+
+ ERRORS {
+ notAvailable }
+
+ CODE global:{eCTOID ectLoopTest-operation (6)}
+ }
+
+
+ explicitEctExecute OPERATION::=
+ {
+ ARGUMENT
+ LinkId
+
+ ERRORS {
+ notAvailable |
+ notSubscribed |
+ invalidCallState |
+ supplementaryServiceInteractionNotAllowed |
+ linkIdNotAssignedByNetwork }
+
+ CODE global:{eCTOID explicitEctExecute-operation (1)}
+ }
+
+
+ requestSubaddress OPERATION::=
+ {
+ CODE global:{eCTOID requestSubAddress-operation (2)}
+ }
+
+
+ subaddressTransfer OPERATION::=
+ {
+ ARGUMENT PartySubaddress
+
+ CODE global:{eCTOID subaddressTransfer-operation (3)}
+ }
+
+ CallTransferIdentity ::= INTEGER (-128..127)
+ LinkId ::= INTEGER (-32768..32767)
+
+ LoopResult ::=
+ ENUMERATED {
+ insufficientInformation (0),
+ noLoopExists (1),
+ simultaneousTransfer (2) }
+
+
+ eCTOID OBJECT IDENTIFIER ::= {itu-t(0) identified-organization(4) etsi (0) 369
+ operation-and-errors (1)}
+
+
+ linkIdNotAssignedByNetwork ERROR ::= {CODE global:{eCTOID linkIdNotAssignedByNetwork-error (21)}}
+
+
+-- ectExecute EctExecute ::= localValue 6
+ explicitEctExecute ExplicitEctExecute ::= globalValue {eCTOID explicitEctExecute-operation(1)}
+ requestSubaddress RequestSubaddress ::= globalValue {eCTOID requestSubaddress-operation (2)}
+ subaddressTransfer SubaddressTransfer ::= globalValue {eCTOID subaddressTransfer-operation(3)}
+ ectLinkIdRequest EctLinkIdRequest ::= globalValue {eCTOID ectLinkIdRequest-operation (4)}
+ ectInform EctInform ::= globalValue {eCTOID ectInform-operation (5)}
+ ectLoopTest EctLoopTest ::= globalValue {eCTOID ectLoopTest-operation (6)}
+ linkIdNotAssignedByNetwork LinkIdNotAssignedByNetwork ::= globalValue {eCTOID linkIdNotAssignedByNetwork-error(21)}
+END --Explicit-Call-Transfer-Operations-And-Errors
diff --git a/epan/dissectors/asn1/isdn-sup/Freephone-Operations.asn b/epan/dissectors/asn1/isdn-sup/Freephone-Operations.asn
new file mode 100644
index 0000000000..989e687775
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Freephone-Operations.asn
@@ -0,0 +1,112 @@
+--
+-- EN 300 210-1 Ver. 1.2.4
+--
+Freephone-Operations {ccitt identified-organization etsi(0) 210 operations-and-errors(1)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS CallFPH, Monitor-T-FPH, Free-T-FPH, Call-T-FPH;
+
+IMPORTS OPERATION, ERROR
+ FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t remote-operations (4) notation (0)}
+
+ notAvailable, notImplemented
+ FROM General-Errors
+ {itu-t(0) identified-organization(4) etsi(0) 196 general-errors(2)}
+
+ PartyNumber
+ FROM Addressing-Data-Elements
+ {itu-t(0) identified-organization(4) etsi(0) 196 addressing-data-elements(6)}
+
+ Q931InformationElement
+ FROM Embedded-Q931-Types
+ {itu-t(0) identified-organization(4) etsi(0) 196 embedded-q931-types(7)};
+
+--CallFPH ::= OPERATION
+-- ARGUMENT calledFreephoneNr CalledFreephoneNr - - optional
+
+ callFPH OPERATION ::=
+ {
+ ARGUMENT CalledFreephoneNrArg -- optional
+
+ CODE global:{fPHOID callFPH-operation (1)}
+ }
+
+CalledFreephoneNrArg ::= CalledFreephoneNr
+
+--Monitor-T-FPH ::= OPERATION
+-- ARGUMENT SEQUENCE {
+-- q931InfoElement Q931InformationElement,
+-- servedUserDestination PartyNumber,
+-- queueIdentity QueueIdentity OPTIONAL}
+-- RESULT
+-- ERRORS { notAvailable,
+-- notImplemented}
+
+-- the Bearer capability, High layer compatibility (optional) and Low layer compatibility
+-- (optional) information elements shall be embedded in q931InfoElement.
+
+ monitor-T-FPH OPERATION ::=
+ {
+ ARGUMENT Monitor-T-FPHArg
+
+ ERRORS { notAvailable|
+ notImplemented}
+
+ CODE global:{fPHOID monitor-T-FPH-operation(2)}
+ }
+
+Monitor-T-FPHArg ::= SEQUENCE {
+ q931InfoElement Q931InformationElement,
+ servedUserDestination PartyNumber,
+ queueIdentity QueueIdentity OPTIONAL}
+
+--Free-T-FPH ::= OPERATION
+-- ARGUMENT SEQUENCE {
+-- servedUserDestination PartyNumber,
+-- fPHReference FPHReference}
+--
+ free-T-FPH OPERATION ::=
+ {
+ ARGUMENT Free-T-FPHArg
+
+ CODE global:{fPHOID free-T-FPH-operation(3)}
+ }
+
+ Free-T-FPHArg ::= SEQUENCE {
+ servedUserDestination PartyNumber,
+ fPHReference FPHReference}
+
+--Call-T-FPH ::= OPERATION
+-- ARGUMENT SEQUENCE {
+-- fPHReference FPHReference,
+-- calledFreephoneNr CalledFreephoneNr OPTIONAL}
+
+ call-T-FPH OPERATION ::=
+ {
+ ARGUMENT Call-T-FPHArg
+
+ CODE global:{fPHOID call-T-FPH-operation(4)}
+ }
+
+ Call-T-FPHArg ::= SEQUENCE {
+ fPHReference FPHReference,
+ calledFreephoneNr CalledFreephoneNr OPTIONAL}
+
+FPHReference ::= INTEGER (0..127)
+CalledFreephoneNr ::= PartyNumber
+QueueIdentity ::= INTEGER (0..127)
+
+fPHOID OBJECT IDENTIFIER ::= {itu-t(0) identified-organization(4) etsi(0) 210
+ freephone-operations(1)}
+
+--callFPH CallFPH ::= globalValue {fPHOID callFPH-operation(1)}
+--monitor-T-FPH Monitor-T-FPH ::= globalValue {fPHOID monitor-T-FPH-operation(2)}
+--free-T-FPH Free-T-FPH ::= globalValue {fPHOID free-T-FPH-operation(3)}
+--call-T-FPH Call-T-FPH ::= globalValue {fPHOID call-T-FPH-operation(4)}
+
+END -- Freephone-Operations
+
diff --git a/epan/dissectors/asn1/isdn-sup/General-Errors.asn b/epan/dissectors/asn1/isdn-sup/General-Errors.asn
new file mode 100644
index 0000000000..fe0d05f8dc
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/General-Errors.asn
@@ -0,0 +1,65 @@
+--
+-- EN 300 196-1 Ver. 1.3.2
+--
+
+General-Errors {itu-t identified-organization etsi(0) 196 general-errors(2)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS notSubscribed, notAvailable, notImplemented, invalidServedUserNr,
+ invalidCallState, basicServiceNotProvided, notIncomingCall,
+ supplementaryServiceInteractionNotAllowed, resourceUnavailable;
+
+IMPORTS ERROR
+ FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)};
+
+notSubscribed ERROR ::= { CODE local: 0}
+
+
+ -- The requested service or function has not been subscribed for the basic service, and
+ -- optionally the served user's ISDN number, included in the activation invoke component.
+ -- Alternatively the basic service may not have been subscribed.
+
+
+notAvailable ERROR ::= { CODE local: 3}
+
+ -- The requested supplementary service or function is not available for the basic service,
+ -- and optionally the served user's ISDN number (e.g. temporary fault).
+
+notImplemented ERROR ::= { CODE local: 4}
+
+ -- The supplementary service or function requested is not implemented for the basic
+ -- service, and optionally the served user's ISDN number (e.g. service not provided).
+
+invalidServedUserNr ERROR ::= { CODE local: 6}
+
+ -- The served user's number provided is not a valid number.
+
+invalidCallState ERROR ::= { CODE local: 7}
+
+ -- The supplementary service or function cannot be requested in the current basic call state
+ -- or auxiliary state.
+
+basicServiceNotProvided ERROR ::= { CODE local: 8}
+
+ -- The served user has not subscribed to the basic service (bearer and/or teleservice) for
+ -- which the supplementary service or function was requested.
+
+notIncomingCall ERROR ::= { CODE local: 9}
+
+ -- The supplementary service or function was not requested for an incoming call.
+
+supplementaryServiceInteractionNotAllowed ERROR ::= { CODE local: 10}
+
+ -- The performance of the requested supplementary service or function is prohibited
+ -- by another supplementary service or function.
+
+resourceUnavailable ERROR ::= { CODE local: 11}
+
+ -- The resources required to perform adequately the requested supplementary service or
+ -- function are not available.
+
+END -- of General-Errors
diff --git a/epan/dissectors/asn1/isdn-sup/MCID-Operations.asn b/epan/dissectors/asn1/isdn-sup/MCID-Operations.asn
new file mode 100644
index 0000000000..2f8da479f3
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/MCID-Operations.asn
@@ -0,0 +1,38 @@
+--
+-- EN 300 130-1 Ver. 1.2.4
+--
+
+MCID-Operations {ccitt identified-organization etsi (0) 130 operations-and-errors (1)}
+
+DEFINITIONS ::=
+BEGIN
+
+EXPORTS MCIDRequest;
+
+
+IMPORTS
+ --OPERATION
+ --FROM Remote-Operation-Notation
+ -- {joint-iso-ccitt remote-operations(4) notation (0)}
+ notAvailable,
+ notSubscribed,
+ invalidCallState,
+ notIncomingCall,
+ supplementaryServiceInteractionNotAllowed
+ FROM General-Errors
+ {ccitt identified-organization etsi (0) 196 general errors};
+
+
+
+ mCIDRequest OPERATION ::= {
+ RETURN RESULT FALSE
+ ERRORS {
+ notAvailable |
+ invalidCallState |
+ notIncomingCall |
+ supplementaryServiceInteractionNotAllowed}
+ CODE local: 3}
+
+-- mCIDRequest MCIDRequest ::= 3
+
+END -- of MCID-Operations
diff --git a/epan/dissectors/asn1/isdn-sup/MLPP-Operations-And-Errors.asn b/epan/dissectors/asn1/isdn-sup/MLPP-Operations-And-Errors.asn
new file mode 100644
index 0000000000..193232ad14
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/MLPP-Operations-And-Errors.asn
@@ -0,0 +1,135 @@
+-- MLPP-Operations-And-Errors.asn
+--
+-- Taken from ITU Recommendation Q.955.3 (03/93)
+--
+
+-- Begin MLPP-operations definitions
+MLPP-operations {ccitt recommendation q 955 mlpp (3) operations-and-errors(1)}
+DEFINITIONS ::=
+BEGIN
+EXPORTS mLPPLFBQuery, mLPPCallRequest, mLPPCallPreemption,
+ unauthorizedPrecedenceLevel;
+
+IMPORTS OPERATIONS, ERROR
+ FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)}
+
+ userNotSubscribed, rejectedByNetwork
+ FROM General-Error-List
+ {ccitt recommendation q 950 general-error-list (1)}
+
+ Q931InformationElement
+ FROM Embedded-Q931-Types
+ {ccitt identified-organization etsi(0) 196 embedded-q931-types(7)};
+
+-- Begin mLPPLFBquery operation
+mLPPLFBQuery OPERATION ::= {
+ ARGUMENT MLPPLFBArg
+ RESULT MLPPLFBResp
+ ERRORS {userNotSubscribed | rejectedByNetwork}
+ CODE local: 24
+}
+
+MLPPLFBArg ::= SEQUENCE {mlppParams MLPPParams, ieArg IEArg}
+
+MLPPParams ::= SEQUENCE {
+ precLevel PrecLevel, lfbIndictn LFBIndictn, mlppSvcDomn MLPPSvcDomn
+}
+
+PrecLevel ::= ENUMERATED {
+ flashOverride(0), flash(1), immediate(2), priority(3), routine(4)
+}
+-- Prec level identifies the precedence level of the MLPP call.
+
+LFBIndictn ::= ENUMERATED {
+ ifbAllowed(0), ifbNotAllowed(1), pathReserved(2)
+}
+-- LFBIndictri is coded for values. as indicated.
+
+MLPPSvcDomn ::= OCTET STRING(5)
+-- Initial two octets provide the International ID. while the
+-- following three octets provide the MLPP Domain
+-- identification.
+
+IEArg ::= Q931InformationElement
+-- Bearer capability. Calling party number. Called party
+-- number. and Channel identification information elements in
+-- the IE arg shall be as defined in Q.931.
+
+MLPPLFBResp ::= SEQUENCE {statusQuery StatusQuery, location Location}
+-- The MLPP DSS1 LFB query response contains two
+-- parameters. StatusQuery and Location.
+
+StatusQuery ::= ENUMERATED {
+ success(1),
+ -- Many cases as described in the optional MLPP LFB
+ failure(2),
+ -- Many cases as described in the MLPP procedure with LFB
+ -- option.
+ bearerCapabilityNotAuthorized(3),
+ -- bearer capability check failure. not authorized
+ bearerCapabilityNotlmplemented(4),
+ -- bearer capability check failure. not implemented
+ bearerCapabilityNotAvailable(5),
+ -- bearer capability check failure. not available
+ pathReservationDenied(6)
+ -- circuit cannot be reserved at the far end
+}
+
+Location ::= Q931InformationElement
+-- a bit string which conforms to Octect 3 of the Cause
+-- information element as defined in 0.931. except that bit 8 is
+-- marked as a spare.
+
+-- End of mLPPLFBquery operation.
+
+-- Begin mLPPCallRequest operation
+mLPPCallRequest OPERATION ::= {
+ ARGUMENT MLPPParams
+ RESULT StatusRequest
+ ERRORS {userNotSubscribed | rejectedByNetwork | unauthorizedPrecedenceLevel}
+ CODE local: 25
+}
+
+StatusRequest ::= ENUMERATED {
+ successCalledUserMLPPSubscriber(1),
+ -- Called user is an MLPP subscriber.
+ successCalledUserNotMLPPSubscriber(2),
+ -- Called user is not an MLPP subscriber.
+ failureCaseA(3),
+ -- MLPP call from the calling user is a precedence call and
+ -- cannot be completed.
+ failureCaseB(4)
+ -- MLPP call from the calling user or MLPP call between two
+ -- MLPP subscribers experiences preemption.
+}
+-- End MLPPCallRequest operation.
+
+-- Begin mLPPCallpreemption operation
+mLPPCallPreemption OPERATION ::= {
+ ARGUMENT PreemptParams
+ --RESULT
+ --ERRORS
+ CODE local: 26
+}
+
+PreemptParams ::= ENUMERATED {
+ circuitReservedForReuse(1),
+ -- Circuit of the to be preempted call is reserved for reuse
+ circuitNotReservedForReuse(2)
+ -- Circuit of the to be preempted call is not reserved for reuse
+}
+-- End mLPPCallpreemption operation
+
+unauthorizedPrecedenceLevel ERROR ::= {
+ CODE local: 44
+}
+-- An indication that the calling user has exceeded the authorized. maximum
+-- precedence level.
+
+--mLPPLFBQuery MLPPLFBQuery ::= 24
+--mLPPCallRequest MLPPCallRequest ::= 25
+--mLPPCALLPreemption MLPPCALLPreemption ::= 26
+--unauthorizedPrecedenceLevel UnauthorizedPrecedenceLevel ::= 44
+END
+-- End MLPP-operations. \ No newline at end of file
diff --git a/epan/dissectors/asn1/isdn-sup/MWI-Operations-and-Errors.asn b/epan/dissectors/asn1/isdn-sup/MWI-Operations-and-Errors.asn
new file mode 100644
index 0000000000..3cd6f13f8c
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/MWI-Operations-and-Errors.asn
@@ -0,0 +1,144 @@
+--
+-- prETS 300 745-1
+--
+MWI-Operations-and-Errors {itu-t(0) identified-organization(4) etsi(0) 745 operations-and-errors(1)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS MWIActivate,
+ MWIDeactivate,
+ MWIIndicate,
+ InvalidReceivingUserNr,
+ ReceivingUserNotSubscribed,
+ ControllingUserNotRegistered,
+ MaxNumOfControllingUsersReached,
+ MaxNumOfActiveInstancesReached
+;
+IMPORTS OPERATION,
+ ERROR
+ FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)}
+
+ notSubscribed,
+ supplementaryServiceInteractionNotAllowed,
+ resourceUnavailable,
+ invalidServedUserNr
+ FROM General-Errors
+ {itu-t(0) identified-organization(4) etsi(0) 196 general-errors(2)}
+
+ BasicService
+ From Basic-Service-Elements
+ {itu-t(0) identified-organization(4) etsi(0) 196 basic-service-elements(8)}
+
+ PartyNumber
+ FROM Addressing-Data-Element
+ {itu-t(0) identified-organization(4) etsi(0) 196 addressing-data-elements(6)}
+;
+
+ mWIActivate OPERATION::=
+ {
+ ARGUMENT SEQUENCE {
+ receivingUserNr PartyNumber,
+ basicService BasicService,
+ controllingUserNr [1] PartyNumber OPTIONAL,
+ numberOfMessages [2] MessageCounter OPTIONAL,
+ controllingUserProvidedNr [3] PartyNumber OPTIONAL,
+ time [4] GeneralizedTime OPTIONAL,
+ messageId [5] MessageID OPTIONAL,
+ mode [6] InvocationMode OPTIONAL }
+
+ ERRORS {
+ notSubscribed |
+ supplementaryServiceInteractionNotAllowed |
+ resourceUnavailable |
+ invalidReceivingUserNr |
+ invalidServedUserNr |
+ receivingUserNotSubscribed |
+ controllingUserNotRegistered |
+ indicationNotDelivered |
+ maxNumOfControllingUsersReached |
+ maxNumOfActiveInstancesReached }
+
+ CODE global:{mWIOID 1}
+ }
+-- End of MWIActivate operation definition
+
+ mWIDeactivate OPERATION::=
+ {
+ ARGUMENT SEQUENCE {
+ receivingUserNr PartyNumber,
+ basicService BasicService,
+ controllingUserNr PartyNumber OPTIONAL,
+ mode InvocationMode OPTIONAL }
+
+ ERRORS {
+ notSubscribed |
+ supplementaryServiceInteractionNotAllowed |
+ resourceUnavailable |
+ invalidReceivingUserNr |
+ invalidServedUserNr |
+ receivingUserNotSubscribed |
+ controllingUserNotRegistered |
+ indicationNotDelivered }
+
+ CODE global:{mWIOID 2}
+ }
+-- End of MWIDeactivate operation definition
+
+ mWIIndicate OPERATION::=
+ {
+ ARGUMENT SEQUENCE {
+ controllingUserNr [1] PartyNumber OPTIONAL,
+ basicService [2] BasicService OPTIONAL,
+ numberOfMessages [3] MessageCounter OPTIONAL,
+ controllingUserProvidedNr [4] PartyNumber OPTIONAL,
+ time [5] GeneralizedTime OPTIONAL,
+ messageId [6] MessageID OPTIONAL }
+
+ CODE global:{mWIOID 3}
+ }
+-- End of MWIIndicate operation definition
+
+ invalidReceivingUserNr ERROR ::= {CODE global:{mWIOID 10}}
+ receivingUserNotSubscribed ERROR ::= {CODE global:{mWIOID 11}}
+ controllingUserNotRegistered ERROR ::= {CODE global:{mWIOID 12}}
+ indicationNotDelivered ERROR ::= {CODE global:{mWIOID 13}}
+ maxNumOfControllingUsersReached ERROR ::= {CODE global:{mWIOID 14}}
+ maxNumOfActiveInstancesReached ERROR ::= {CODE global:{mWIOID 15}}
+
+MessageCounter ::= INTEGER (0..65535)
+
+GeneralizedTime ::= [UNIVERSAL 24] IMPLICIT VisibleString
+
+MessageID ::= SEQUENCE {
+ messageRef MessageRef,
+ status MessageStatus}
+
+MessageRef ::= INTEGER (0..65535)
+
+MessageStatus ::= ENUMERATED (
+ addedMessage (0),
+ removedMessage (1)}
+
+InvocationMode ::= ENUMERATED (
+ deferred (0),
+ immediate (1),
+ combined (2))
+
+mWIOID OBJECT IDENTIFIER ::= {itu-t(0) identified-organization(4) etsi(0) 745
+ operations-and-errors(1)}
+
+mWIActivate MWIActivate ::= globalValue {mWIOID 1}
+mWIDeactivate MWIDeactivate ::= globalValue {mWIOID 2}
+mWIIndicate MWIIndicate ::= globalValue {mWIOID 3}
+
+invalidReceivingUserNr InvalidReceivingUserNr ::= globalValue {mWIOID 10}
+receivingUserNotSubscribed ReceivingUserNotSubscribed ::= globalValue {mWIOID 11}
+controllingUserNotRegistered ControllingUserNotRegistered ::= globalValue {mWIOID 12}
+indicationNotDelivered IndicationNotDelivered ::= globalValue {mWIOID 13}
+maxNumOfControllingUsersReached MaxNumOfControllingUsersReached ::= globalValue {mWIOID 14}
+maxNumOfActiveInstancesReached MaxNumOfActiveInstancesReached ::= globalValue {mWIOID 15}
+
+END -- MWI-Operations-and-Errors
diff --git a/epan/dissectors/asn1/isdn-sup/Makefile.am b/epan/dissectors/asn1/isdn-sup/Makefile.am
new file mode 100644
index 0000000000..72d28e600b
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Makefile.am
@@ -0,0 +1,23 @@
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+include ../Makefile.preinc
+include Makefile.common
+include ../Makefile.inc
+
diff --git a/epan/dissectors/asn1/isdn-sup/Makefile.common b/epan/dissectors/asn1/isdn-sup/Makefile.common
new file mode 100644
index 0000000000..9634daa9f9
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Makefile.common
@@ -0,0 +1,65 @@
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+PROTOCOL_NAME = isdn-sup
+
+EXPORT_FILES = $(PROTOCOL_NAME)-exp.cnf
+
+EXT_ASN_FILE_LIST =
+
+ASN_FILE_LIST = \
+ Addressing-Data-Elements.asn \
+ Basic-Service-Elements.asn \
+ Embedded-Q931-Types.asn \
+ General-Errors.asn \
+ Advice-of-Charge-Operations.asn \
+ Closed-User-Group-Service-Operations.asn \
+ Conference-Add-On-Operations.asn \
+ Diversion-Operations.asn \
+ MCID-Operations.asn \
+ User-To-User-Signalling-Operations.asn \
+ Freephone-Operations.asn \
+ MLPP-Operations-And-Errors.asn
+
+INCLUDED_ASN_FILE_LIST = \
+ CCBS-Operations-and-Errors.asn \
+ CCBS-private-networks-Operations-and-Errors.asn \
+ Explicit-Call-Transfer-Operations-and-Errors.asn \
+ MWI-Operations-and-Errors.asn \
+ Outgoing-Call-Barring-Operations-and-Errors.asn \
+ Set-Operations-and-Errors.asn \
+ Three-Party-Operations.asn
+
+# The packet-$(PROTOCOL_NAME)-template.h and $(PROTOCOL_NAME).asn
+# files do not exist for all protocols: Please add/remove as required.
+EXTRA_DIST = \
+ $(EXTRA_DIST_COMMON) \
+ $(ASN_FILE_LIST) \
+ $(INCLUDED_ASN_FILE_LIST) \
+ packet-$(PROTOCOL_NAME)-template.c \
+ $(PROTOCOL_NAME).cnf
+
+SRC_FILES = \
+ $(EXTRA_DIST) \
+ $(EXT_ASN_FILE_LIST)
+
+A2W_FLAGS= -b
+
+EXTRA_CNF =
+
diff --git a/epan/dissectors/asn1/isdn-sup/Makefile.nmake b/epan/dissectors/asn1/isdn-sup/Makefile.nmake
new file mode 100644
index 0000000000..d1c6fb064a
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Makefile.nmake
@@ -0,0 +1,30 @@
+## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+
+include ../../../../config.nmake
+include ../Makefile.preinc.nmake
+include Makefile.common
+include ../Makefile.inc.nmake
+
+checkapi:
+ $(PERL) ../../tools/checkAPIs.pl -build \
+ $(PROTOCOL_NAME).cnf \
+ packet-$(PROTOCOL_NAME)-template.c
diff --git a/epan/dissectors/asn1/isdn-sup/Outgoing-Call-Barring-Operations-and-Errors.asn b/epan/dissectors/asn1/isdn-sup/Outgoing-Call-Barring-Operations-and-Errors.asn
new file mode 100644
index 0000000000..03640686e2
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Outgoing-Call-Barring-Operations-and-Errors.asn
@@ -0,0 +1,201 @@
+--
+-- EN 301 001-1 Ver. 1.2.2
+--
+Outgoing-Call-Barring-Operations-and-Errors {itu-t(0) identified-organization(4) etsi(0) 1001
+ operations-and-errors(1)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS
+ ActivationOcb,
+ ActivationStatusNotificationOcb,
+ DeactivationOcb,
+ DeactivationStatusNotificationOcb,
+ InterrogationOcb,
+ DisableOcb,
+ OcbInvoked,
+ InvalidBarringProgram,
+ NoBarringProgram
+;
+
+IMPORTS
+ OPERATION, ERROR
+ FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)}
+
+ PartyNumber
+ FROM Addressing-Data-Elements
+ {itu-t(0) identified-organization(4) etsi(0) 196 addressing-data-elements(6)}
+
+ BasicService
+ FROM Basic-Service-Elements
+ {itu-t(0) identified-organization(4) etsi(0) 196 basic-service-elements(8)}
+
+ notSubscribed, notAvailable, basicServiceNotProvided, invalidServedUserNr,
+ resourceUnavailable, notImplemented, supplementaryServiceInteractionNotAllowed
+ FROM General-Errors
+ {itu-t(0) identified-organization(4) etsi(0) 196 general-errors(2)}
+
+ NotActivated
+ FROM Diversion-Operations
+ {itu-t(0) identified-organization(4) etsi(0) 207 operations-and errors(1)}
+
+ Pin, invalidPin, userControlBlocked, changeOfPinRequired
+ FROM Pin-Set-Operations-and-Errors
+ {itu-t(0) identified-organization(4) etsi(0) 1002 operations-and-errors(1)}
+;
+
+ activationOcb OPERATION::=
+ {
+ ARGUMENT
+ ActivationOcbArgument
+
+ ERRORS {
+ notSubscribed |
+ notAvailable |
+ basicServiceNotProvided |
+ invalidServedUserNr |
+ invalidPin |
+ invalidBarringProgram |
+ noBarringProgram |
+ userControlBlocked |
+ supplementaryServiceInteractionNotAllowed |
+ resourceUnavailable |
+ changeOfPinRequired }
+
+ CODE global:{oCBOID 1}
+ }
+
+ deactivationOcb OPERATION::=
+ {
+ ARGUMENT
+ DeactivationOcbArgument
+
+ ERRORS {
+ notSubscribed |
+ notAvailable |
+ basicServiceNotProvided |
+ invalidServedUserNr |
+ notActivated |
+ invalidPin |
+ userControlBlocked |
+ changeOfPinRequired }
+
+ CODE global:{oCBOID 2}
+ }
+
+ interrogationOcb OPERATION::=
+ {
+ ARGUMENT
+ InterrogationOcbArgument
+
+
+ RESULT
+ IntOcbResultList
+
+
+ ERRORS {
+ notSubscribed |
+ notAvailable |
+ basicServiceNotProvided |
+ invalidServedUserNr }
+
+ CODE global:{oCBOID 5}
+ }
+
+ activationStatusNotificationOcb OPERATION::=
+ {
+ ARGUMENT
+ ActStatusNotificationOcbArg
+
+ CODE global:{oCBOID 3}
+ }
+
+ deactivationStatusNotificationOcb OPERATION::=
+ {
+ ARGUMENT
+ DeactStatusNotificationOcbArg
+
+ CODE global:{oCBOID 4}
+ }
+
+ disableOcb OPERATION::=
+ {
+ ARGUMENT
+ Pin
+
+ ERRORS {
+ notImplemented |
+ invalidPin |
+ userControlBlocked |
+ changeOfPinRequired }
+
+ CODE global:{oCBOID 6}
+ }
+
+ ocbInvoked OPERATION::=
+ {
+ CODE global:{oCBOID 7}
+ }
+
+ActivationOcbArgument ::= SEQUENCE {
+ basicService BasicService,
+ pin Pin,
+ barringProgram BarringProgram OPTIONAL,
+ servedUserNr ServedUserNr OPTIONAL}
+
+DeactivationOcbArgument ::= SEQUENCE {
+ basicService BasicService,
+ pin Pin,
+ barringProgram BarringProgram OPTIONAL,
+ servedUserNr ServedUserNr OPTIONAL}
+
+InterrogationOcbArgument ::= SEQUENCE {
+ basicService BasicService,
+ servedUserNr ServedUserNr OPTIONAL}
+
+ActStatusNotificationOcbArg ::= SEQUENCE {
+ basicService BasicService,
+ barringProgram BarringProgram,
+ servedUserNr ServedUserNr}
+
+DeactStatusNotificationOcbArg ::= SEQUENCE {
+ basicService BasicService,
+ barringProgram BarringProgram OPTIONAL,
+ servedUserNr ServedUserNr}
+
+ServedUserNr ::= CHOICE {
+ individualNumber PartyNumber,
+ allNumbers NULL}
+
+IntOcbResultList ::= SET SIZE(0..30) OF IntOcbResult
+
+IntOcbResult ::= SEQUENCE {
+ servedUserNr ServedUserNr,
+ basicService BasicService,
+ barringProgramList BarringProgramList}
+
+BarringProgram ::= INTEGER (0..255)
+BarringProgramList ::= SET SIZE(0...255) OF BarringProgram
+
+invalidBarringProgram ERROR ::={CODE global:{oCBOID 10}}
+noBarringProgram ERROR ::={CODE global:{oCBOID 11}}
+
+oCBOID OBJECT IDENTIFIER ::= {itu-t(0) identified-organization(4) etsi(0) 1001 operations-and-errors(1)}
+
+activationOcb ActivationOcb ::= globalValue {oCBOID 1}
+deactivationOcb DeactivationOcb ::= globalValue {oCBOID 2}
+activationStatusNotificationOcb ActivationStatusNotificationOcb ::= globalValue {oCBOID 3}
+deactivationStatusNotificationOcb DeactivationStatusNotificationOcb ::= globalValue {oCBOID 4}
+interrogationOcb InterrogationOcb ::= globalValue {oCBOID 5}
+disableOcb DisableOcb ::= globalValue {oCBOID 6}
+ocbInvoked OcbInvoked ::= globalValue {oCBOID 7}
+invalidBarringProgram InvalidBarringProgram ::= globalValue {oCBOID 10}
+noBarringProgram NoBarringProgram ::= globalValue {oCBOID 11}
+
+notActivated NotActivated ::= localValue 46
+
+END -- of Outgoing-Call-Barring-Operations-and-Errors
+
diff --git a/epan/dissectors/asn1/isdn-sup/Set-Operations-and-Errors.asn b/epan/dissectors/asn1/isdn-sup/Set-Operations-and-Errors.asn
new file mode 100644
index 0000000000..47fb381e09
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Set-Operations-and-Errors.asn
@@ -0,0 +1,98 @@
+--
+-- EN 301 002-1 Ver. 1.3.1
+--
+Set-Operations-and-Errors {ITU-T identified-organization etsi(0) 1002 operations-and-errors(1)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS
+ ModifyPin,
+ Pin,
+ Tan,
+ InvalidPin,
+ InvalidTan,
+ PinNotProvided,
+ InvalidNewPin,
+ ChangeOfPinRequired,
+ PrimitivePin,
+ NewPinIsOldPin,
+ UserControlBlocked;
+
+IMPORTS
+ OPERATION, ERROR
+ FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)}
+
+ PartyNumber
+ FROM Addressing-Data-Elements
+ {itu-t(0) identified-organization(4) etsi(0) 196 addressing-data-elements(6)}
+
+ invalidServedUserNr
+ FROM General-Errors
+ {itu-t(0) identified-organization(4) etsi(0) 196 general-errors(2)};
+
+ModifyPin ::= OPERATION
+ ARGUMENT ModifyPinArgument
+ RESULT
+ ERRORS {InvalidPin,
+ PinNotProvided,
+ InvalidNewPin,
+ invalidServedUserNr,
+ PrimitivePin,
+ NewPinIsOldPin,
+ UserControlBlocked}
+
+PossibleFraudulentPinUse ::= OPERATION
+PossibleFraudulentTanUse ::= OPERATION
+ModifyPinArgument ::= SEQUENCE {
+ oldPin Pin,
+ newPin Pin,
+ servedUserNr PartyNumber}
+
+Pin ::= IA5String (SIZE(4..12)) (FROM ("0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
+ |"A"|"B"|"C"|"D"|"E"|"F"|"G"|"H"|"I"|"J"
+ |"K"|"L"|"M"|"N"|"O"|"P"|"Q"|"R"|"S"|"T"
+ |"U"|"V"|"W"|"X"|"Y"|"Z"
+ |"a"|"b"|"c"|"d"|"e"|"f"|"g"|"h"|"i"|"j"
+ |"k"|"l"|"m"|"n"|"o"|"p"|"q"|"r"|"s"|"t"
+ |"u"|"v"|"w"|"x"|"y"|"z"))
+
+Tan ::= IA5String (SIZE(6..12)) (FROM ("0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
+ |"A"|"B"|"C"|"D"|"E"|"F"|"G"|"H"|"I"|"J"
+ |"K"|"L"|"M"|"N"|"O"|"P"|"Q"|"R"|"S"|"T"
+ |"U"|"V"|"W"|"X"|"Y"|"Z"
+ |"a"|"b"|"c"|"d"|"e"|"f"|"g"|"h"|"i"|"j"
+ |"k"|"l"|"m"|"n"|"o"|"p"|"q"|"r"|"s"|"t"
+ |"u"|"v"|"w"|"x"|"y"|"z"))
+
+
+invalidPin ERROR ::= {CODE global:{sETOID 10}}
+invalidTan ERROR ::= {CODE global:{sETOID 11}}
+pinNotProvided ERROR ::= {CODE global:{sETOID 17}}
+invalidNewPin ERROR ::= {CODE global:{sETOID 12}}
+userControlBlocked ERROR ::= {CODE global:{sETOID 13}}
+changeOfPinRequired ERROR ::= {CODE global:{sETOID 14}}
+primitivePin ERROR ::= {CODE global:{sETOID 15}}
+newPinIsOldPin ERROR ::= {CODE global:{sETOID 16}}
+
+
+sETOID OBJECT IDENTIFIER ::= {itu-t(0) identified-organization(4) etsi(0) 1002 operations-and-errors(1)}
+
+modifyPin ModifyPin ::= globalValue {sETOID 1}
+possibleFraudulentPinUse PossibleFraudulentPinUse ::= globalValue {sETOID 2}
+possibleFraudulentTanUse PossibleFraudulentTanUse ::= globalValue {sETOID 3}
+
+invalidPin InvalidPin ::= globalValue {sETOID 10}
+pinNotProvided PinNotProvided ::= globalValue {sETOID 11}
+invalidNewPin InvalidNewPin ::= globalValue {sETOID 12}
+userControlBlocked UserControlBlocked ::= globalValue {sETOID 13}
+changeOfPinRequired ChangeOfPinRequired ::= globalValue {sETOID 14}
+primitivePin PrimitivePin ::= globalValue {sETOID 15}
+newPinIsOldPin NewPinIsOldPin ::= globalValue {sETOID 16}
+invalidTan InvalidTan ::= globalValue {sETOID 17}
+
+
+END -- of Set-Function-Operations-and-Errors
+
diff --git a/epan/dissectors/asn1/isdn-sup/Three-Party-Operations.asn b/epan/dissectors/asn1/isdn-sup/Three-Party-Operations.asn
new file mode 100644
index 0000000000..5704d476fe
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/Three-Party-Operations.asn
@@ -0,0 +1,53 @@
+--
+-- EN 300 188-1 V1.2.4 (1998-06)
+--
+Three-Party-Operations {ccitt identified-organization etsi (0) 188 operations-and-types (1)}
+
+DEFINITIONS EXPLICIT TAGS ::=
+
+BEGIN
+
+EXPORTS
+ begin3PTY,
+ end3PTY;
+
+IMPORTS
+ OPERATION
+ FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t remote-operations (4) notation (0)}
+
+
+ notSubscribed,
+ notAvailable,
+ invalidCallState,
+ resourceUnavailable,
+ supplementaryServiceInteractionNotAllowed
+ FROM General-Errors
+ {itu-t identified-organization etsi (0) 196 general-errors (2)};
+
+ begin3PTY OPERATION ::=
+ {
+ ERRORS {
+ notSubscribed |
+ notAvailable |
+ invalidCallState |
+ resourceUnavailable |
+ supplementaryServiceInteractionNotAllowed }
+ -- ETS 300 188, aug 1993 does not provide procedures for the generation
+ -- of the error 'notAvailable'
+
+ CODE local:4
+ }
+
+
+ end3PTY OPERATION ::=
+ {
+ ERRORS {
+ invalidCallState }
+
+ CODE local:5
+ }
+
+
+
+END \ No newline at end of file
diff --git a/epan/dissectors/asn1/isdn-sup/User-To-User-Signalling-Operations.asn b/epan/dissectors/asn1/isdn-sup/User-To-User-Signalling-Operations.asn
new file mode 100644
index 0000000000..05269a43a8
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/User-To-User-Signalling-Operations.asn
@@ -0,0 +1,48 @@
+--
+-- EN 300 286-1 Ver. 1.2.4
+--
+
+User-To-User-Signalling-Operations {ccitt identified-organization etsi(0) 286
+ operations-and-errors(1)}
+
+DEFINITIONS ::=
+BEGIN
+
+EXPORTS UserUserService, RejectedByUser, RejectedByNetwork, Service, Preferred;
+
+IMPORTS OPERATION, ERROR
+ FROM Remote-Operations-Information-Objects
+ {joint-iso-itu-t (2) remote-operations (4) informationObjects(5) version1(0)};
+
+ userUserService OPERATION ::=
+ {
+ ARGUMENT UserUserServiceArg
+ ERRORS {
+ rejectedByTheUser |
+ rejectedByTheNetwork }
+
+ CODE local:1
+ }
+
+UserUserServiceArg ::= SEQUENCE {
+ service [1] IMPLICIT Service,
+ preferred [2] IMPLICIT Preferred }
+
+Service ::= INTEGER {
+ service1 (1),
+ service2 (2),
+ service3 (3)}
+ (1..3)
+
+Preferred ::= BOOLEAN -- True = preferred request
+ -- False = required request
+rejectedByTheNetwork ERROR ::= {CODE local:1}
+rejectedByTheUser ERROR ::= {CODE local:2}
+
+
+--userUserService UserUserService ::= 1
+--rejectedByNetwork RejectedByNetwork ::= 1
+--rejectedByUser RejectedByUser ::= 2
+
+END -- of User-To-User-Signalling-Operations
+
diff --git a/epan/dissectors/asn1/isdn-sup/isdn-sup.cnf b/epan/dissectors/asn1/isdn-sup/isdn-sup.cnf
new file mode 100644
index 0000000000..adf1092715
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/isdn-sup.cnf
@@ -0,0 +1,81 @@
+# isdn-sup.cnf
+# isdn_sup conformation file
+# 2013 Anders Broman
+
+#.OPT
+BER
+GROUP_BY_PROT
+-o isdn-sup
+#.END
+
+#.EXPORTS EXTERN VALS_WITH_TABLE
+
+
+#.MODULE
+Diversion-Operations isdn-sup
+MCID-Operations isdn-sup
+Closed-User-Group-Service-Operations isdn-sup
+Advice-of-Charge-Operations isdn-sup
+MLPP-operations isdn-sup
+
+#.PDU
+
+OPERATION.&ArgumentType
+OPERATION.&ResultType
+
+#.END
+
+#.NO_EMIT
+PresentedAddressUnscreened
+PresentedNumberScreened
+NumberScreened
+#.END
+
+#.TYPE_RENAME
+AOCDChargingUnitInfo/specificChargingUnits AOCDSpecificChargingUnits
+AOCDCurrencyInfo/specificCurrency AOCDSpecificCurrency
+AOCEChargingUnitInfo/cc AOCEChargingUnitCc
+AOCEChargingUnitInfo/cc/specificChargingUnits AOCECcSpecificChargingUnits
+AOCECurrencyInfo/cc AOCECurrencyCc
+AOCECurrencyInfo/cc/specificCurrency AOCECcSpecificCurrency
+AOCSCurrencyInfo/chargingtype/specificCurrency AOCSChargingTypeSpecificCurrency
+RecordedUnits/cc RecoredUnitsCc
+#.END
+
+#.FIELD_RENAME
+AOCDChargingUnitInfo/specificChargingUnits aocdspecificchargingunits
+AOCDCurrencyInfo/specificCurrency aocdspecificCurrency
+AOCEChargingUnitInfo/cc aocechargingunitcc
+AOCEChargingUnitInfo/cc/specificChargingUnits aoceccspecificchargingunits
+AOCECurrencyInfo/cc aocecurrencycc
+AOCECurrencyInfo/cc/specificCurrency aoceccspecificCurrency
+AOCSCurrencyInfo/chargingtype/specificCurrency aocschargingtypespecificCurrency
+PresentedAddressScreened/presentationAllowedAddress presentationallowedaddressscreened
+PresentedAddressScreened/presentationRestrictedAddress presentationrestrictedaddressscreened
+PresentedNumberScreened/presentationAllowedNumber presentationallowednumberscreened
+PresentedNumberScreened/presentationRestrictedNumber presentationrestrictednumberscreened
+RecordedUnits/cc recoredunitscc
+#.END
+
+#.TABLE10_BODY OPERATION.#&operationCode.local
+ { %(&operationCode)3s, "%(_name)s" },
+#.END
+
+#.TABLE11_BODY OPERATION.&operationCode.local
+ /* %(_name)-24s */ { %(&operationCode)3s, %(_argument_pdu)s, %(_result_pdu)s },
+#.END
+
+#.TABLE31_BODY OPERATION.&operationCode.global
+ /* %(_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
+
+#.TYPE_ATTR
+#.END
diff --git a/epan/dissectors/asn1/isdn-sup/packet-isdn-sup-template.c b/epan/dissectors/asn1/isdn-sup/packet-isdn-sup-template.c
new file mode 100644
index 0000000000..dc8f129551
--- /dev/null
+++ b/epan/dissectors/asn1/isdn-sup/packet-isdn-sup-template.c
@@ -0,0 +1,373 @@
+/* packet-isdn-sup-template.c
+ * Routines for ETSI Integrated Services Digital Network (ISDN)
+ * supplementary services
+ * Copyright 2013, Anders Broman <anders.broman@ericsson.com>
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ * References: ETSI 300 374
+ */
+
+#include "config.h"
+
+#include <epan/packet.h>
+#include <epan/expert.h>
+
+#include "packet-ber.h"
+
+#define PNAME "ISDN supplementary services"
+#define PSNAME "ISDN_SUP"
+#define PFNAME "isdn_sup"
+
+void proto_register_isdn_sup(void);
+void proto_reg_handoff_isdn_sup(void);
+
+#include "packet-isdn-sup-val.h"
+
+/* Initialize the protocol and registered fields */
+static int proto_isdn_sup = -1;
+static int hf_isdn_sup_operation = -1;
+static int hf_isdn_sup_error = -1;
+
+/* Global variables */
+
+#if 0
+/* ROSE context */
+static rose_ctx_t isdn_sup_rose_ctx;
+#endif
+
+typedef struct _isdn_sup_op_t {
+ gint32 opcode;
+ dissector_t arg_pdu;
+ dissector_t res_pdu;
+} isdn_sup_op_t;
+
+typedef struct _isdn_global_sup_op_t {
+ const char* oid;
+ dissector_t arg_pdu;
+ dissector_t res_pdu;
+} isdn_sup_global_op_t;
+
+
+typedef struct isdn_sup_err_t {
+ gint32 errcode;
+ dissector_t err_pdu;
+} isdn_sup_err_t;
+
+static const value_string isdn_sup_str_operation[] = {
+#include "packet-isdn-sup-table10.c"
+ { 0, NULL}
+};
+
+
+static const value_string isdn_sup_str_error[] = {
+#include "packet-isdn-sup-table20.c"
+ { 0, NULL}
+};
+
+static int hf_isdn_sup = -1;
+
+#include "packet-isdn-sup-hf.c"
+
+
+/* Initialize the subtree pointers */
+static gint ett_isdn_sup = -1;
+
+#include "packet-isdn-sup-ett.c"
+
+static expert_field ei_isdn_sup_unsupported_arg_type = EI_INIT;
+static expert_field ei_isdn_sup_unsupported_result_type = EI_INIT;
+static expert_field ei_isdn_sup_unsupported_error_type = EI_INIT;
+
+/* Preference settings default */
+
+/* Global variables */
+
+#include "packet-isdn-sup-fn.c"
+
+static const isdn_sup_op_t isdn_sup_op_tab[] = {
+#include "packet-isdn-sup-table11.c"
+};
+
+
+static const isdn_sup_global_op_t isdn_sup_global_op_tab[] = {
+
+#include "packet-isdn-sup-table31.c"
+};
+
+static const isdn_sup_err_t isdn_sup_err_tab[] = {
+#include "packet-isdn-sup-table21.c"
+};
+
+
+static const isdn_sup_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(isdn_sup_op_tab) - 1; i >= 0; i--)
+ if (isdn_sup_op_tab[i].opcode == opcode)
+ return &isdn_sup_op_tab[i];
+ return NULL;
+}
+
+static const isdn_sup_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(isdn_sup_err_tab) - 1; i >= 0; i--)
+ if (isdn_sup_err_tab[i].errcode == errcode)
+ return &isdn_sup_err_tab[i];
+ return NULL;
+}
+
+/*--- dissect_isdn_sup_arg ------------------------------------------------------*/
+static int
+dissect_isdn_sup_arg(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) {
+ int offset = 0;
+ rose_ctx_t *rctx;
+ gint32 opcode = 0;
+ const gchar *p;
+ const isdn_sup_op_t *op_ptr;
+ proto_item *ti;
+ proto_tree *isdn_sup_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;
+ } else {
+ return offset;
+ }
+ op_ptr = get_op(opcode);
+ if (!op_ptr)
+ return offset;
+
+ ti = proto_tree_add_item(tree, proto_isdn_sup, tvb, offset, -1, ENC_NA);
+ isdn_sup_tree = proto_item_add_subtree(ti, ett_isdn_sup);
+
+ proto_tree_add_uint(isdn_sup_tree, hf_isdn_sup_operation, tvb, 0, 0, opcode);
+ p = try_val_to_str(opcode, VALS(isdn_sup_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);
+ }
+
+ if (op_ptr->arg_pdu)
+ offset = op_ptr->arg_pdu(tvb, pinfo, isdn_sup_tree, NULL);
+ else
+ if (tvb_reported_length_remaining(tvb, offset) > 0) {
+ proto_tree_add_expert(tree, pinfo, &ei_isdn_sup_unsupported_error_type, tvb, offset, -1);
+ offset += tvb_reported_length_remaining(tvb, offset);
+ }
+
+ return offset;
+}
+
+/*--- dissect_isdn_sup_res -------------------------------------------------------*/
+static int
+dissect_isdn_sup_res(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) {
+ gint offset = 0;
+ rose_ctx_t *rctx;
+ gint32 opcode = 0;
+ const gchar *p;
+ const isdn_sup_op_t *op_ptr;
+ proto_item *ti;
+ proto_tree *isdn_sup_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;
+
+ ti = proto_tree_add_item(tree, proto_isdn_sup, tvb, offset, -1, ENC_NA);
+ isdn_sup_tree = proto_item_add_subtree(ti, ett_isdn_sup);
+
+ proto_tree_add_uint(isdn_sup_tree, hf_isdn_sup_operation, tvb, 0, 0, opcode);
+ p = try_val_to_str(opcode, VALS(isdn_sup_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);
+ }
+
+ if (op_ptr->res_pdu)
+ offset = op_ptr->res_pdu(tvb, pinfo, isdn_sup_tree, NULL);
+ else
+ if (tvb_reported_length_remaining(tvb, offset) > 0) {
+ proto_tree_add_expert(tree, pinfo, &ei_isdn_sup_unsupported_result_type, tvb, offset, -1);
+ offset += tvb_reported_length_remaining(tvb, offset);
+ }
+
+ return offset;
+}
+
+
+/*--- dissect_isdn_sup_err ------------------------------------------------------*/
+static int
+dissect_isdn_sup_err(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) {
+ int offset = 0;
+ rose_ctx_t *rctx;
+ gint32 errcode;
+ const isdn_sup_err_t *err_ptr;
+ const gchar *p;
+ proto_item *ti;
+ proto_tree *isdn_sup_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_isdn_sup, tvb, offset, -1, ENC_NA);
+ isdn_sup_tree = proto_item_add_subtree(ti, ett_isdn_sup);
+
+ proto_tree_add_uint(isdn_sup_tree, hf_isdn_sup_error, tvb, 0, 0, errcode);
+ p = try_val_to_str(errcode, VALS(isdn_sup_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, isdn_sup_tree, NULL);
+ else
+ if (tvb_reported_length_remaining(tvb, offset) > 0) {
+ proto_tree_add_expert(tree, pinfo, &ei_isdn_sup_unsupported_error_type, tvb, offset, -1);
+ offset += tvb_reported_length_remaining(tvb, offset);
+ }
+
+ return offset;
+}
+
+
+/*--- proto_reg_handoff_isdn_sup ---------------------------------------*/
+
+void proto_reg_handoff_isdn_sup(void) {
+ int i;
+#if 0
+ dissector_handle_t q931_handle;
+#endif
+ dissector_handle_t isdn_sup_arg_handle;
+ dissector_handle_t isdn_sup_res_handle;
+ dissector_handle_t isdn_sup_err_handle;
+
+#if 0
+ q931_handle = find_dissector("q931");
+#endif
+
+ isdn_sup_arg_handle = create_dissector_handle(dissect_isdn_sup_arg, proto_isdn_sup);
+ isdn_sup_res_handle = create_dissector_handle(dissect_isdn_sup_res, proto_isdn_sup);
+ for (i=0; i<(int)array_length(isdn_sup_op_tab); i++) {
+ dissector_add_uint("q932.ros.etsi.local.arg", isdn_sup_op_tab[i].opcode, isdn_sup_arg_handle);
+ dissector_add_uint("q932.ros.etsi.local.res", isdn_sup_op_tab[i].opcode, isdn_sup_res_handle);
+ }
+
+ for (i=0; i<(int)array_length(isdn_sup_global_op_tab); i++) {
+ if(isdn_sup_global_op_tab->arg_pdu)
+ dissector_add_string("q932.ros.global.arg", isdn_sup_global_op_tab[i].oid, create_dissector_handle(isdn_sup_global_op_tab[i].arg_pdu, proto_isdn_sup));
+ if(isdn_sup_global_op_tab->res_pdu)
+ dissector_add_string("q932.ros.global.res", isdn_sup_global_op_tab[i].oid, create_dissector_handle(isdn_sup_global_op_tab[i].res_pdu, proto_isdn_sup));
+ }
+
+ isdn_sup_err_handle = create_dissector_handle(dissect_isdn_sup_err, proto_isdn_sup);
+
+ for (i=0; i<(int)array_length(isdn_sup_err_tab); i++) {
+ dissector_add_uint("q932.ros.etsi.local.err", isdn_sup_err_tab[i].errcode, isdn_sup_err_handle);
+ }
+
+
+}
+
+void proto_register_isdn_sup(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+ { &hf_isdn_sup,
+ { "isdn_sup", "isdn_sup.1",
+ FT_INT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }
+ },
+ { &hf_isdn_sup_operation,
+ { "Operation", "isdn_sup.operation",
+ FT_UINT8, BASE_DEC, VALS(isdn_sup_str_operation), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_isdn_sup_error,
+ { "Error", "isdn_sup.error",
+ FT_UINT8, BASE_DEC, VALS(isdn_sup_str_error), 0x0,
+ NULL, HFILL }
+ },
+
+#include "packet-isdn-sup-hfarr.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_isdn_sup,
+
+#include "packet-isdn-sup-ettarr.c"
+ };
+
+ static ei_register_info ei[] = {
+ { &ei_isdn_sup_unsupported_arg_type, { "isdn_sup.unsupported.arg_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ARGUMENT TYPE (ETSI sup)", EXPFILL }},
+ { &ei_isdn_sup_unsupported_result_type, { "isdn_sup.unsupported.result_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED RESULT TYPE (ETSI sup)", EXPFILL }},
+ { &ei_isdn_sup_unsupported_error_type, { "isdn_sup.unsupported.error_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ERROR TYPE (ETSI sup)", EXPFILL }},
+ };
+
+ expert_module_t* expert_isdn_sup;
+
+ /* Register protocol */
+ proto_isdn_sup = proto_register_protocol(PNAME, PSNAME, PFNAME);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_isdn_sup, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+ expert_isdn_sup = expert_register_protocol(proto_isdn_sup);
+ expert_register_field_array(expert_isdn_sup, ei, array_length(ei));
+}