diff options
author | Anders Broman <anders.broman@ericsson.com> | 2005-03-22 15:41:40 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2005-03-22 15:41:40 +0000 |
commit | d1e004b8d27e38d3b25e31386e8e01f26ac8cab6 (patch) | |
tree | 55bc8efaf1bf9df08e3e20436289f4bfc55aa1e3 | |
parent | a17d3c60ba3a1626091cdf16db00cab06d603bc1 (diff) |
Initial checkin of a camel dissector.
svn path=/trunk/; revision=13864
-rw-r--r-- | asn1/camel/Makefile | 16 | ||||
-rw-r--r-- | asn1/camel/Makefile.nmake | 41 | ||||
-rw-r--r-- | asn1/camel/camel.asn | 2469 | ||||
-rw-r--r-- | asn1/camel/camel.cnf | 20 | ||||
-rw-r--r-- | asn1/camel/packet-camel-template.c | 657 | ||||
-rw-r--r-- | asn1/camel/packet-camel-template.h | 43 |
6 files changed, 3246 insertions, 0 deletions
diff --git a/asn1/camel/Makefile b/asn1/camel/Makefile new file mode 100644 index 0000000000..084f33c696 --- /dev/null +++ b/asn1/camel/Makefile @@ -0,0 +1,16 @@ +# $Id: Makefile 13071 2005-01-16 10:19:21Z guy $ + +DISSECTOR_FILES=packet-camel.c packet-camel.h + +all: generate_dissector + +generate_dissector: $(DISSECTOR_FILES) + +$(DISSECTOR_FILES): ../../tools/asn2eth.py camel.asn packet-camel-template.c packet-camel-template.h camel.cnf + python ../../tools/asn2eth.py -X -b -e -p camel -c camel.cnf -s packet-camel-template camel.asn + +clean: + rm -f parsetab.py $(DISSECTOR_FILES) + +copy_files: generate_dissector + cp $(DISSECTOR_FILES) ../../epan/dissectors diff --git a/asn1/camel/Makefile.nmake b/asn1/camel/Makefile.nmake new file mode 100644 index 0000000000..edcceffe16 --- /dev/null +++ b/asn1/camel/Makefile.nmake @@ -0,0 +1,41 @@ +## Use: $(MAKE) /$(MAKEFLAGS) -f makefile.nmake +# +# $Id: Makefile.nmake 13077 2005-01-16 23:26:02Z lroland $ + +include ../../config.nmake + +UNIX2DOS=$(PERL) ../../tools/unix2dos.pl + +PROTOCOL_NAME=camel +DISSECTOR_FILES=packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).h + +all: generate_dissector + +generate_dissector: $(DISSECTOR_FILES) + +$(DISSECTOR_FILES): ../../tools/asn2eth.py camel.asn packet-$(PROTOCOL_NAME)-template.c packet-$(PROTOCOL_NAME)-template.h camel.cnf +!IFDEF PYTHON + $(PYTHON) ../../tools/asn2eth.py -X -b -e -p $(PROTOCOL_NAME) -c camel.cnf -s packet-$(PROTOCOL_NAME)-template camel.asn +!ELSE + @echo Error: You need Python to use asn2eth.py + @exit 1 +!ENDIF + +clean: + del /f parsetab.py $(DISSECTOR_FILES) + +# Fix EOL in generated dissectors. Cygwin's python generates files with +# mixed EOL styles, which can't be commited to the SVN repository. +# Stuff included from template and "cnf" files has "\r\n" on windows, while +# the generated stuff has "\n". + +fix_eol: generate_dissector + move packet-$(PROTOCOL_NAME).c packet-$(PROTOCOL_NAME).c.tmp + move packet-$(PROTOCOL_NAME).h packet-$(PROTOCOL_NAME).h.tmp + $(UNIX2DOS) < packet-$(PROTOCOL_NAME).c.tmp > packet-$(PROTOCOL_NAME).c + $(UNIX2DOS) < packet-$(PROTOCOL_NAME).h.tmp > packet-$(PROTOCOL_NAME).h + del /f packet-$(PROTOCOL_NAME).c.tmp packet-$(PROTOCOL_NAME).h.tmp + +copy_files: generate_dissector fix_eol + xcopy packet-$(PROTOCOL_NAME).c ..\..\epan\dissectors /d /y + xcopy packet-$(PROTOCOL_NAME).h ..\..\epan\dissectors /d /y diff --git a/asn1/camel/camel.asn b/asn1/camel/camel.asn new file mode 100644 index 0000000000..36c5266f8a --- /dev/null +++ b/asn1/camel/camel.asn @@ -0,0 +1,2469 @@ +--*********************************************** +-- ASN.1+ version of CAMEL3 message set. +-- +-- Ref : CAMEL Application Part (CAP) specification +-- (3GPP TS 29.078 version 3.5.0 Release 1999) +-- ETSI TS 129 078 V3.5.0 (2000-09) +-- +--*********************************************** + + + +--************************************* +-- MsgSetIdentification +--************************************* + +-- XXX MsgSetIdentification DEFINITIONS ::= +-- XXX BEGIN +-- XXX END + +--******************************************** +-- PackBin Fix +--******************************************** + +PackedBinCAMEL3Fix DEFINITIONS ::= +BEGIN + +PBSGSNCapabilities ::= SEQUENCE +{ + reserved INTEGER, + aoc INTEGER +} + + +END + + +--******************************************** +-- PackBin Variable +--******************************************** + +PackedBinCAMEL3Variable DEFINITIONS ::= +BEGIN + +PBIPSSPCapabilities ::= SEQUENCE { + standardPartEnd INTEGER, + reserved INTEGER, + genOfVoiceAnn INTEGER, + voiceInfo2 INTEGER, + voiceInfo1 INTEGER, + voiceBack INTEGER, + iPRoutAdd INTEGER, + bilateralPart OCTET STRING (SIZE(0..3)) +} + +END + + +PacBinMap2Pac DEFINITIONS ::= +BEGIN + +-- maxAddressLength INTEGER ::= 20 +PBAddressString ::= SEQUENCE { + extension INTEGER(1), + natureOfAddressIndicator INTEGER, + numberingPlanInd INTEGER, + digits + + OCTET STRING (SIZE(0..19)) +} + +PBISDNAddressString ::= SEQUENCE { + extension INTEGER(1), + natureOfAddressIndicator INTEGER, + numberingPlanInd INTEGER, + digits + + OCTET STRING (SIZE(0..8)) +} + +PBGeographicalInformation ::= SEQUENCE { + typeOfShape INTEGER, + spare INTEGER, + degreesOfLatitude OCTET STRING (SIZE(3)), + degreesOfLongitude OCTET STRING (SIZE(3)), + uncertaintyCode OCTET STRING (SIZE(1)) +} +-- Refers to geographical Information defined in 3GPP TS 23.032. +-- Only the description of an ellipsoid point with uncertainty circle +-- as specified in 3GPP TS 23.032 is allowed to be used +-- The internal structure according to 3GPP TS 23.032 is as follows: +-- Type of shape (ellipsoid point with uncertainty circle) 1 octet +-- Degrees of Latitude 3 octets +-- Degrees of Longitude 3 octets +-- Uncertainty code 1 octet + +PBGSNAddress ::= SEQUENCE { + typeOfAddress INTEGER, + addressLength INTEGER(4..16), + address OCTET STRING (SIZE(4..16)) +} +-- Address Type 0 and Address Length 4 are used when Address is an IPv4 address. +-- Address Type 1 and Address Length 16 are used when Address is an IPv6 address. + +END + +PacBinInapFix DEFINITIONS ::= +BEGIN + +PBRedirectionInformation ::= SEQUENCE { + originalReasons INTEGER, + spare INTEGER(0), + indicator INTEGER, + reason INTEGER, + spare2 INTEGER(0), + counter INTEGER + } + +END + + +--******************************************** +-- PackBin Digits +--******************************************** +-- + +PacBinInapDigits DEFINITIONS ::= +BEGIN + +PBCalledPartyNumber ::= SEQUENCE { + oddEven INTEGER, + natureOfAddressIndicator INTEGER, + innInd INTEGER, + numberingPlanInd INTEGER, + spare INTEGER(0), + -- 2-32 bcdDigits + digits + OCTET STRING (SIZE(0..16)) + } +-- the Destination Address Field is not present if the destination address length is set to zero. +-- This is the case e.g. when the ANSI ISUP Nature Of Address indicator indicates no number present, +-- operator requested (1110100) or no number present, cut-through call to carrier (1110101). +-- See also see 3GPP TS 23.078 [42]. + +PBCallingPartyNumber ::= SEQUENCE { + oddEven INTEGER, + natureOfAddressIndicator INTEGER, + niInd INTEGER, + numberingPlanInd INTEGER, + presentInd INTEGER, + screening INTEGER, + -- 0-16 bcdDigits + digits + OCTET STRING (SIZE(0..8)) + } + +PBRedirectingNumber ::= SEQUENCE { + oddEven INTEGER, + natureOfAddressIndicator INTEGER, + innInd INTEGER, + numberingPlanInd INTEGER, + spare INTEGER(0), + -- 2-20 bcdDigits + digits + OCTET STRING (SIZE(1..10)) + } + + +PBCause ::= SEQUENCE { + o1ext INTEGER(1), + codingStandard INTEGER, + spare INTEGER(0), + location INTEGER, + o2ext INTEGER(1), + causeValue INTEGER, + diagnostics OCTET STRING (SIZE(0..30)) + -- add 1 octet for diagnostics field + } + +PBGenericNumber ::= SEQUENCE { + numberQualifierIndicator INTEGER, + oddEven INTEGER, + natureOfAddressIndicator INTEGER, + niInd INTEGER, + numberingPlanInd INTEGER, + presentInd INTEGER, + screening INTEGER, + digits + OCTET STRING (SIZE(0..8)) + } + + +PBLocationNumber ::= SEQUENCE { + oddEven INTEGER, + natureOfAddressIndicator INTEGER, + innInd INTEGER, + numberingPlanInd INTEGER, + presentInd INTEGER, + screening INTEGER, + digits + OCTET STRING (SIZE(0..8)) + } + +END + + +PacBinCamel2Var DEFINITIONS ::= +BEGIN + +-- See 3GPP TS 29.078 +-- and 3GPP TS 24.008, section 10.5.4.7 +PBCalledPartyBCDNumber ::= SEQUENCE { + ext INTEGER, + typeOfNumber ENUMERATED { + unknown (0), + international (1), + national (2), + networkSpecific (3), + dedicatedAccess (4), + reserved5 (5), + reserved6 (6), + reservedExt (7) + }, + numberingPlanInd INTEGER, + digits + + OCTET STRING (SIZE(0..40)) +} + +END + +--********************************************* +-- Core-INAP-CS1-Operations DEFINITIONS +--********************************************* + +CAP-datatypes --{ ccitt (0) identified-organization (4) etsi (0) mobileDomain (0) umts-network (1) modules (3) cap-datatypes (52) version3 (2) } +DEFINITIONS IMPLICIT TAGS ::= +BEGIN + + + +-- exports everything + + + +-- imports nothing + + + +-- ================================ +-- MACRO OPERATION +-- ================================ + + + + +-- AccessPointName notes: not recursive, exported, +-- locally refd 5 times, import refd 0 times +AccessPointName ::= + +OCTET STRING (SIZE (1..100)) + +-- AChBillingChargingCharacteristics notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +AChBillingChargingCharacteristics ::= + +OCTET STRING (SIZE (5..177)) + +-- AlertingPattern notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +AlertingPattern ::= + +OCTET STRING (SIZE (3)) + +-- AppendFreeFormatData notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +AppendFreeFormatData ::= ENUMERATED +{ + overwrite (0), + append (1) +} + +-- ApplicationTimer notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ApplicationTimer ::= INTEGER (0..2047) + +-- CalledPartyBCDNumber notes: not recursive, exported, +-- locally refd 4 times, import refd 0 times +-- See 3GPP TS 29.078 +-- and 3GPP TS 24.008, section 10.5.4.7 +CalledPartyBCDNumber ::= + + +OCTET STRING (SIZE (1..41)) + +-- CalledPartyNumber notes: not recursive, exported, +-- locally refd 6 times, import refd 0 times +CalledPartyNumber ::= + + + OCTET STRING (SIZE (2..18)) + +-- CallingPartyNumber notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +CallingPartyNumber ::= + + + OCTET STRING (SIZE (2..10)) + +-- CallResult notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +CallResult ::= + +OCTET STRING (SIZE (cAPSpecificBoundSetminCallResultLength..cAPSpecificBoundSetmaxCallResultLength)) +-- shall be the result of the BER-encoded value of type +-- CamelCallResult + + +CAPGPRSReferenceNumber ::= SEQUENCE { + destinationReference [0] EXPLICIT Integer4 OPTIONAL, + originationReference [1] EXPLICIT Integer4 OPTIONAL + } + + +-- Carrier notes: not recursive, exported, +-- locally refd 5 times, import refd 0 times +Carrier ::= + +OCTET STRING (SIZE (4..4)) + +-- Cause notes: not recursive, exported, +-- locally refd 10 times, import refd 0 times +Cause ::= + + + OCTET STRING (SIZE (minCauseLength..32)) + +-- CGEncountered notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CGEncountered ::= ENUMERATED +{ + noCGencountered (0), + manualCGencountered (1), + scpOverload (2) +} + +-- ConnectedNumberTreatmentInd notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ConnectedNumberTreatmentInd ::= ENUMERATED +{ + noINImpact (0), + presentationRestricted (1), + presentCalledINNumber (2), + presentCallINNumberRestricted (3) +} + +-- ControlType notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ControlType ::= ENUMERATED +{ + sCPOverloaded (0), + manuallyInitiated (1) +} + + +ChargingRollOver ::= CHOICE { + transferredVolumeRollOver [0] TransferredVolumeRollOver, + elapsedTimeRollOver [1] ElapsedTimeRollOver +} + +-- DateAndTime notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +DateAndTime ::= + OCTET STRING (SIZE (7)) + +-- Digits notes: not recursive, exported, +-- locally refd 9 times, import refd 0 times +Digits ::= + +OCTET STRING (SIZE (2..16)) + +-- ErrorTreatment notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ErrorTreatment ::= ENUMERATED +{ + stdErrorAndInfo (0), + help (1), + repeatPrompt (2) +} + +-- EventTypeBCSM notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +EventTypeBCSM ::= ENUMERATED +{ + collectedInfo (2), + analyzedInformation (3), + routeSelectFailure (4), + oCalledPartyBusy (5), + oNoAnswer (6), + oAnswer (7), + oDisconnect (9), + oAbandon (10), + termAttemptAuthorized (12), + tBusy (13), + tNoAnswer (14), + tAnswer (15), + tDisconnect (17), + tAbandon (18) +} + +-- EventTypeSMS notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +EventTypeSMS ::= ENUMERATED +{ + sms-CollectedInfo (1), + o-smsFailure (2), + o-smsSubmitted (3) +} + +-- CriticalityType notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +CriticalityType ::= ENUMERATED +{ + ignore (0), + abort (1) +} + +-- FCIBillingChargingCharacteristics notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +FCIBillingChargingCharacteristics ::= + +OCTET STRING (SIZE (5..225)) + +-- FCIGPRSBillingChargingCharacteristics notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +FCIGPRSBillingChargingCharacteristics ::= + +OCTET STRING (SIZE (5..225)) +-- shall be the result of the BER-encoded value of type +-- CamelFCIGPRSBillingChargingCharacteristics + +-- FCISMSBillingChargingCharacteristics notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +FCISMSBillingChargingCharacteristics ::= + +OCTET STRING (SIZE (5..225)) + +-- GenericNumber notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +GenericNumber ::= + + + OCTET STRING (SIZE (3..11)) + +-- GPRSCause notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +GPRSCause ::= + + OCTET STRING (SIZE (1)) + +-- GPRSChargingID notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +GPRSChargingID ::= + + OCTET STRING (SIZE (4)) + +-- PDPInitiationType notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +PDPInitiationType ::= ENUMERATED +{ + mSInitiated (0), + networkInitiated (1) +} + +-- GPRSEventType notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +GPRSEventType ::= ENUMERATED +{ + attach (1), + attachChangeOfPosition (2), + detached (3), + pdp-ContextEstablishment (11), + pdp-ContextEstablishmentAcknowledgement (12), + disonnect (13), + pdp-ContextChangeOfPosition (14) +} + +-- InitiatingEntity notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +InitiatingEntity ::= ENUMERATED +{ + ms (0), + sgsn (1), + hlr (2), + ggsn (3) +} + +-- IPSSPCapabilities notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +IPSSPCapabilities ::= + + +OCTET STRING (SIZE (1..4)) + +-- LegType notes: not recursive, exported, +-- locally refd 6 times, import refd 0 times +LegType ::= + +OCTET STRING (SIZE (1)) + +-- LocationNumber notes: not recursive, exported, +-- locally refd 4 times, import refd 0 times +LocationNumber ::= + + + OCTET STRING (SIZE (2..10)) + +-- MonitorMode notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +MonitorMode ::= ENUMERATED +{ + interrupted (0), + notifyAndContinue (1), + transparent (2) +} + +-- MSNetworkCapability notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +MSNetworkCapability ::= + +OCTET STRING (SIZE (1..8)) +-- MS Network Capability describes the GPRS terminal capabilites related to the network, i.e. SMS +-- point to point service over packet data channels. For encoding refer to 3GPP TS 24.008 [12]. +-- It shall contain the value part defined in 3GPP TS 24.008 only. I.e. the 3GPP TS 24.008 IEI +-- and 3GPP TS 24.008 octet length indicator shall not be included. + + +-- MSRadioAccessCapability notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +MSRadioAccessCapability ::= + +OCTET STRING (SIZE (1..50)) +-- MS Radio Access Capability describes the terminal capabilites relevant for the radio network, +-- which may affect the way the network handles the mobile. +-- For encoding refer to 3GPP TS 24.008 [12]. +-- It shall contain the value part defined in 3GPP TS 24.008 only. I.e. the 3GPP TS 24.008 IEI +-- and 3GPP TS 24.008 octet length indicator shall not be included. + + +-- NAOliInfo notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +NAOliInfo ::= + +OCTET STRING (SIZE (1)) + +-- OriginalCalledPartyID notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +OriginalCalledPartyID ::= + +OCTET STRING (SIZE (2..10)) + +-- OCSIApplicable notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +OCSIApplicable ::= NULL + +-- PDPId notes: not recursive, exported, +-- locally refd 11 times, import refd 0 times +PDPId ::= + +OCTET STRING (SIZE (1)) + +-- RAIdentity notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +RAIdentity ::= + +OCTET STRING (SIZE (6..7)) +-- Routing Area Identity coded according to 3GPP TS 29.060 [43]. +-- It shall contain the value part defined in 3GPP TS 29.060 only. I.e. the 3GPP TS 29.060 +-- type identifier octet shall not be included. + +-- RedirectingPartyID notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +RedirectingPartyID ::= + +OCTET STRING (SIZE (2..10)) + +-- RequestedInformationType notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +RequestedInformationType ::= ENUMERATED +{ + callAttemptElapsedTime (0), + callStopTime (1), + callConnectedElapsedTime (2), + releaseCause (30) +} + +-- RPCause notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +RPCause ::= + +OCTET STRING (SIZE (1)) + +-- ScfID notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +ScfID ::= + +OCTET STRING (SIZE (2..10)) + +-- SCIBillingChargingCharacteristics notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +SCIBillingChargingCharacteristics ::= + +OCTET STRING (SIZE (4..124)) + +-- SCIGPRSBillingChargingCharacteristics notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +SCIGPRSBillingChargingCharacteristics ::= + +OCTET STRING (SIZE (4..69)) + +-- SGSNCapabilities notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +SGSNCapabilities ::= + + +OCTET STRING (SIZE (1)) + +-- SMSCause notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +SMSCause ::= ENUMERATED +{ + systemFailureEnum (0), + unexpectedDataValueEnum (1), + facilityNotSupported (2), + sM-DeliveryFailure (3), + releaseFromRadioInterface (4) +} + +-- TimeIfNoTariffSwitch notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +TimeIfNoTariffSwitch ::= INTEGER (0..864000) + +-- TimerID notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +TimerID ::= ENUMERATED +{ + tssf (0) +} + +-- TimeAndTimezone notes: not recursive, exported, +-- locally refd 7 times, import refd 0 times +TimeAndTimezone ::= + OCTET STRING (SIZE (8..8)) + +-- TPDataCodingScheme notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +TPDataCodingScheme ::= + +OCTET STRING (SIZE (1)) + +-- TPProtocolIdentifier notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +TPProtocolIdentifier ::= + +OCTET STRING (SIZE (1)) + +-- TPShortMessageSubmissionInfo notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +TPShortMessageSubmissionInfo ::= + +OCTET STRING (SIZE (1)) + +-- TPValidityPeriod notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +TPValidityPeriod ::= + +OCTET STRING (SIZE (1..7)) + +-- UnavailableNetworkResource notes: not recursive, exported, +-- locally refd 0 times, import refd 0 times +UnavailableNetworkResource ::= ENUMERATED +{ + unavailableResources (0), + componentFailure (1), + basicCallProcessingException (2), + resourceStatusFailure (3), + endUserFailure (4) +} + +-- SpecializedResourceReportArg notes: not recursive, exported, +-- locally refd 0 times, import refd 0 times +SpecializedResourceReportArg ::= NULL + +-- Priority notes: not recursive, exported, +-- locally refd 0 times, import refd 0 times +Priority ::= INTEGER (0..2147483647) + +-- CUG-Interlock notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +CUG-Interlock ::= + +OCTET STRING (SIZE (4)) + +-- CUG-Index notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CUG-Index ::= INTEGER (0..32767) + +-- CallReferenceNumber notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CallReferenceNumber ::= + +OCTET STRING (SIZE (1..8)) + +-- SuppressionOfAnnouncement notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +SuppressionOfAnnouncement ::= NULL + +-- NotReachableReason notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +NotReachableReason ::= ENUMERATED +{ + msPurged (0), + imsiDetached (1), + restrictedArea (2), + notRegistred (3) +} + +-- AgeOfLocationInformation notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +AgeOfLocationInformation ::= INTEGER (0..32767) + +-- GeographicalInformation notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +GeographicalInformation ::= + + +OCTET STRING (SIZE (8)) + +-- AddressString notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +AddressString ::= + + + OCTET STRING (SIZE(1..maxAddressLength)) + +-- CellIdFixedLength notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CellIdFixedLength ::= + + + OCTET STRING (SIZE (7)) + -- Refers to Cell Global Identification defined in TS GSM 03.03. + -- Octets ares encoded according to TS GSM 04.08. + -- The internal structure is defined as follows: + -- Mobile Country Code: 3 digits according to CCITT Rec E.212. + -- 1 digits filler (1111) + -- Mobile Network Code: 2 digits according to CCITT Rec E.212. + -- Location Area Code: 2 octets according to TS GSM 04.08. + -- Cell Identify: 2 octets (CI) according to TS GSM 04.08. + + +-- LAIFixedLength notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +LAIFixedLength ::= + + + OCTET STRING (SIZE (5)) + -- Refers to Location Area Identification defined in TS GSM 03.03. + -- Octets ares encoded according to TS GSM 04.08. + -- The internal structure is defined as follows: + -- Mobile Country Code: 3 digits according to CCITT Rec E.212. + -- 1 digits filler (1111) + -- Mobile Network Code: 2 digits according to CCITT Rec E.212. + -- Location Area Code: 2 octets according to TS GSM 04.08. + + +-- ServiceKey notes: not recursive, exported, +-- locally refd 6 times, import refd 0 times +ServiceKey ::= INTEGER (0..2147483647) + +-- Ext-TeleserviceCode notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +Ext-TeleserviceCode ::= + +OCTET STRING (SIZE (1..5)) + +-- Ext-BearerServiceCode notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +Ext-BearerServiceCode ::= + +OCTET STRING (SIZE (1..5)) + +-- Imsi notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +Imsi ::= + + +OCTET STRING (SIZE (3..8)) + -- International Mobile Subscriber Indentity + -- digits of MCC, MNC, MSIN are concatenated in this order. + + +-- Duration notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +Duration ::= INTEGER (-2..86400) + +-- Integer4 notes: not recursive, exported, +-- locally refd 8 times, import refd 0 times +Integer4 ::= INTEGER (0..2147483647) + +-- Interval notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +Interval ::= INTEGER (-1..60000) + +-- CallingPartysCategory notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +CallingPartysCategory ::= + +OCTET STRING (SIZE (1)) + +-- RedirectionInformation notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +RedirectionInformation ::= + + OCTET STRING (SIZE (2)) + +-- HighLayerCompatibility notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +HighLayerCompatibility ::= + +OCTET STRING (SIZE (highLayerCompatibilityLength)) + +-- BothwayThroughConnectionInd notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +BothwayThroughConnectionInd ::= ENUMERATED +{ + bothwayPathRequired (0), + bothwayPathNotRequired (1) +} + +-- LSAIdentity notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +LSAIdentity ::= + +OCTET STRING (SIZE (3)) + +-- QoS-Subscribed notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +QoS-Subscribed ::= + +OCTET STRING (SIZE (3)) + +-- Ext-QoS-Subscribed notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +Ext-QoS-Subscribed ::= + +OCTET STRING (SIZE (1..9)) + +-- TCInvokeIdSet notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +TCInvokeIdSet ::= INTEGER (-128..127) + +-- ExtensionSetExtensionType notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +-- FIXME: add to decode this: ExtensionSetExtensionType ::= ANY + + +-- ExtensionSetextensionId notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ExtensionSetextensionId ::= OBJECT IDENTIFIER + + +-- BackwardServiceInteractionInd notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +BackwardServiceInteractionInd ::= SEQUENCE +{ + conferenceTreatmentIndicator [1] + +OCTET STRING (SIZE (1)) OPTIONAL, + callCompletionTreatmentIndicator [2] + +OCTET STRING (SIZE (1)) OPTIONAL +} + + + +-- BearerCapability notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +BearerCapability ::= CHOICE +{ + bearerCap [0] + +OCTET STRING (SIZE (2..11)) +} + +-- CAI-Gsm0224 notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +CAI-Gsm0224 ::= SEQUENCE +{ + e1 [0] INTEGER (0..8191) OPTIONAL, + e2 [1] INTEGER (0..8191) OPTIONAL, + e3 [2] INTEGER (0..8191) OPTIONAL, + e4 [3] INTEGER (0..8191) OPTIONAL, + e5 [4] INTEGER (0..8191) OPTIONAL, + e6 [5] INTEGER (0..8191) OPTIONAL, + e7 [6] INTEGER (0..8191) OPTIONAL +} + +-- ChargingCharacteristics notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ChargingCharacteristics ::= CHOICE +{ + maxTransferredVolume [0] INTEGER (1..2147483647), + maxElapsedTime [1] INTEGER (1..86400) +} + +-- ElapsedTime notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ElapsedTime ::= CHOICE +{ + timeGPRSIfNoTariffSwitch [0] INTEGER (0..86400), + timeGPRSIfTariffSwitch [1] SEQUENCE + { + timeGPRSSinceLastTariffSwitch [0] INTEGER (0..86400), + timeGPRSTariffSwitchInterval [1] INTEGER (0..86400) OPTIONAL + } +} + + +ElapsedTimeRollOver ::= CHOICE { + rOTimeGPRSIfNoTariffSwitch [0] INTEGER (0..255), + rOTimeGPRSIfTariffSwitch [1] SEQUENCE { + rOTimeGPRSSinceLastTariffSwitch [0] INTEGER (0..255) OPTIONAL, + rOTimeGPRSTariffSwitchInterval [1] INTEGER (0..255) OPTIONAL + } +} + +GSNAddress ::= + + +OCTET STRING (SIZE (5..17)) + +-- ForwardServiceInteractionInd notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ForwardServiceInteractionInd ::= SEQUENCE +{ + conferenceTreatmentIndicator [1] + + OCTET STRING (SIZE (1)) OPTIONAL, + callDiversionTreatmentIndicator [2] + + OCTET STRING (SIZE (1)) OPTIONAL, + callingPartyRestrictionIndicator [4] + + OCTET STRING (SIZE (1)) OPTIONAL +} + + + +-- PDPType notes: not recursive, exported, +-- locally refd 5 times, import refd 0 times +-- Equivalent to EndUserAddress +PDPType ::= SEQUENCE +{ + pDPTypeOrganization [0] + + OCTET STRING (SIZE (1)), + pDPTypeNumber [1] + + OCTET STRING (SIZE (1)), + pDPAddress [2] + + OCTET STRING (SIZE (1..63)) OPTIONAL +} + +-- TimeIfTariffSwitch notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +TimeIfTariffSwitch ::= SEQUENCE +{ + timeSinceTariffSwitch [0] INTEGER (0..864000), + tariffSwitchInterval [1] INTEGER (1..864000) OPTIONAL +} + +-- TransferredVolume notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +TransferredVolume ::= CHOICE +{ + volumeIfNoTariffSwitch [0] INTEGER (0..2147483647), + volumeIfTariffSwitch [1] SEQUENCE + { + volumeSinceLastTariffSwitch [0] INTEGER (0..2147483647), + volumeTariffSwitchInterval [1] INTEGER (0..2147483647) OPTIONAL + } +} + +TransferredVolumeRollOver ::= CHOICE { + rOVolumeIfNoTariffSwitch [0] INTEGER (0.. 255), + rOVolumeIfTariffSwitch [1] SEQUENCE { + rOVolumeSinceLastTariffSwitch [0] INTEGER (0.. 255) OPTIONAL, + rOVolumeTariffSwitchInterval [1] INTEGER (0.. 255) OPTIONAL + } +} + + +-- Code notes: not recursive, exported, +-- locally refd 63 times, import refd 0 times +Code ::= CHOICE +{ + local INTEGER, + global OBJECT IDENTIFIER +} + +-- PCS-Extensions notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +PCS-Extensions ::= SEQUENCE +{ + foo INTEGER (0) OPTIONAL +} + + + +-- MiscCallInfo notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +MiscCallInfo ::= SEQUENCE +{ + messageType [0] ENUMERATED + { + request (0), + notification (1) + } +} + +-- SupportedExtensionsExtensionType notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +SupportedExtensionsExtensionType ::= CHOICE +{ + firstExtensionExtensionType NULL --, + -- secondExtensionExtensionType NULL +} + +-- PrivateExtension notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +PrivateExtension ::= SEQUENCE +{ + extId ExtensionSetextensionId + -- FIXME: add to decode this: extType ExtensionSetExtensionType OPTIONAL +} + +-- AdditionalCallingPartyNumber notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +AdditionalCallingPartyNumber ::= Digits + +-- AOCSubsequent notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +AOCSubsequent ::= SEQUENCE +{ + cAI-GSM0224 [0] CAI-Gsm0224, + tariffSwitchInterval [1] INTEGER (1..86400) OPTIONAL +} + +-- AssistingSSPIPRoutingAddress notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +AssistingSSPIPRoutingAddress ::= Digits + +-- CAMEL-FCIGPRSBillingChargingCharacteristics notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CamelFCIGPRSBillingChargingCharacteristics ::= + +SEQUENCE +{ + fCIBCCCAMELsequence1 [0] SEQUENCE + { + freeFormatData [0] FreeFormatData, + pDPID [1] PDPId OPTIONAL, + appendFreeFormatData [2] AppendFreeFormatData DEFAULT overwrite + } +} + +FreeFormatData ::= + +OCTET STRING (SIZE (1..160)) + + +-- CAMEL-FCISMSBillingChargingCharacteristics notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CamelFCISMSBillingChargingCharacteristics ::= CHOICE +{ + fCIBCCCAMELsequence1 [0] SEQUENCE + { + freeFormatData [0] FreeFormatData, + appendFreeFormatData [1] AppendFreeFormatData DEFAULT overwrite + } +} + +-- ChargeNumber notes: not recursive, exported, +-- locally refd 4 times, import refd 0 times +ChargeNumber ::= LocationNumber + +-- ChargingResult notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ChargingResult ::= CHOICE +{ + transferredVolume [0] TransferredVolume, + elapsedTime [1] ElapsedTime +} + +-- CollectedDigits notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CollectedDigits ::= SEQUENCE +{ + minimumNbOfDigits [0] INTEGER (1..30) DEFAULT 1, + maximumNbOfDigits [1] INTEGER (1..30), + endOfReplyDigit [2] + OCTET STRING (SIZE (1..2)) OPTIONAL, + cancelDigit [3] + OCTET STRING (SIZE (1..2)) OPTIONAL, + startDigit [4] + OCTET STRING (SIZE (1..2)) OPTIONAL, + firstDigitTimeOut [5] INTEGER (1..127) OPTIONAL, + interDigitTimeOut [6] INTEGER (1..127) OPTIONAL, + errorTreatment [7] ErrorTreatment DEFAULT stdErrorAndInfo, + interruptableAnnInd [8] BOOLEAN DEFAULT TRUE, + voiceInformation [9] BOOLEAN DEFAULT FALSE, + voiceBack [10] BOOLEAN DEFAULT FALSE +} +-- The endOfReplyDigit, cancelDigit, and startDigit parameters have been +-- designated as OCTET STRING, and are to be encoded as BCD, one digit per octet +-- only, contained in the four least significant bits of each OCTET. The following encoding shall +-- be applied for the non-decimal characters: +-- 1011 (*), 1100 (#). + +-- CollectedInfo notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CollectedInfo ::= CHOICE +{ + collectedDigits [0] CollectedDigits +} + +-- CorrelationID notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +CorrelationID ::= Digits + +-- DestinationRoutingAddress notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +DestinationRoutingAddress ::= + +SEQUENCE SIZE (1) OF CalledPartyNumber + +-- DpSpecificCriteria notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +DpSpecificCriteria ::= CHOICE +{ + applicationTimer [1] ApplicationTimer +} + +-- EventSpecificInformationBCSM notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +EventSpecificInformationBCSM ::= CHOICE +{ + routeSelectFailureSpecificInfo [2] SEQUENCE + { + failureCause [0] Cause OPTIONAL + }, + oCalledPartyBusySpecificInfo [3] SEQUENCE + { + busyCause [0] Cause OPTIONAL + }, + oNoAnswerSpecificInfo [4] SEQUENCE + { + foo INTEGER(0) OPTIONAL + }, + oAnswerSpecificInfo [5] SEQUENCE + { + destinationAddress [50] CalledPartyNumber OPTIONAL, + or-Call [51] NULL OPTIONAL, + forwardedCall [52] NULL OPTIONAL + }, + oDisconnectSpecificInfo [7] SEQUENCE + { + releaseCause [0] Cause OPTIONAL + }, + tBusySpecificInfo [8] SEQUENCE + { + busyCause [0] Cause OPTIONAL, + callForwarded [50] NULL OPTIONAL, + routeNotPermitted [51] NULL OPTIONAL + }, + tNoAnswerSpecificInfo [9] SEQUENCE + { + callForwarded [50] NULL OPTIONAL + }, + tAnswerSpecificInfo [10] SEQUENCE + { + destinationAddress [50] CalledPartyNumber OPTIONAL, + or-Call [51] NULL OPTIONAL, + forwardedCall [52] NULL OPTIONAL + }, + tDisconnectSpecificInfo [12] SEQUENCE + { + releaseCause [0] Cause OPTIONAL + } +} + +-- EventSpecificInformationSMS notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +EventSpecificInformationSMS ::= CHOICE +{ + o-smsFailureSpecificInfo [0] SEQUENCE + { + failureCause [0] SMSCause OPTIONAL + }, + o-smsSubmittedSpecificInfo [1] SEQUENCE + { + foo INTEGER(0) OPTIONAL + } +} + +-- GapIndicators notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +GapIndicators ::= SEQUENCE +{ + duration [0] Duration, + gapInterval [1] Interval +} + + + +-- GapOnService notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +GapOnService ::= SEQUENCE +{ + serviceKey [0] ServiceKey +} + + + +-- GenericNumbers notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +GenericNumbers ::= + +SET SIZE (1..5) OF GenericNumber + +-- GPRS-QoS notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +GPRS-QoS ::= CHOICE +{ + short-QoS-format [0] QoS-Subscribed, + long-QoS-format [1] Ext-QoS-Subscribed +} + +-- GPRSEvent notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +GPRSEvent ::= SEQUENCE +{ + gPRSEventType [0] GPRSEventType, + monitorMode [1] MonitorMode +} + +-- GPRSMSClass notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +GPRSMSClass ::= SEQUENCE +{ + mSNetworkCapability [0] MSNetworkCapability, + mSRadioAccessCapability [1] MSRadioAccessCapability OPTIONAL +} + +-- InvokeID notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +InvokeID ::= TCInvokeIdSet + +-- IPRoutingAddress notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +IPRoutingAddress ::= CalledPartyNumber + +-- QualityOfService notes: not recursive, exported, +-- locally refd 5 times, import refd 0 times +QualityOfService ::= + SEQUENCE +{ + requested-QoS [0] GPRS-QoS OPTIONAL, + subscribed-QoS [1] GPRS-QoS OPTIONAL, + negotiated-QoS [2] GPRS-QoS OPTIONAL +} + +-- ReceivingSideID notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +ReceivingSideID ::= CHOICE +{ + receivingSideID [1] LegType +} + +-- RequestedInformationTypeList notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +RequestedInformationTypeList ::= + +SEQUENCE SIZE (1..numOfInfoItems) OF RequestedInformationType + +-- RequestedInformationValue notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +RequestedInformationValue ::= CHOICE +{ + callAttemptElapsedTimeValue [0] INTEGER (0..255), + callStopTimeValue [1] DateAndTime, + callConnectedElapsedTimeValue [2] Integer4, + releaseCauseValue [30] Cause +} + +-- SendingSideID notes: not recursive, exported, +-- locally refd 4 times, import refd 0 times +SendingSideID ::= CHOICE +{ + sendingSideID [0] LegType +} + +-- ServiceInteractionIndicatorsTwo notes: not recursive, exported, +-- locally refd 5 times, import refd 0 times +ServiceInteractionIndicatorsTwo ::= SEQUENCE +{ + forwardServiceInteractionInd [0] ForwardServiceInteractionInd OPTIONAL, + backwardServiceInteractionInd [1] BackwardServiceInteractionInd OPTIONAL, + bothwayThroughConnectionInd [2] BothwayThroughConnectionInd OPTIONAL, + connectedNumberTreatmentInd [4] ConnectedNumberTreatmentInd OPTIONAL, + nonCUGCall [13] NULL OPTIONAL, + holdTreatmentIndicator [50] + + OCTET STRING (SIZE (1)) OPTIONAL, + cwTreatmentIndicator [51] + + OCTET STRING (SIZE (1)) OPTIONAL, + ectTreatmentIndicator [52] + + OCTET STRING (SIZE (1)) OPTIONAL +} + + + +-- SMSEvent notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +SMSEvent ::= SEQUENCE +{ + eventTypeSMS [0] EventTypeSMS, + monitorMode [1] MonitorMode +} + +-- TimeInformation notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +TimeInformation ::= CHOICE +{ + timeIfNoTariffSwitch [0] TimeIfNoTariffSwitch, + timeIfTariffSwitch [1] TimeIfTariffSwitch +} + +-- TimerValue notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +TimerValue ::= Integer4 + +-- Tone notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +Tone ::= SEQUENCE +{ + toneID [0] Integer4, + duration [1] Integer4 OPTIONAL +} + + + +-- VariablePart notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +VariablePart ::= CHOICE +{ + integer [0] Integer4, + number [1] Digits, + time [2] + OCTET STRING (SIZE (2)), + date [3] + OCTET STRING (SIZE (4)), + price [4] + OCTET STRING (SIZE (4)) +} + +-- ApplyChargingReportArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ApplyChargingReportArg ::= + + +OCTET STRING (SIZE (cAPSpecificBoundSetminCallResultLength..cAPSpecificBoundSetmaxCallResultLength)) +-- CallResult type + + +-- CancelArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CancelArg ::= + +CHOICE +{ + invokeID [0] InvokeID, + allRequests [1] NULL +} + +-- FurnishChargingInformationArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +FurnishChargingInformationArg ::= + + +OCTET STRING (SIZE (5..225)) +-- FCIBillingChargingCharacteristics type. + +-- ReleaseCallArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ReleaseCallArg ::= +OCTET STRING (SIZE (minCauseLength..32)) + +-- ReceivedInformationArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ReceivedInformationArg ::= + +CHOICE +{ + digitsResponse [0] Digits +} + +-- FurnishChargingInformationSMSArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +FurnishChargingInformationSMSArg ::= + + +OCTET STRING (SIZE (5..225)) +-- FCISMSBillingChargingCharacteristics type. + + +-- ConnectGPRSArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ConnectGPRSArg ::= + + SEQUENCE +{ + accessPointName [0] AccessPointName, + pdpID [1] PDPId OPTIONAL +} + + + +-- EntityReleasedGPRSArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +EntityReleasedGPRSArg ::= + + SEQUENCE +{ + gPRSCause [0] GPRSCause, + pDPID [1] PDPId OPTIONAL +} + +-- FurnishChargingInformationGPRSArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +FurnishChargingInformationGPRSArg ::= + + +OCTET STRING (SIZE (5..225)) +-- FCIGPRSBillingChargingCharacteristics type. +-- Shall be the result of the BER-encoded value of type +-- CamelFCIGPRSBillingChargingCharacteristics + + +-- ReleaseGPRSArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ReleaseGPRSArg ::= + + SEQUENCE +{ + gprsCause [0] GPRSCause, + pDPID [1] PDPId OPTIONAL +} + +-- RequestReportGPRSEventArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +RequestReportGPRSEventArg ::= + + SEQUENCE +{ + gPRSEvent [0] GPRSEventArray, + pDPID [1] PDPId OPTIONAL +} + +GPRSEventArray ::= + SEQUENCE SIZE (1..10) OF GPRSEvent + +-- SendChargingInformationGPRSArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +SendChargingInformationGPRSArg ::= + + SEQUENCE +{ + sCIGPRSBillingChargingCharacteristics [0] SCIGPRSBillingChargingCharacteristics +} + + + +-- SubscriberState notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +SubscriberState ::= +CHOICE +{ + assumedIdle [0] NULL, + camelBusy [1] NULL, + netDetNotReachable NotReachableReason, + notProvidedFromVLR [2] NULL +} + +-- PrivateExtensionList notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +PrivateExtensionList ::= + +SEQUENCE SIZE (1..maxNumOfPrivateExtensions) OF PrivateExtension + +-- ISDN-AddressString notes: not recursive, exported, +-- locally refd 9 times, import refd 0 times +ISDN-AddressString ::= + + + OCTET STRING (SIZE(1..maxISDN-AddressLength)) + +-- CellIdOrLAI notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CellIdOrLAI ::= CHOICE +{ + cellIdFixedLength [0] CellIdFixedLength, + laiFixedLength [1] LAIFixedLength +} + +-- Ext-BasicServiceCode notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +Ext-BasicServiceCode ::= CHOICE +{ + ext-BearerService [2] Ext-BearerServiceCode, + ext-Teleservice [3] Ext-TeleserviceCode +} + +-- LegID notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +LegID ::= CHOICE +{ + sendingSideID [0] LegType, + receivingSideID [1] LegType +} + +-- AOCBeforeAnswer notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +AOCBeforeAnswer ::= SEQUENCE +{ + aOCInitial [0] CAI-Gsm0224, + aOCSubsequent [1] AOCSubsequent OPTIONAL +} + +-- AOCGprs notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +AOCGprs ::= SEQUENCE +{ + aOCInitial [0] CAI-Gsm0224, + aOCSubsequent [1] AOCSubsequent OPTIONAL +} + +-- BasicGapCriteria notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +BasicGapCriteria ::= CHOICE +{ + calledAddressValue [0] Digits, + gapOnService [2] GapOnService, + calledAddressAndService [29] SEQUENCE + { + calledAddressValue [0] Digits, + serviceKey [1] ServiceKey + }, + callingAddressAndService [30] SEQUENCE + { + callingAddressValue [0] Digits, + serviceKey [1] ServiceKey + } +} + +-- BCSMEvent notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +BCSMEvent ::= SEQUENCE +{ + eventTypeBCSM [0] EventTypeBCSM, + monitorMode [1] MonitorMode, + legID [2] LegID OPTIONAL, + dpSpecificCriteria [30] DpSpecificCriteria OPTIONAL +} + +-- CAMEL-FCIBillingChargingCharacteristics notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CamelFCIBillingChargingCharacteristics ::= CHOICE +{ + fCIBCCCAMELsequence1 [0] SEQUENCE + { + freeFormatData [0] FreeFormatData, + partyToCharge [1] SendingSideID DEFAULT '01'H, + appendFreeFormatData [2] AppendFreeFormatData DEFAULT overwrite + } +} + +-- CompoundCriteria notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CompoundCriteria ::= SEQUENCE +{ + basicGapCriteria [0] BasicGapCriteria, + scfID [1] ScfID OPTIONAL +} + +-- GapCriteria notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +GapCriteria ::= CHOICE +{ + basicGapCriteria BasicGapCriteria, + compoundGapCriteria CompoundCriteria +} + +-- MessageID notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +MessageID ::= CHOICE +{ + elementaryMessageID [0] Integer4, + text [1] SEQUENCE + { + messageContent [0] + + IA5String (SIZE (1..127)), + attributes [1] + + OCTET STRING (SIZE (2..10)) OPTIONAL + }, + elementaryMessageIDs [29] + + SEQUENCE SIZE (1..16) OF Integer4, + variableMessage [30] SEQUENCE + { + elementaryMessageID [0] Integer4, + variableParts [1] VariablePartsArray + } +} + +VariablePartsArray ::= + SEQUENCE SIZE (1..5) OF VariablePart + +-- RequestedInformation notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +RequestedInformation ::= SEQUENCE +{ + requestedInformationType [0] RequestedInformationType, + requestedInformationValue [1] RequestedInformationValue +} + + + +-- InitialDPArgExtension notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +InitialDPArgExtension ::= SEQUENCE +{ + gmscAddress [0] ISDN-AddressString OPTIONAL +} + + + +-- InbandInfo notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +InbandInfo ::= SEQUENCE +{ + messageID [0] MessageID, + numberOfRepetitions [1] INTEGER (1..127) OPTIONAL, + duration [2] INTEGER (0..32767) OPTIONAL, + interval [3] INTEGER (0..32767) OPTIONAL +} + + + +-- InformationToSend notes: not recursive, exported, +-- locally refd 3 times, import refd 0 times +InformationToSend ::= CHOICE +{ + inbandInfo [0] InbandInfo, + tone [1] Tone +} + +-- LocationInformationGPRS notes: not recursive, exported, +-- locally refd 6 times, import refd 0 times +LocationInformationGPRS ::= SEQUENCE +{ + cellGlobalIdOrServiceAreaIdOrLAI [0] CellGlobalIdOrServiceAreaIdOrLAI OPTIONAL, + routeingAreaIdentity [1] RAIdentity OPTIONAL, + geographicalInformation [2] GeographicalInformation OPTIONAL, + sgsn-Number [3] ISDN-AddressString OPTIONAL, + selectedLSAIdentity [4] LSAIdentity OPTIONAL, + extensionContainer [5] ExtensionContainer OPTIONAL, + saiPresent [6] NULL OPTIONAL +} + +CellGlobalIdOrServiceAreaIdOrLAI ::= + +OCTET STRING (SIZE (5..7)) +-- The 3GPP TS 29.078 standard, about cellGlobalIdOrServiceAreaIdOrLAI: +-- "CellGlobalIdOrServiceAreaIdOrLAI and LSAIdentity are coded in accordance with +-- 3GPP TS 29.002 [13]. +-- sai-Present indicates that the cellGlobalIdOrServiceAreaIdOrLAI parameter contains +-- a Service Area Identity." + +-- 3GPP TS 29.002 [13] gives the folowing coding for CellGlobalIdOrServiceAreaIdOrLAI: +-- CellGlobalIdOrServiceAreaIdOrLAI ::= CHOICE { +-- cellGlobalIdOrServiceAreaIdFixedLength [0] CellGlobalIdOrServiceAreaIdFixedLength, +-- laiFixedLength [1] LAIFixedLength +-- } +-- +-- CellGlobalIdOrServiceAreaIdFixedLength ::= +-- implement size < 8 -- +-- OCTET STRING (SIZE (7)) +-- This coding would disrupt the backward compatibillity, so the cellGlobalIdOrServiceAreaIdOrLAI +-- parameter is set as an OCTET STRING, as it was in previous implementations. + + +-- RequestedInformationList notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +RequestedInformationList ::= + +SEQUENCE SIZE (1..numOfInfoItems) OF RequestedInformation + +-- LocationInformation notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +LocationInformation ::= SEQUENCE +{ + ageOfLocationInformation AgeOfLocationInformation OPTIONAL, + geographicalInformation [0] GeographicalInformation OPTIONAL, + vlr-number [1] ISDN-AddressString OPTIONAL, + locationNumber [2] LocationNumber OPTIONAL, + cellIdOrLAI [3] CellIdOrLAI OPTIONAL, + extensionContainer [4] ExtensionContainer OPTIONAL, + selectedLSA-Id [5] LSAIdentity OPTIONAL, + msc-number [6] ISDN-AddressString OPTIONAL, + geodeticInformation [7] GeodeticInformation OPTIONAL, + currentLocationRetrieved [8] NULL OPTIONAL, + saiPresent [9] NULL OPTIONAL +} + + +GeodeticInformation ::= + +OCTET STRING (SIZE(10)) + + +-- GapTreatment notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +GapTreatment ::= CHOICE +{ + informationToSend [0] InformationToSend, + releaseCause [1] Cause +} + +-- GPRSEventSpecificInformation notes: not recursive, exported, +-- locally refd 2 times, import refd 0 times +GPRSEventSpecificInformation ::= CHOICE +{ + attachChangeOfPositionSpecificInformation [0] SEQUENCE + { + locationInformationGPRS [0] LocationInformationGPRS OPTIONAL + }, + pdp-ContextchangeOfPositionSpecificInformation [1] SEQUENCE + { + accessPointName [0] AccessPointName OPTIONAL, + chargingID [1] GPRSChargingID OPTIONAL, + locationInformationGPRS [2] LocationInformationGPRS OPTIONAL, + pDPType [3] PDPType OPTIONAL, + qualityOfService [4] QualityOfService OPTIONAL, + timeAndTimeZone [5] TimeAndTimezone OPTIONAL, + gGSNAddress [6] GSNAddress OPTIONAL + }, + detachSpecificInformation [2] SEQUENCE + { + inititatingEntity [0] InitiatingEntity OPTIONAL, + routeingAreaUpdate [1] NULL OPTIONAL + }, + disconnectSpecificInformation [3] SEQUENCE + { + inititatingEntity [0] InitiatingEntity OPTIONAL, + routeingAreaUpdate [1] NULL OPTIONAL + }, + pDPContextEstablishmentSpecificInformation [4] SEQUENCE + { + accessPointName [0] AccessPointName OPTIONAL, + pDPType [1] PDPType OPTIONAL, + qualityOfService [2] QualityOfService OPTIONAL, + locationInformationGPRS [3] LocationInformationGPRS OPTIONAL, + timeAndTimeZone [4] TimeAndTimezone OPTIONAL, + pDPInitiationType [5] PDPInitiationType OPTIONAL, + secondaryPDPContext [6] NULL OPTIONAL + }, + pDPContextEstablishmentAcknowledgementSpecificInformation [5] SEQUENCE + { + accessPointName [0] AccessPointName OPTIONAL, + chargingID [1] GPRSChargingID OPTIONAL, + pDPType [2] PDPType OPTIONAL, + qualityOfService [3] QualityOfService OPTIONAL, + locationInformationGPRS [4] LocationInformationGPRS OPTIONAL, + timeAndTimeZone [5] TimeAndTimezone OPTIONAL, + gGSNAddress [6] GSNAddress OPTIONAL + } +} + +-- EventReportGPRSArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +EventReportGPRSArg ::= + + SEQUENCE +{ + gPRSEventType [0] GPRSEventType, + miscGPRSInfo [1] MiscCallInfo OPTIONAL, + gPRSEventSpecificInformation [2] GPRSEventSpecificInformation OPTIONAL, + pDPID [3] PDPId OPTIONAL +} + +-- SupportedExtensionsid notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +SupportedExtensionsid ::= Code +-- Creation d'un nouveau type : NomObjetClasse-NomChampsClasse -- + + +-- ExtensionField notes: not recursive, exported, +-- locally refd 24 times, import refd 0 times +ExtensionField ::= SEQUENCE +{ + type SupportedExtensionsid, + criticality CriticalityType DEFAULT ignore, + value [1] SupportedExtensionsExtensionType +} + + + +-- ApplyChargingArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ApplyChargingArg ::= + + SEQUENCE +{ + aChBillingChargingCharacteristics [0] AChBillingChargingCharacteristics, + partyToCharge [2] SendingSideID DEFAULT '01'H, + extensions [3] ExtensionsArray OPTIONAL +} + +ExtensionsArray ::= + SEQUENCE SIZE (1..10) OF ExtensionField + + + +-- AssistRequestInstructionsArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +AssistRequestInstructionsArg ::= + + SEQUENCE +{ + correlationID [0] CorrelationID, + iPSSPCapabilities [2] IPSSPCapabilities, + extensions [3] ExtensionsArray OPTIONAL +} + + + +-- CallInformationRequestArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CallInformationRequestArg ::= + + SEQUENCE +{ + requestedInformationTypeList [0] RequestedInformationTypeList, + extensions [2] ExtensionsArray OPTIONAL, + legID [3] SendingSideID OPTIONAL +} + + + +-- ConnectArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ConnectArg ::= + + SEQUENCE +{ + destinationRoutingAddress [0] DestinationRoutingAddress, + alertingPattern [1] AlertingPattern OPTIONAL, + originalCalledPartyID [6] OriginalCalledPartyID OPTIONAL, + extensions [10] ExtensionsArray OPTIONAL, + carrier [11] Carrier OPTIONAL, + callingPartysCategory [28] CallingPartysCategory OPTIONAL, + redirectingPartyID [29] RedirectingPartyID OPTIONAL, + redirectionInformation [30] RedirectionInformation OPTIONAL, + genericNumbers [14] GenericNumbers OPTIONAL, + serviceInteractionIndicatorsTwo [15] ServiceInteractionIndicatorsTwo OPTIONAL, + chargeNumber [19] ChargeNumber OPTIONAL, + cug-Interlock [31] CUG-Interlock OPTIONAL, + cug-OutgoingAccess [32] NULL OPTIONAL, + suppressionOfAnnouncement [55] SuppressionOfAnnouncement OPTIONAL, + oCSIApplicable [56] OCSIApplicable OPTIONAL, + naOliInfo [57] NAOliInfo OPTIONAL +} + + + +-- ConnectToResourceArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ConnectToResourceArg ::= + + SEQUENCE +{ + resourceAddress CHOICE + { + ipRoutingAddress [0] IPRoutingAddress, + none [3] NULL + }, + extensions [4] ExtensionsArray OPTIONAL, + serviceInteractionIndicatorsTwo [7] ServiceInteractionIndicatorsTwo OPTIONAL +} + + + +-- ContinueWithArgumentArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ContinueWithArgumentArg ::= + + SEQUENCE +{ + alertingPattern [1] AlertingPattern OPTIONAL, + extensions [6] ExtensionsArray OPTIONAL, + serviceInteractionIndicatorsTwo [7] ServiceInteractionIndicatorsTwo OPTIONAL, + callingPartysCategory [12] CallingPartysCategory OPTIONAL, + genericNumbers [16] GenericNumbers OPTIONAL, + cug-Interlock [17] CUG-Interlock OPTIONAL, + cug-OutgoingAccess [18] NULL OPTIONAL, + chargeNumber [50] ChargeNumber OPTIONAL, + carrier [52] Carrier OPTIONAL, + suppressionOfAnnouncement [55] SuppressionOfAnnouncement OPTIONAL, + naOliInfo [56] NAOliInfo OPTIONAL +} + + + +-- EstablishTemporaryConnectionArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +EstablishTemporaryConnectionArg ::= + + SEQUENCE +{ + assistingSSPIPRoutingAddress [0] AssistingSSPIPRoutingAddress, + correlationID [1] CorrelationID OPTIONAL, + scfID [3] ScfID OPTIONAL, + extensions [4] ExtensionsArray OPTIONAL, + carrier [5] Carrier OPTIONAL, + serviceInteractionIndicatorsTwo [6] ServiceInteractionIndicatorsTwo OPTIONAL, + naOliInfo [50] NAOliInfo OPTIONAL, + chargeNumber [51] ChargeNumber OPTIONAL +} + + + +-- EventReportBCSMArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +EventReportBCSMArg ::= + + SEQUENCE +{ + eventTypeBCSM [0] EventTypeBCSM, + eventSpecificInformationBCSM [2] EventSpecificInformationBCSM OPTIONAL, + legID [3] ReceivingSideID OPTIONAL, + miscCallInfo [4] MiscCallInfo OPTIONAL, + extensions [5] ExtensionsArray OPTIONAL +} + + + +-- ResetTimerArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ResetTimerArg ::= + + SEQUENCE +{ + timerID [0] TimerID DEFAULT tssf, + timervalue [1] TimerValue, + extensions [2] ExtensionsArray OPTIONAL +} + + + +-- SendChargingInformationArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +SendChargingInformationArg ::= + + SEQUENCE +{ + sCIBillingChargingCharacteristics [0] SCIBillingChargingCharacteristics, + partyToCharge [1] SendingSideID, + extensions [2] ExtensionsArray OPTIONAL +} + + + +-- EventReportSMSArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +EventReportSMSArg ::= + + SEQUENCE +{ + eventTypeSMS [0] EventTypeSMS, + eventSpecificInformationSMS [1] EventSpecificInformationSMS OPTIONAL, + miscCallInfo [2] MiscCallInfo OPTIONAL, + extensions [10] ExtensionsArray OPTIONAL +} + + + +-- RequestReportSMSEventArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +RequestReportSMSEventArg ::= + + SEQUENCE +{ + sMSEvents [0] SMSEventArray, + extensions [10] ExtensionsArray OPTIONAL +} + +SMSEventArray ::= + SEQUENCE SIZE (1..10) OF SMSEvent + + + +-- ResetTimerSMSArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ResetTimerSMSArg ::= + + SEQUENCE +{ + timerID [0] TimerID DEFAULT tssf, + timervalue [1] TimerValue, + extensions [2] ExtensionsArray OPTIONAL +} + + + +-- CAMEL-AChBillingChargingCharacteristics notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CamelAChBillingChargingCharacteristics ::= CHOICE +{ + timeDurationCharging [0] SEQUENCE + { + maxCallPeriodDuration [0] INTEGER (1..864000), + releaseIfdurationExceeded [1] BOOLEAN DEFAULT FALSE, + tariffSwitchInterval [2] INTEGER (1..86400) OPTIONAL, + tone [3] BOOLEAN DEFAULT FALSE, + extensions [4] ExtensionsArray OPTIONAL + } +} + +-- CAMEL-CallResult notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CamelCallResult ::= CHOICE +{ + timeDurationChargingResult [0] SEQUENCE + { + partyToCharge [0] ReceivingSideID, + timeInformation [1] TimeInformation, + callActive [2] BOOLEAN DEFAULT TRUE, + callReleasedAtTcpExpiry [3] NULL OPTIONAL, + extensions [4] ExtensionsArray OPTIONAL + } +} + +-- RequestReportBCSMEventArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +RequestReportBCSMEventArg ::= + + SEQUENCE +{ + bcsmEvents [0] BCSMEventArray, + extensions [2] ExtensionsArray OPTIONAL +} + +BCSMEventArray ::= + SEQUENCE SIZE (1..10) OF BCSMEvent + + + +-- ConnectSMSArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +ConnectSMSArg ::= + + SEQUENCE +{ + callingPartysNumber [0] ISDN-AddressString OPTIONAL, + destinationSubscriberNumber [1] CalledPartyBCDNumber OPTIONAL, + sMSCAddress [2] ISDN-AddressString OPTIONAL, + extensions [10] ExtensionsArray OPTIONAL +} + + +-- CallInformationReportArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CallInformationReportArg ::= + + SEQUENCE +{ + requestedInformationList [0] RequestedInformationList, + extensions [2] ExtensionsArray OPTIONAL, + legID [3] ReceivingSideID OPTIONAL +} + + + +-- PlayAnnouncementArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +PlayAnnouncementArg ::= + + SEQUENCE +{ + informationToSend [0] InformationToSend, + disconnectFromIPForbidden [1] BOOLEAN DEFAULT TRUE, + requestAnnouncementComplete [2] BOOLEAN DEFAULT TRUE, + extensions [3] ExtensionsArray OPTIONAL +} + + + +-- PromptAndCollectUserInformationArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +PromptAndCollectUserInformationArg ::= + + SEQUENCE +{ + collectedInfo [0] CollectedInfo, + disconnectFromIPForbidden [1] BOOLEAN DEFAULT TRUE, + informationToSend [2] InformationToSend OPTIONAL, + extensions [3] ExtensionsArray OPTIONAL +} + + + +-- InitialDPGPRSArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +InitialDPGPRSArg ::= + + SEQUENCE +{ + serviceKey [0] ServiceKey, + gPRSEventType [1] GPRSEventType, + mSISDN [2] ISDN-AddressString, + iMSI [3] Imsi, + timeAndTimeZone [4] TimeAndTimezone, + gPRSMSClass [5] GPRSMSClass OPTIONAL, + pDPType [6] PDPType OPTIONAL, + qualityOfService [7] QualityOfService OPTIONAL, + accessPointName [8] AccessPointName OPTIONAL, + routeingAreaIdentity [9] RAIdentity OPTIONAL, + chargingID [10] GPRSChargingID OPTIONAL, + sGSNCapabilities [11] SGSNCapabilities OPTIONAL, + locationInformationGPRS [12] LocationInformationGPRS OPTIONAL, + pDPInitiationType [13] PDPInitiationType OPTIONAL, + extensions [14] ExtensionsArray OPTIONAL, + gGSNAddress [15] GSNAddress OPTIONAL, + secondaryPDPContext [16] NULL OPTIONAL +} + + + +-- CallGapArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +CallGapArg ::= + + SEQUENCE +{ + gapCriteria [0] GapCriteria, + gapIndicators [1] GapIndicators, + controlType [2] ControlType OPTIONAL, + gapTreatment [3] GapTreatment OPTIONAL, + extensions [4] ExtensionsArray OPTIONAL +} + + + +-- InitialDPArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +InitialDPArg ::= + + SEQUENCE +{ + serviceKey [0] ServiceKey, + calledPartyNumber [2] CalledPartyNumber OPTIONAL, + callingPartyNumber [3] CallingPartyNumber OPTIONAL, + callingPartysCategory [5] CallingPartysCategory OPTIONAL, + cGEncountered [7] CGEncountered OPTIONAL, + iPSSPCapabilities [8] IPSSPCapabilities OPTIONAL, + locationNumber [10] LocationNumber OPTIONAL, + originalCalledPartyID [12] OriginalCalledPartyID OPTIONAL, + extensions [15] ExtensionsArray OPTIONAL, + highLayerCompatibility [23] HighLayerCompatibility OPTIONAL, + additionalCallingPartyNumber [25] AdditionalCallingPartyNumber OPTIONAL, + bearerCapability [27] BearerCapability OPTIONAL, + eventTypeBCSM [28] EventTypeBCSM OPTIONAL, + redirectingPartyID [29] RedirectingPartyID OPTIONAL, + redirectionInformation [30] RedirectionInformation OPTIONAL, + cause [17] Cause OPTIONAL, + serviceInteractionIndicatorsTwo [32] ServiceInteractionIndicatorsTwo OPTIONAL, + carrier [37] Carrier OPTIONAL, + cug-Index [45] CUG-Index OPTIONAL, + cug-Interlock [46] CUG-Interlock OPTIONAL, + cug-OutgoingAccess [47] NULL OPTIONAL, + iMSI [50] Imsi OPTIONAL, + subscriberState [51] SubscriberState OPTIONAL, + locationInformation [52] LocationInformation OPTIONAL, + ext-basicServiceCode [53] Ext-BasicServiceCode OPTIONAL, + callReferenceNumber [54] CallReferenceNumber OPTIONAL, + mscAddress [55] ISDN-AddressString OPTIONAL, + calledPartyBCDNumber [56] CalledPartyBCDNumber OPTIONAL, + timeAndTimezone [57] TimeAndTimezone OPTIONAL, + gsm-ForwardingPending [58] NULL OPTIONAL, + initialDPArgExtension [59] InitialDPArgExtension OPTIONAL +} + + + +-- InitialDPSMSArg notes: not recursive, exported, +-- locally refd 1 times, import refd 0 times +InitialDPSMSArg ::= + + SEQUENCE +{ + serviceKey [0] ServiceKey, + destinationSubscriberNumber [1] CalledPartyBCDNumber OPTIONAL, + callingPartyNumber [2] ISDN-AddressString OPTIONAL, + eventTypeSMS [3] EventTypeSMS OPTIONAL, + iMSI [4] Imsi OPTIONAL, + locationInformationMSC [5] LocationInformation OPTIONAL, + locationInformationGPRS [6] LocationInformationGPRS OPTIONAL, + sMSCAddress [7] ISDN-AddressString OPTIONAL, + timeAndTimezone [8] TimeAndTimezone OPTIONAL, + tPShortMessageSubmissionSpecificInfo [9] TPShortMessageSubmissionInfo OPTIONAL, + tPProtocolIdentifier [10] TPProtocolIdentifier OPTIONAL, + tPDataCodingScheme [11] TPDataCodingScheme OPTIONAL, + tPValidityPeriod [12] TPValidityPeriod OPTIONAL, + extensions [13] ExtensionsArray OPTIONAL, + smsReferenceNumber [14] CallReferenceNumber OPTIONAL, + mscAddress [15] ISDN-AddressString OPTIONAL, + sgsnNumber [16] ISDN-AddressString OPTIONAL +} + + + +-- ExtensionContainer notes: not recursive, exported, +-- locally refd 0 times, import refd 0 times +ExtensionContainer ::= SEQUENCE +{ + privateExtensionList [0] PrivateExtensionList OPTIONAL, + pcs-Extensions [1] PCS-Extensions OPTIONAL +} + + + +-- CAMEL-SCIBillingChargingCharacteristics notes: not recursive, exported, +-- locally refd 0 times, import refd 0 times +CamelSCIBillingChargingCharacteristics ::= CHOICE +{ + aOCBeforeAnswer [0] AOCBeforeAnswer, + aOCAfterAnswer [1] AOCSubsequent +} + +-- CAMEL-SCIGPRSBillingChargingCharacteristics notes: not recursive, exported, +-- locally refd 0 times, import refd 0 times +CamelSCIGPRSBillingChargingCharacteristics ::= + + SEQUENCE +{ + aOCGPRS [0] AOCGprs, + pDPID [1] PDPId OPTIONAL +} + +-- ReleaseSMSArg notes: not recursive, exported, +-- locally refd 0 times, import refd 0 times +ReleaseSMSArg ::= + + +OCTET STRING (SIZE (1)) + +-- ApplyChargingGPRSArg notes: not recursive, exported, +-- locally refd 0 times, import refd 0 times +ApplyChargingGPRSArg ::= + + +SEQUENCE +{ + chargingCharacteristics [0] ChargingCharacteristics, + tariffSwitchInterval [1] INTEGER (1..86400) OPTIONAL, + pDPID [2] PDPId OPTIONAL +} + +-- ApplyChargingReportGPRSArg notes: not recursive, exported, +-- locally refd 0 times, import refd 0 times +ApplyChargingReportGPRSArg ::= + + SEQUENCE +{ + chargingResult [0] ChargingResult, + qualityOfService [1] QualityOfService OPTIONAL, + active [2] BOOLEAN DEFAULT TRUE, + pDPID [3] PDPId OPTIONAL, + chargingRollOver [4] ChargingRollOver OPTIONAL +} + +-- CancelGPRSArg notes: not recursive, exported, +-- locally refd 0 times, import refd 0 times +CancelGPRSArg ::= + + SEQUENCE +{ + pDPID [0] PDPId OPTIONAL +} + +-- ContinueGPRSArg notes: not recursive, exported, +-- locally refd 0 times, import refd 0 times +ContinueGPRSArg ::= + + SEQUENCE +{ + pDPID [0] PDPId OPTIONAL +} + +-- ResetTimerGPRSArg notes: not recursive, exported, +-- locally refd 0 times, import refd 0 times +ResetTimerGPRSArg ::= + + SEQUENCE +{ + timerID [0] TimerID DEFAULT tssf, + timervalue [1] TimerValue +} + + +-- ############################# +-- Definition of range constants +-- ############################# + +leg1 LegType ::= '01'H +leg2 LegType ::= '02'H + +minCauseLength INTEGER ::= 2 +numOfInfoItems INTEGER ::= 4 + +opcode-initialDP Code ::= 0 +opcode-assistRequestInstructions Code ::= 16 +opcode-establishTemporaryConnection Code ::= 17 +opcode-disconnectForwardConnection Code ::= 18 +opcode-connectToResource Code ::= 19 +opcode-connect Code ::= 20 +opcode-releaseCall Code ::= 22 +opcode-requestReportBCSMEvent Code ::= 23 +opcode-eventReportBCSM Code ::= 24 +opcode-continue Code ::= 31 +opcode-continueWithArgument Code ::= 56 +opcode-resetTimer Code ::= 33 +opcode-furnishChargingInformation Code ::= 34 +opcode-applyCharging Code ::= 35 +opcode-applyChargingReport Code ::= 36 +opcode-callGap Code ::= 41 +opcode-callInformationReport Code ::= 44 +opcode-callInformationRequest Code ::= 45 +opcode-sendChargingInformation Code ::= 46 +opcode-playAnnouncement Code ::= 47 +opcode-promptAndCollectUserInformation Code ::= 48 +opcode-specializedResourceReport Code ::= 49 +opcode-cancel Code ::= 53 +opcode-activityTest Code ::= 55 +opcode-initialDPSMS Code ::= 60 +opcode-furnishChargingInformationSMS Code ::= 61 +opcode-connectSMS Code ::= 62 +opcode-requestReportSMSEvent Code ::= 63 +opcode-eventReportSMS Code ::= 64 +opcode-continueSMS Code ::= 65 +opcode-releaseSMS Code ::= 66 +opcode-resetTimerSMS Code ::= 67 +opcode-activityTestGPRS Code ::= 70 +opcode-applyChargingGPRS Code ::= 71 +opcode-applyChargingReportGPRS Code ::= 72 +opcode-cancelGPRS Code ::= 73 +opcode-connectGPRS Code ::= 74 +opcode-continueGPRS Code ::= 75 +opcode-entityReleasedGPRS Code ::= 76 +opcode-furnishChargingInformationGPRS Code ::= 77 +opcode-initialDPGPRS Code ::= 78 +opcode-releaseGPRS Code ::= 79 +opcode-eventReportGPRS Code ::= 80 +opcode-requestReportGPRSEvent Code ::= 81 +opcode-resetTimerGPRS Code ::= 82 +opcode-sendChargingInformationGPRS Code ::= 83 + +errcode-canceled Code ::= 0 +errcode-cancelFailed Code ::= 1 +errcode-eTCFailed Code ::= 3 +errcode-improperCallerResponse Code ::= 4 +errcode-missingCustomerRecord Code ::= 6 +errcode-missingParameter Code ::= 7 +errcode-parameterOutOfRange Code ::= 8 +errcode-requestedInfoError Code ::= 10 +errcode-systemFailure Code ::= 11 +errcode-taskRefused Code ::= 12 +errcode-unavailableResource Code ::= 13 +errcode-unexpectedComponentSequence Code ::= 14 +errcode-unexpectedDataValue Code ::= 15 +errcode-unexpectedParameter Code ::= 16 +errcode-unknownLegID Code ::= 17 +errcode-unknownPDPId Code ::= 50 + +maxNumOfPrivateExtensions INTEGER ::= 10 +maxISDN-AddressLength INTEGER ::= 9 +maxAddressLength INTEGER ::= 20 +highLayerCompatibilityLength INTEGER ::= 2 +cAPSpecificBoundSetminAccessPointNameLength INTEGER ::= 1 +cAPSpecificBoundSetmaxAccessPointNameLength INTEGER ::= 100 +cAPSpecificBoundSetminAChBillingChargingLength INTEGER ::= 5 +cAPSpecificBoundSetmaxAChBillingChargingLength INTEGER ::= 177 +cAPSpecificBoundSetminAttributesLength INTEGER ::= 2 +cAPSpecificBoundSetmaxAttributesLength INTEGER ::= 10 +cAPSpecificBoundSetmaxBearerCapabilityLength INTEGER ::= 11 +cAPSpecificBoundSetminCalledPartyBCDNumberLength INTEGER ::= 1 +cAPSpecificBoundSetmaxCalledPartyBCDNumberLength INTEGER ::= 41 +cAPSpecificBoundSetminCalledPartyNumberLength INTEGER ::= 2 +cAPSpecificBoundSetmaxCalledPartyNumberLength INTEGER ::= 18 +cAPSpecificBoundSetminCallingPartyNumberLength INTEGER ::= 2 +cAPSpecificBoundSetmaxCallingPartyNumberLength INTEGER ::= 10 +cAPSpecificBoundSetminCallResultLength INTEGER ::= 12 +cAPSpecificBoundSetmaxCallResultLength INTEGER ::= 186 +cAPSpecificBoundSetminCarrierLength INTEGER ::= 4 +cAPSpecificBoundSetmaxCarrierLength INTEGER ::= 4 +cAPSpecificBoundSetmaxCauseLength INTEGER ::= 32 +cAPSpecificBoundSetminDigitsLength INTEGER ::= 2 +cAPSpecificBoundSetmaxDigitsLength INTEGER ::= 16 +cAPSpecificBoundSetminFCIBillingChargingDataLength INTEGER ::= 1 +cAPSpecificBoundSetmaxFCIBillingChargingDataLength INTEGER ::= 160 +cAPSpecificBoundSetminFCIBillingChargingLength INTEGER ::= 5 +cAPSpecificBoundSetmaxFCIBillingChargingLength INTEGER ::= 225 +cAPSpecificBoundSetminGenericNumberLength INTEGER ::= 3 +cAPSpecificBoundSetmaxGenericNumberLength INTEGER ::= 11 +cAPSpecificBoundSetminIPSSPCapabilitiesLength INTEGER ::= 1 +cAPSpecificBoundSetmaxIPSSPCapabilitiesLength INTEGER ::= 4 +cAPSpecificBoundSetminLocationNumberLength INTEGER ::= 2 +cAPSpecificBoundSetmaxLocationNumberLength INTEGER ::= 10 +cAPSpecificBoundSetminMessageContentLength INTEGER ::= 1 +cAPSpecificBoundSetmaxMessageContentLength INTEGER ::= 127 +cAPSpecificBoundSetminOriginalCalledPartyIDLength INTEGER ::= 2 +cAPSpecificBoundSetmaxOriginalCalledPartyIDLength INTEGER ::= 10 +cAPSpecificBoundSetminpDPAddressLength INTEGER ::= 1 +cAPSpecificBoundSetmaxpDPAddressLength INTEGER ::= 63 +cAPSpecificBoundSetminRedirectingPartyIDLength INTEGER ::= 2 +cAPSpecificBoundSetmaxRedirectingPartyIDLength INTEGER ::= 10 +cAPSpecificBoundSetminScfIDLength INTEGER ::= 2 +cAPSpecificBoundSetmaxScfIDLength INTEGER ::= 10 +cAPSpecificBoundSetminSCIBillingChargingLength INTEGER ::= 4 +cAPSpecificBoundSetmaxSCIBillingChargingLength INTEGER ::= 124 +cAPSpecificBoundSetminTimeAndTimezoneLength INTEGER ::= 8 +cAPSpecificBoundSetmaxTimeAndTimezoneLength INTEGER ::= 8 +cAPSpecificBoundSetnumOfBCSMEvents INTEGER ::= 10 +cAPSpecificBoundSetnumOfSMSEvents INTEGER ::= 10 +cAPSpecificBoundSetnumOfGPRSEvents INTEGER ::= 10 +cAPSpecificBoundSetnumOfExtensions INTEGER ::= 10 +cAPSpecificBoundSetnumOfGenericNumbers INTEGER ::= 5 +cAPSpecificBoundSetnumOfMessageIDs INTEGER ::= 16 + + +END + + diff --git a/asn1/camel/camel.cnf b/asn1/camel/camel.cnf new file mode 100644 index 0000000000..0027e1b8bb --- /dev/null +++ b/asn1/camel/camel.cnf @@ -0,0 +1,20 @@ +# inap.cnf +# inap conformation file + +# $Id$ + +#.MODULE_IMPORT + +#.EXPORTS + + +#.PDU + + +#.NO_EMIT + +#.TYPE_RENAME + +#.FIELD_RENAME + + diff --git a/asn1/camel/packet-camel-template.c b/asn1/camel/packet-camel-template.c new file mode 100644 index 0000000000..2eeebf9038 --- /dev/null +++ b/asn1/camel/packet-camel-template.c @@ -0,0 +1,657 @@ +/* packet-camel-template.c + * Routines for Camel + * Copyright 2004, Tim Endean <endeant@hotmail.com> + * Copyright 2005, Olivier Jacques <olivier.jacques@hp.com> + * Built from the gsm-map dissector Copyright 2004, Anders Broman <anders.broman@ericsson.com> + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@ethereal.com> + * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * References: ETSI 300 374 + */ +/* + * Indentation logic: this file is indented with 2 spaces indentation. + * there are no tabs. + */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include <glib.h> +#include <epan/packet.h> +#include <epan/prefs.h> +#include <epan/conversation.h> +#include <epan/tap.h> + +#include <stdio.h> +#include <string.h> + +#include "packet-ber.h" +#include "packet-camel.h" +#include "packet-q931.h" +#include "packet-e164.h" +#include "packet-isup.h" + +#define PNAME "Camel" +#define PSNAME "CAMEL" +#define PFNAME "camel" + +/* Initialize the protocol and registered fields */ +int proto_camel = -1; +static int hf_camel_invokeCmd = -1; /* Opcode */ +static int hf_camel_invokeid = -1; /* INTEGER */ +static int hf_camel_absent = -1; /* NULL */ +static int hf_camel_invokeId = -1; /* InvokeId */ +static int hf_camel_invoke = -1; /* InvokePDU */ +static int hf_camel_returnResult = -1; /* InvokePDU */ +static int hf_camel_returnResult_result = -1; +static int hf_camel_getPassword = -1; +static int hf_camel_currentPassword = -1; +#include "packet-camel-hf.c" +static guint global_tcap_itu_ssn = 0; + +/* Initialize the subtree pointers */ +static gint ett_camel = -1; +static gint ett_camel_InvokeId = -1; +static gint ett_camel_InvokePDU = -1; +static gint ett_camel_ReturnResultPDU = -1; +static gint ett_camel_ReturnResult_result = -1; +static gint ett_camel_camelPDU = -1; +static gint ett_camelisup_parameter = -1; +#include "packet-camel-ett.c" + +static int hf_camel_nature_of_number = -1; +static int hf_camel_number_plan = -1; +static int hf_camel_cause_indicator = -1; + +/* Preference settings default */ +#define MAX_SSN 254 +static range_t *global_ssn_range; +static range_t *ssn_range; +dissector_handle_t camel_handle; + +/* Global variables */ + +int application_context_version; + +static int dissect_invokeCmd(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset); + +static char* +unpack_digits(tvbuff_t *tvb, int offset){ + + int length; + guint8 octet; + int i=0; + char *digit_str; + + length = tvb_length(tvb); + length = length - offset; + digit_str = g_malloc(length+1); + + while ( offset < length ){ + octet = tvb_get_guint8(tvb,offset); + digit_str[i] = ((octet & 0x0f) + 0x30); + i++; + + /* + * unpack second value in byte + */ + octet = octet >> 4; + + if (octet == 0x0f) /* odd number bytes - hit filler */ + break; + + digit_str[i] = ((octet & 0x0f) + 0x30); + i++; + offset++; + + } + digit_str[i]= '\0'; + return digit_str; +} + +static const true_false_string camel_extension_value = { + "No Extension", + "Extension" +}; +static const value_string camel_nature_of_number_values[] = { + { 0x00, "unknown" }, + { 0x01, "International Number" }, + { 0x02, "National Significant Number" }, + { 0x03, "Network Specific Number" }, + { 0x04, "Subscriber Number" }, + { 0x05, "Reserved" }, + { 0x06, "Abbreviated Number" }, + { 0x07, "Reserved for extension" }, + { 0, NULL } +}; +static const value_string camel_number_plan_values[] = { + { 0x00, "unknown" }, + { 0x01, "ISDN/Telephony Numbering (Rec ITU-T E.164)" }, + { 0x02, "spare" }, + { 0x03, "Data Numbering (ITU-T Rec. X.121)" }, + { 0x04, "Telex Numbering (ITU-T Rec. F.69)" }, + { 0x05, "spare" }, + { 0x06, "Land Mobile Numbering (ITU-T Rec. E.212)" }, + { 0x07, "spare" }, + { 0x08, "National Numbering" }, + { 0x09, "Private Numbering" }, + { 0x0f, "Reserved for extension" }, + { 0, NULL } +}; + +/* End includes from old" packet-camel.c */ + +#include "packet-camel-fn.c" + +const value_string camel_opr_code_strings[] = { + + {0, "InitialDP"}, + {16, "AssistRequestInstructions"}, + {17, "EstablishTemporaryConnection"}, + {18, "DisconnectForwardConnection"}, + {19, "ConnectToResource"}, + {20, "Connect"}, + {22, "ReleaseCall"}, + {23, "RequestReportBCSMEvent"}, + {24, "EventReportBCSM"}, + {31, "Continue"}, + {33, "ResetTimer"}, + {34, "FurnishChargingInformation"}, + {35, "ApplyCharging"}, + {36, "ApplyChargingReport"}, + {41, "CallGap"}, + {44, "CallInformationReport"}, + {45, "CallInformationRequest"}, + {46, "SendChargingInformation"}, + {47, "PlayAnnouncement"}, + {48, "PromptAndCollectUserInformation"}, + {49, "SpecializedResourceReport"}, + {53, "Cancel"}, + {55, "ActivityTest"}, + {56, "ContinueWithArgument"}, + {60, "InitialDPSMS"}, + {61, "FurnishChargingInformationSMS"}, + {62, "ConnectSMS"}, + {63, "RequestReportSMSEvent"}, + {64, "EventReportSMS"}, + {65, "ContinueSMS"}, + {66, "ReleaseSMS"}, + {67, "ResetTimerSMS"}, + {70, "ActivityTestGPRS"}, + {71, "ApplyChargingGPRS"}, + {72, "ApplyChargingReportGPRS"}, + {73, "CancelGPRS"}, + {74, "ConnectGPRS"}, + {75, "ContinueGPRS"}, + {76, "EntityReleasedGPRS"}, + {77, "FurnishChargingInformationGPRS"}, + {78, "InitialDPGPRS"}, + {79, "ReleaseGPRS"}, + {80, "EventReportGPRS"}, + {81, "RequestReportGPRSEvent"}, + {82, "ResetTimerGPRS"}, + {83, "SendChargingInformationGPRS"} +}; + + +static guint32 opcode=0; + +static int +dissect_camel_Opcode(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { + offset = dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_index, &opcode); + + if (check_col(pinfo->cinfo, COL_INFO)){ + /* Add Camel Opcode to INFO column */ + col_append_fstr(pinfo->cinfo, COL_INFO, val_to_str(opcode, camel_opr_code_strings, "Unknown Camel (%u)")); + col_append_fstr(pinfo->cinfo, COL_INFO, " "); + } + return offset; +} + +static int dissect_invokeData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + switch(opcode){ + case 0: /*InitialDP*/ + offset=dissect_camel_InitialDPArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 16: /*AssistRequestInstructions*/ + offset=dissect_camel_AssistRequestInstructionsArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 17: /*EstablishTemporaryConnection*/ + offset=dissect_camel_EstablishTemporaryConnectionArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 18: /*DisconnectForwardConnections*/ + proto_tree_add_text(tree, tvb, offset, -1, "Disconnect Forward Connection"); + break; + case 19: /*ConnectToResource*/ + offset=dissect_camel_ConnectToResourceArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 20: /*Connect*/ + offset=dissect_camel_ConnectArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 22: /*releaseCall*/ + offset=dissect_camel_ReleaseCallArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 23: /*RequestReportBCSMEvent*/ + offset=dissect_camel_RequestReportBCSMEventArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 24: /*EventReportBCSM*/ + offset=dissect_camel_EventReportBCSMArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 31: /*Continue*/ + /* Continue: no arguments - do nothing */ + break; + case 33: /*ResetTimer*/ + offset=dissect_camel_ResetTimerArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 34: /*FurnishChargingInformation*/ + offset=dissect_camel_FurnishChargingInformationArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 35: /*ApplyCharging*/ + offset=dissect_camel_ApplyChargingArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 36: /*ApplyChargingReport*/ + offset=dissect_camel_ApplyChargingReportArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 41: /*CallGap*/ + offset=dissect_camel_CallGapArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 44: /*CallInformationReport*/ + offset=dissect_camel_CallInformationReportArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 45: /*CallInformationRequest*/ + offset=dissect_camel_CallInformationRequestArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 46: /*SendChargingInformation*/ + offset=dissect_camel_SendChargingInformationArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 47: /*PlayAnnouncement*/ + offset=dissect_camel_PlayAnnouncementArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 48: /*PromptAndCollectUserInformation*/ + offset=dissect_camel_PromptAndCollectUserInformationArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 49: /*SpecializedResourceReport*/ + offset=dissect_camel_SpecializedResourceReportArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 53: /*Cancel*/ + offset=dissect_camel_CancelArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 56: /*ContinueWithArgument*/ + offset=dissect_camel_ContinueWithArgumentArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 60: /*InitialDPSMS*/ + offset=dissect_camel_InitialDPSMSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 61: /*FurnishChargingInformationSMS*/ + offset=dissect_camel_FurnishChargingInformationSMSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 62: /*ConnectSMS*/ + offset=dissect_camel_ConnectSMSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 63: /*RequestReportSMSEvent*/ + offset=dissect_camel_RequestReportSMSEventArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 64: /*EventReportSMS*/ + offset=dissect_camel_EventReportSMSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 65: /*ContinueSMS*/ + /* ContinueSMS: no arguments - do nothing */ + break; + case 66: /*ReleaseSMS*/ + offset=dissect_camel_ReleaseSMSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 67: /*ResetTimerSMS*/ + offset=dissect_camel_ResetTimerSMSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 71: /*ApplyChargingGPRS*/ + offset=dissect_camel_ApplyChargingGPRSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 73: /*CancelGPRS*/ + offset=dissect_camel_CancelGPRSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 74: /*ConnectGPRS*/ + offset=dissect_camel_ConnectGPRSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 75: /*ContinueGPRS*/ + offset=dissect_camel_ContinueGPRSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 77: /*FurnishChargingInformationGPRS*/ + offset=dissect_camel_FurnishChargingInformationGPRSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 78: /*InitialDPGPRS*/ + offset=dissect_camel_InitialDPGPRSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 79: /*ReleaseGPRS*/ + offset=dissect_camel_ReleaseGPRSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 81: /*RequestReportGPRSEvent*/ + offset=dissect_camel_RequestReportGPRSEventArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 82: /*ResetTimerGPRS*/ + offset=dissect_camel_ResetTimerGPRSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 83: /*SendChargingInformationGPRS*/ + offset=dissect_camel_SendChargingInformationGPRSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + default: + proto_tree_add_text(tree, tvb, offset, -1, "Unknown invokeData blob"); + /* todo call the asn.1 dissector */ + } + return offset; +} + + +static int dissect_returnResultData(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + switch(opcode){ + case 48: /*PromptAndCollectUserInformation*/ + offset=dissect_camel_ReceivedInformationArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 55: /*ActivityTest*/ + /* ActivityTest: no arguments - do nothing */ + break; + case 70: /*ActivityTestGPRS*/ + /* ActivityTestGPRS: no arguments - do nothing */ + break; + case 72: /*ApplyChargingReportGPRS*/ + offset=dissect_camel_ApplyChargingReportGPRSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 76: /*EntityReleasedGPRS*/ + offset=dissect_camel_EntityReleasedGPRSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + case 80: /*EventReportGPRS*/ + offset=dissect_camel_EventReportGPRSArg(FALSE, tvb, offset, pinfo, tree, -1); + break; + default: + proto_tree_add_text(tree, tvb, offset, -1, "Unknown returnResultData blob"); + } + return offset; +} + +static int +dissect_invokeCmd(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_camel_Opcode(FALSE, tvb, offset, pinfo, tree, hf_camel_invokeCmd); +} + +static int dissect_invokeid(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_ber_integer(FALSE, pinfo, tree, tvb, offset, hf_camel_invokeid, NULL); +} + + +static const value_string InvokeId_vals[] = { + { 0, "invokeid" }, + { 1, "absent" }, + { 0, NULL } +}; + +static int dissect_absent(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_camel_NULL(FALSE, tvb, offset, pinfo, tree, hf_camel_absent); +} + +static const ber_choice_t InvokeId_choice[] = { + { 0, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeid }, + { 1, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_absent }, + { 0, 0, 0, 0, NULL } +}; + +static int +dissect_camel_InvokeId(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { + offset = dissect_ber_choice(pinfo, tree, tvb, offset, + InvokeId_choice, hf_index, ett_camel_InvokeId); + + return offset; +} +static int dissect_invokeId(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_camel_InvokeId(FALSE, tvb, offset, pinfo, tree, hf_camel_invokeId); +} + +static const ber_sequence_t InvokePDU_sequence[] = { + { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId }, + { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeCmd }, + { BER_CLASS_UNI, -1/*depends on Cmd*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeData }, + { 0, 0, 0, NULL } +}; + +static int +dissect_camel_InvokePDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + InvokePDU_sequence, hf_index, ett_camel_InvokePDU); + + return offset; +} +static int dissect_invoke_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_camel_InvokePDU(TRUE, tvb, offset, pinfo, tree, hf_camel_invoke); +} + +static const ber_sequence_t ReturnResult_result_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_invokeCmd }, + { BER_CLASS_UNI, -1/*depends on Cmd*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_returnResultData }, + { 0, 0, 0, NULL } +}; +static int +dissect_returnResult_result(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + offset = dissect_ber_sequence(FALSE, pinfo, tree, tvb, offset, + ReturnResult_result_sequence, hf_camel_returnResult_result, ett_camel_ReturnResult_result); + + return offset; +} + +static const ber_sequence_t ReturnResultPDU_sequence[] = { + { BER_CLASS_UNI, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_invokeId }, + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_returnResult_result }, + { 0, 0, 0, NULL } +}; + +static int +dissect_camel_returnResultPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + ReturnResultPDU_sequence, hf_index, ett_camel_ReturnResultPDU); + + return offset; +} +static int dissect_returnResult_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_camel_returnResultPDU(TRUE, tvb, offset, pinfo, tree, hf_camel_returnResult); +} + +static const value_string camelPDU_vals[] = { + { 1, "Invoke " }, + { 2, "ReturnResult " }, + { 3, "ReturnError " }, + { 4, "Reject " }, + { 0, NULL } +}; + +static const ber_choice_t camelPDU_choice[] = { + { 1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_invoke_impl }, + { 2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_returnResult_impl }, +#ifdef REMOVED + { 3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_returnError_impl }, + { 4, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_reject_impl }, +#endif + { 0, 0, 0, 0, NULL } +}; + +static guint8 camel_pdu_type = 0; +static guint8 camel_pdu_size = 0; + +static int +dissect_camel_camelPDU(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) { + + char *version_ptr, *version_str; + + opcode = 0; + application_context_version = 0; + if (pinfo->private_data != NULL){ + version_ptr = strrchr(pinfo->private_data,'.'); + version_str = g_strdup(version_ptr+1); + application_context_version = atoi(version_str); + } + + camel_pdu_type = tvb_get_guint8(tvb, offset)&0x0f; + /* Get the length and add 2 */ + camel_pdu_size = tvb_get_guint8(tvb, offset+1)+2; + + if (check_col(pinfo->cinfo, COL_INFO)){ + /* Populate the info column with PDU type*/ + col_append_fstr(pinfo->cinfo, COL_INFO, val_to_str(camel_pdu_type, camelPDU_vals, "Unknown Camel (%u)")); + } + + offset = dissect_ber_choice(pinfo, tree, tvb, offset, + camelPDU_choice, hf_index, ett_camel_camelPDU); + + return offset; +} + +static void +dissect_camel(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree) +{ + proto_item *item=NULL; + proto_tree *tree=NULL; + gint op_idx; + gchar *str = NULL; + + if (check_col(pinfo->cinfo, COL_PROTOCOL)) { + col_set_str(pinfo->cinfo, COL_PROTOCOL, "Camel"); + } + + /* create display subtree for the protocol */ + if(parent_tree){ + item = proto_tree_add_item(parent_tree, proto_camel, tvb, 0, -1, FALSE); + tree = proto_item_add_subtree(item, ett_camel); + } + + dissect_camel_camelPDU(FALSE, tvb, 0, pinfo, tree, -1); + +} + +/*--- proto_reg_handoff_camel ---------------------------------------*/ +static void range_delete_callback(guint32 ssn) +{ + if (ssn) { + dissector_delete("tcap.itu_ssn", ssn, camel_handle); + } +} + +static void range_add_callback(guint32 ssn) +{ + if (ssn) { + dissector_add("tcap.itu_ssn", ssn, camel_handle); + } +} + +void proto_reg_handoff_camel(void) { + + static int camel_prefs_initialized = FALSE; + + if (!camel_prefs_initialized) { + camel_prefs_initialized = TRUE; + camel_handle = create_dissector_handle(dissect_camel, proto_camel); + } else { + range_foreach(ssn_range, range_delete_callback); + } + + g_free(ssn_range); + ssn_range = range_copy(global_ssn_range); + + range_foreach(ssn_range, range_add_callback); + +} + +void proto_register_camel(void) { + module_t *camel_module; + /* List of fields */ + static hf_register_info hf[] = { + { &hf_camel_cause_indicator, /* Currently not enabled */ + { "Cause indicator", "camel.cause_indicator", + FT_UINT8, BASE_DEC, VALS(q850_cause_code_vals), 0x7f, + "", HFILL }}, + { &hf_camel_invokeCmd, + { "invokeCmd", "camel.invokeCmd", + FT_UINT32, BASE_DEC, VALS(camel_opr_code_strings), 0, + "InvokePDU/invokeCmd", HFILL }}, + { &hf_camel_invokeid, + { "invokeid", "camel.invokeid", + FT_INT32, BASE_DEC, NULL, 0, + "InvokeId/invokeid", HFILL }}, + { &hf_camel_absent, + { "absent", "camel.absent", + FT_NONE, BASE_NONE, NULL, 0, + "InvokeId/absent", HFILL }}, + { &hf_camel_invokeId, + { "invokeId", "camel.invokeId", + FT_UINT32, BASE_DEC, VALS(InvokeId_vals), 0, + "InvokePDU/invokeId", HFILL }}, + { &hf_camel_invoke, + { "invoke", "camel.invoke", + FT_NONE, BASE_NONE, NULL, 0, + "camelPDU/invoke", HFILL }}, + { &hf_camel_returnResult, + { "returnResult", "camel.returnResult", + FT_NONE, BASE_NONE, NULL, 0, + "camelPDU/returnResult", HFILL }}, +#ifdef REMOVED + { &hf_camel_extension, + { "Extension", "camel.extension", + FT_BOOLEAN, 8, TFS(&camel_extension_value), 0x80, + "Extension", HFILL }}, + { &hf_camel_nature_of_number, + { "Nature of number", "gsm_map.nature_of_number", + FT_UINT8, BASE_HEX, VALS(camel_nature_of_number_values), 0x70, + "Nature of number", HFILL }}, + { &hf_camel_number_plan, + { "Number plan", "camel.number_plan", + FT_UINT8, BASE_HEX, VALS(camel_number_plan_values), 0x0f, + "Number plan", HFILL }}, + { &hf_camel_digits, + { "Address digits", "camel.address_digits", + FT_STRING, BASE_NONE, NULL, 0, + "Address digits", HFILL }}, +#endif +#include "packet-camel-hfarr.c" + }; + + /* List of subtrees */ + static gint *ett[] = { + &ett_camel, + &ett_camel_InvokeId, + &ett_camel_InvokePDU, + &ett_camel_ReturnResultPDU, + &ett_camel_ReturnResult_result, + &ett_camel_camelPDU, + &ett_camelisup_parameter, +#include "packet-camel-ettarr.c" + }; + + /* Register protocol */ + proto_camel = proto_register_protocol(PNAME, PSNAME, PFNAME); + + proto_register_field_array(proto_camel, hf, array_length(hf)); + proto_register_subtree_array(ett, array_length(ett)); + + /* Register our configuration options, particularly our ssn:s */ + /* Set default SSNs */ + range_convert_str(&global_ssn_range, "6-9", MAX_SSN); + ssn_range = range_empty(); + + camel_module = prefs_register_protocol(proto_camel, proto_reg_handoff_camel); + + prefs_register_range_preference(camel_module, "tcap.ssn", + "TCAP SSNs", + "TCAP Subsystem numbers used for Camel", + &global_ssn_range, MAX_SSN); +} + diff --git a/asn1/camel/packet-camel-template.h b/asn1/camel/packet-camel-template.h new file mode 100644 index 0000000000..3e37f640f4 --- /dev/null +++ b/asn1/camel/packet-camel-template.h @@ -0,0 +1,43 @@ +/* packet-camel-template.h + * Routines for Camel + * Copyright 2004, Tim Endean <endeant@hotmail.com> + * Copyright 2005, Olivier Jacques <olivier.jacques@hp.com> + * Built from the gsm-map dissector Copyright 2004, Anders Broman <anders.broman@ericsson.com> + * + * Ethereal - Network traffic analyzer + * By Gerald Combs <gerald@ethereal.com> + * 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * References: ETSI 300 374 + */ +/* + * Indentation logic: this file is indented with 2 spaces indentation. + * there are no tabs. + */ + + +#ifndef PACKET_camel_H +#define PACKET_camel_H + +/* Defines for the camel taps */ +#define camel_MAX_NUM_OPR_CODES 256 + + +ETH_VAR_IMPORT const value_string camel_opr_code_strings[]; +static int dissect_camel_DestinationAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_); +/* #include "packet-camel-exp.h"*/ + +#endif /* PACKET_camel_H */
\ No newline at end of file |