diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-10 20:34:10 +0000 |
commit | e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch) | |
tree | 68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/isdn-sup | |
parent | Initial commit. (diff) | |
download | wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip |
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/asn1/isdn-sup')
22 files changed, 2788 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 00000000..f2f6ad43 --- /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 00000000..df1b7e74 --- /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 00000000..7f11a6cb --- /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 00000000..66c19c72 --- /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 00000000..61712b73 --- /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 00000000..0c13947a --- /dev/null +++ b/epan/dissectors/asn1/isdn-sup/CMakeLists.txt @@ -0,0 +1,49 @@ +# CMakeLists.txt +# +# Wireshark - Network traffic analyzer +# By Gerald Combs <gerald@wireshark.org> +# Copyright 1998 Gerald Combs +# +# SPDX-License-Identifier: GPL-2.0-or-later +# + +set( PROTOCOL_NAME 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 00000000..db63f8fe --- /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 00000000..6fb2c17c --- /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 00000000..9db186c0 --- /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 00000000..27be2df7 --- /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 00000000..3d054539 --- /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 00000000..989e6877 --- /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 00000000..fe0d05f8 --- /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 00000000..2f8da479 --- /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 00000000..193232ad --- /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 00000000..3cd6f13f --- /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/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 00000000..03640686 --- /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 00000000..47fb381e --- /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 00000000..5704d476 --- /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 00000000..05269a43 --- /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 00000000..adf10927 --- /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 00000000..4b0c9eb6 --- /dev/null +++ b/epan/dissectors/asn1/isdn-sup/packet-isdn-sup-template.c @@ -0,0 +1,362 @@ +/* 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 + * + * SPDX-License-Identifier: GPL-2.0-or-later + * 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); + +static dissector_handle_t isdn_sup_arg_handle; +static dissector_handle_t isdn_sup_res_handle; +static dissector_handle_t isdn_sup_err_handle; + +#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; + q931_handle = find_dissector("q931"); +#endif + + 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[i].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[i].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)); + } + + 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[] = { +#if 0 + { &ei_isdn_sup_unsupported_arg_type, { "isdn_sup.unsupported.arg_type", PI_UNDECODED, PI_WARN, "UNSUPPORTED ARGUMENT TYPE (ETSI sup)", EXPFILL }}, +#endif + { &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)); + + /* Register dissectors */ + isdn_sup_arg_handle = register_dissector(PFNAME "_arg", dissect_isdn_sup_arg, proto_isdn_sup); + isdn_sup_res_handle = register_dissector(PFNAME "_res", dissect_isdn_sup_res, proto_isdn_sup); + isdn_sup_err_handle = register_dissector(PFNAME "_err", dissect_isdn_sup_err, proto_isdn_sup); +} |