diff options
author | Anders Broman <anders.broman@ericsson.com> | 2012-07-09 14:09:59 +0000 |
---|---|---|
committer | Anders Broman <anders.broman@ericsson.com> | 2012-07-09 14:09:59 +0000 |
commit | eedc186e94e1ceb87d27f02980936209bd1ccdd1 (patch) | |
tree | db55dff151edc32d1d2821acc7f8cdd9c212f88d | |
parent | 3be39a23aa67f821dd4785199e6e778414715254 (diff) |
Dissect Release 8 CDR:s
svn path=/trunk/; revision=43624
-rw-r--r-- | asn1/gprscdr/GPRSChargingDataTypesV641.asn | 301 | ||||
-rw-r--r-- | asn1/gprscdr/GPRSChargingDataTypesV8e0.asn | 848 | ||||
-rw-r--r-- | asn1/gprscdr/GenericChargingDataTypesV8e0.asn | 591 | ||||
-rw-r--r-- | asn1/gprscdr/Makefile.common | 5 | ||||
-rw-r--r-- | asn1/gprscdr/gprscdr.cnf | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-gprscdr.c | 1870 | ||||
-rw-r--r-- | epan/dissectors/packet-gprscdr.h | 5 | ||||
-rw-r--r-- | epan/dissectors/packet-gtp.c | 6 |
8 files changed, 3238 insertions, 391 deletions
diff --git a/asn1/gprscdr/GPRSChargingDataTypesV641.asn b/asn1/gprscdr/GPRSChargingDataTypesV641.asn index 50bddc2ce9..44ba9ed29b 100644 --- a/asn1/gprscdr/GPRSChargingDataTypesV641.asn +++ b/asn1/gprscdr/GPRSChargingDataTypesV641.asn @@ -47,11 +47,11 @@ GPRSCallEventRecord ::= CHOICE -- Record values 20..27 are GPRS specific -- Record values 29..30 are GPRS and MBMS specific - sgsnPDPRecord [20] SGSNPDPRecord, + sgsnPDPRecord [20] SGSNPDPRecordV651, ggsnPDPRecord [21] GGSNPDPRecord, sgsnMMRecord [22] SGSNMMRecord, - sgsnSMORecord [23] SGSNSMORecord, - sgsnSMTRecord [24] SGSNSMTRecord, + sgsnSMORecord [23] SGSNSMORecordV651, + sgsnSMTRecord [24] SGSNSMTRecordV651, -- sgsnLCTRecord [25] SGSNLCTRecord, -- sgsnLCORecord [26] SGSNLCORecord, -- sgsnLCNRecord [27] SGSNLCNRecord, @@ -73,10 +73,10 @@ GGSNPDPRecord ::= SET pdpType [8] PDPType OPTIONAL, servedPDPAddress [9] PDPAddress OPTIONAL, dynamicAddressFlag [11] DynamicAddressFlag OPTIONAL, - listOfTrafficVolumes [12] SEQUENCE OF ChangeOfCharCondition OPTIONAL, + listOfTrafficVolumes [12] SEQUENCE OF ChangeOfCharConditionV651 OPTIONAL, recordOpeningTime [13] TimeStamp, duration [14] CallDuration, - causeForRecClosing [15] CauseForRecClosing, + causeForRecClosing [15] CauseForRecClosingV651, diagnostics [16] Diagnostics OPTIONAL, recordSequenceNumber [17] INTEGER OPTIONAL, nodeID [18] NodeID OPTIONAL, @@ -109,10 +109,10 @@ EGSNPDPRecord ::= SET pdpType [8] PDPType OPTIONAL, servedPDPAddress [9] PDPAddress OPTIONAL, dynamicAddressFlag [11] DynamicAddressFlag OPTIONAL, - listOfTrafficVolumes [12] SEQUENCE OF ChangeOfCharCondition OPTIONAL, + listOfTrafficVolumes [12] SEQUENCE OF ChangeOfCharConditionV651 OPTIONAL, recordOpeningTime [13] TimeStamp, duration [14] CallDuration, - causeForRecClosing [15] CauseForRecClosing, + causeForRecClosing [15] CauseForRecClosingV651, diagnostics [16] Diagnostics OPTIONAL, recordSequenceNumber [17] INTEGER OPTIONAL, nodeID [18] NodeID OPTIONAL, @@ -131,37 +131,37 @@ EGSNPDPRecord ::= SET mSTimeZone [31] MSTimeZone OPTIONAL, userLocationInformation [32] OCTET STRING OPTIONAL, cAMELChargingInformation [33] OCTET STRING OPTIONAL, - listOfServiceData [34] SEQUENCE OF ChangeOfServiceCondition OPTIONAL + listOfServiceData [34] SEQUENCE OF ChangeOfServiceConditionV651 OPTIONAL } -SGSNMMRecord ::= SET -{ - recordType [0] CallEventRecordType, - servedIMSI [1] IMSI, - servedIMEI [2] IMEI OPTIONAL, - sgsnAddress [3] GSNAddress OPTIONAL, - msNetworkCapability [4] MSNetworkCapability OPTIONAL, - routingArea [5] RoutingAreaCode OPTIONAL, - locationAreaCode [6] LocationAreaCode OPTIONAL, - cellIdentifier [7] CellId OPTIONAL, - changeLocation [8] SEQUENCE OF ChangeLocation OPTIONAL, - recordOpeningTime [9] TimeStamp, - duration [10] CallDuration OPTIONAL, - sgsnChange [11] SGSNChange OPTIONAL, - causeForRecClosing [12] CauseForRecClosing, - diagnostics [13] Diagnostics OPTIONAL, - recordSequenceNumber [14] INTEGER OPTIONAL, - nodeID [15] NodeID OPTIONAL, - recordExtensions [16] ManagementExtensions OPTIONAL, - localSequenceNumber [17] LocalSequenceNumber OPTIONAL, - servedMSISDN [18] MSISDN OPTIONAL, - chargingCharacteristics [19] ChargingCharacteristics, - cAMELInformationMM [20] CAMELInformationMM OPTIONAL, - rATType [21] RATType OPTIONAL, - chChSelectionMode [22] ChChSelectionMode OPTIONAL -} - -SGSNPDPRecord ::= SET +--SGSNMMRecord ::= SET +--{ +-- recordType [0] CallEventRecordType, +-- servedIMSI [1] IMSI, +-- servedIMEI [2] IMEI OPTIONAL, +-- sgsnAddress [3] GSNAddress OPTIONAL, +-- msNetworkCapability [4] MSNetworkCapability OPTIONAL, +-- routingArea [5] RoutingAreaCode OPTIONAL, +-- locationAreaCode [6] LocationAreaCode OPTIONAL, +-- cellIdentifier [7] CellId OPTIONAL, +-- changeLocation [8] SEQUENCE OF ChangeLocationV651 OPTIONAL, +-- recordOpeningTime [9] TimeStamp, +-- duration [10] CallDuration OPTIONAL, +-- sgsnChange [11] SGSNChange OPTIONAL, +-- causeForRecClosing [12] CauseForRecClosingV651, +-- diagnostics [13] Diagnostics OPTIONAL, +-- recordSequenceNumber [14] INTEGER OPTIONAL, +-- nodeID [15] NodeID OPTIONAL, +-- recordExtensions [16] ManagementExtensions OPTIONAL, +-- localSequenceNumber [17] LocalSequenceNumber OPTIONAL, +-- servedMSISDN [18] MSISDN OPTIONAL, +-- chargingCharacteristics [19] ChargingCharacteristics, +-- cAMELInformationMM [20] CAMELInformationMM OPTIONAL, +-- rATType [21] RATType OPTIONAL, +-- chChSelectionMode [22] ChChSelectionMode OPTIONAL +--} + +SGSNPDPRecordV651 ::= SET { recordType [0] CallEventRecordType, networkInitiation [1] NetworkInitiatedPDPContext OPTIONAL, @@ -177,11 +177,11 @@ SGSNPDPRecord ::= SET accessPointNameNI [12] AccessPointNameNI OPTIONAL, pdpType [13] PDPType OPTIONAL, servedPDPAddress [14] PDPAddress OPTIONAL, - listOfTrafficVolumes [15] SEQUENCE OF ChangeOfCharCondition OPTIONAL, + listOfTrafficVolumes [15] SEQUENCE OF ChangeOfCharConditionV651 OPTIONAL, recordOpeningTime [16] TimeStamp, duration [17] CallDuration, sgsnChange [18] SGSNChange OPTIONAL, - causeForRecClosing [19] CauseForRecClosing, + causeForRecClosing [19] CauseForRecClosingV651, diagnostics [20] Diagnostics OPTIONAL, recordSequenceNumber [21] INTEGER OPTIONAL, nodeID [22] NodeID OPTIONAL, @@ -198,7 +198,7 @@ SGSNPDPRecord ::= SET dynamicAddressFlag [33] DynamicAddressFlag OPTIONAL } -SGSNSMORecord ::= SET +SGSNSMORecordV651 ::= SET { recordType [0] CallEventRecordType, servedIMSI [1] IMSI, @@ -223,7 +223,7 @@ SGSNSMORecord ::= SET chChSelectionMode [20] ChChSelectionMode OPTIONAL } -SGSNSMTRecord ::= SET +SGSNSMTRecordV651 ::= SET { recordType [0] CallEventRecordType, servedIMSI [1] IMSI, @@ -275,7 +275,7 @@ SGSNMTLCSRecord ::= SET chChSelectionMode [24] ChChSelectionMode OPTIONAL, rATType [25] RATType OPTIONAL, recordExtensions [26] ManagementExtensions OPTIONAL, - causeForRecClosing [27] CauseForRecClosing + causeForRecClosing [27] CauseForRecClosingV651 } SGSNMOLCSRecord ::= SET @@ -305,7 +305,7 @@ SGSNMOLCSRecord ::= SET chChSelectionMode [22] ChChSelectionMode OPTIONAL, rATType [23] RATType OPTIONAL, recordExtensions [24] ManagementExtensions OPTIONAL, - causeForRecClosing [25] CauseForRecClosing + causeForRecClosing [25] CauseForRecClosingV651 } SGSNNILCSRecord ::= SET @@ -335,7 +335,7 @@ SGSNNILCSRecord ::= SET chChSelectionMode [22] ChChSelectionMode OPTIONAL, rATType [23] RATType OPTIONAL, recordExtensions [24] ManagementExtensions OPTIONAL, - causeForRecClosing [25] CauseForRecClosing + causeForRecClosing [25] CauseForRecClosingV651 } SGSNMBMSRecord ::= SET @@ -349,7 +349,7 @@ SGSNMBMSRecord ::= SET listOfTrafficVolumes [6] SEQUENCE OF ChangeOfMBMSCondition OPTIONAL, recordOpeningTime [7] TimeStamp, duration [8] CallDuration, - causeForRecClosing [9] CauseForRecClosing, + causeForRecClosing [9] CauseForRecClosingV651, diagnostics [10] Diagnostics OPTIONAL, recordSequenceNumber [11] INTEGER OPTIONAL, nodeID [12] NodeID OPTIONAL, @@ -372,7 +372,7 @@ GGSNMBMSRecord ::= SET listOfTrafficVolumes [6] SEQUENCE OF ChangeOfMBMSCondition OPTIONAL, recordOpeningTime [7] TimeStamp, duration [8] CallDuration, - causeForRecClosing [9] CauseForRecClosing, + causeForRecClosing [9] CauseForRecClosingV651, diagnostics [10] Diagnostics OPTIONAL, recordSequenceNumber [11] INTEGER OPTIONAL, nodeID [12] NodeID OPTIONAL, @@ -387,70 +387,70 @@ GGSNMBMSRecord ::= SET -- ------------------------------------------------------------------------------ -AccessPointNameNI ::= IA5String (SIZE(1..63)) +-- AccessPointNameNI ::= IA5String (SIZE(1..63)) -- -- Network Identifier part of APN in dot representation. -- For example, if the complete APN is 'apn1a.apn1b.apn1c.mnc022.mcc111.gprs' -- NI is 'apn1a.apn1b.apn1c' and is presented in this form in the CDR.. -- -AccessPointNameOI ::= IA5String (SIZE(1..37)) +-- AccessPointNameOI ::= IA5String (SIZE(1..37)) -- -- Operator Identifier part of APN in dot representation. -- In the 'apn1a.apn1b.apn1c.mnc022.mcc111.gprs' example, the OI portion is 'mnc022.mcc111.gprs' -- and is presented in this form in the CDR. -- -APNSelectionMode::= ENUMERATED -{ +--APNSelectionMode::= ENUMERATED +--{ -- -- See Information Elements TS 29.060 [75] -- - mSorNetworkProvidedSubscriptionVerified (0), - mSProvidedSubscriptionNotVerified (1), - networkProvidedSubscriptionNotVerified (2) -} - -CAMELAccessPointNameNI ::= AccessPointNameNI - -CAMELAccessPointNameOI ::= AccessPointNameOI - -CAMELInformationMM ::= SET -{ - sCFAddress [1] SCFAddress OPTIONAL, - serviceKey [2] ServiceKey OPTIONAL, - defaultTransactionHandling [3] DefaultGPRS-Handling OPTIONAL, - numberOfDPEncountered [4] NumberOfDPEncountered OPTIONAL, - levelOfCAMELService [5] LevelOfCAMELService OPTIONAL, - freeFormatData [6] FreeFormatData OPTIONAL, - fFDAppendIndicator [7] FFDAppendIndicator OPTIONAL -} - -CAMELInformationPDP ::= SET -{ - sCFAddress [1] SCFAddress OPTIONAL, - serviceKey [2] ServiceKey OPTIONAL, - defaultTransactionHandling [3] DefaultGPRS-Handling OPTIONAL, - cAMELAccessPointNameNI [4] CAMELAccessPointNameNI OPTIONAL, - cAMELAccessPointNameOI [5] CAMELAccessPointNameOI OPTIONAL, - numberOfDPEncountered [6] NumberOfDPEncountered OPTIONAL, - levelOfCAMELService [7] LevelOfCAMELService OPTIONAL, - freeFormatData [8] FreeFormatData OPTIONAL, - fFDAppendIndicator [9] FFDAppendIndicator OPTIONAL -} - -CAMELInformationSMS ::= SET -{ - sCFAddress [1] SCFAddress OPTIONAL, - serviceKey [2] ServiceKey OPTIONAL, - defaultSMSHandling [3] DefaultSMS-Handling OPTIONAL, - cAMELCallingPartyNumber [4] CallingNumber OPTIONAL, - cAMELDestinationSubscriberNumber [5] SmsTpDestinationNumber OPTIONAL, - cAMELSMSCAddress [6] AddressString OPTIONAL, - freeFormatData [7] FreeFormatData OPTIONAL, - smsReferenceNumber [8] CallReferenceNumber OPTIONAL -} -CauseForRecClosing ::= INTEGER +-- mSorNetworkProvidedSubscriptionVerified (0), +-- mSProvidedSubscriptionNotVerified (1), +-- networkProvidedSubscriptionNotVerified (2) +--} + +--CAMELAccessPointNameNI ::= AccessPointNameNI + +--CAMELAccessPointNameOI ::= AccessPointNameOI + +--CAMELInformationMM ::= SET +--{ +-- sCFAddress [1] SCFAddress OPTIONAL, +-- serviceKey [2] ServiceKey OPTIONAL, +-- defaultTransactionHandling [3] DefaultGPRS-Handling OPTIONAL, +-- numberOfDPEncountered [4] NumberOfDPEncountered OPTIONAL, +-- levelOfCAMELService [5] LevelOfCAMELService OPTIONAL, +-- freeFormatData [6] FreeFormatData OPTIONAL, +-- fFDAppendIndicator [7] FFDAppendIndicator OPTIONAL +--} + +--CAMELInformationPDP ::= SET +--{ +-- sCFAddress [1] SCFAddress OPTIONAL, +-- serviceKey [2] ServiceKey OPTIONAL, +-- defaultTransactionHandling [3] DefaultGPRS-Handling OPTIONAL, +-- cAMELAccessPointNameNI [4] CAMELAccessPointNameNI OPTIONAL, +-- cAMELAccessPointNameOI [5] CAMELAccessPointNameOI OPTIONAL, +-- numberOfDPEncountered [6] NumberOfDPEncountered OPTIONAL, +-- levelOfCAMELService [7] LevelOfCAMELService OPTIONAL, +-- freeFormatData [8] FreeFormatData OPTIONAL, +-- fFDAppendIndicator [9] FFDAppendIndicator OPTIONAL +--} + +--CAMELInformationSMS ::= SET +--{ +-- sCFAddress [1] SCFAddress OPTIONAL, +-- serviceKey [2] ServiceKey OPTIONAL, +-- defaultSMSHandling [3] DefaultSMS-Handling OPTIONAL, +-- cAMELCallingPartyNumber [4] CallingNumber OPTIONAL, +-- cAMELDestinationSubscriberNumber [5] SmsTpDestinationNumber OPTIONAL, +-- cAMELSMSCAddress [6] AddressString OPTIONAL, +-- freeFormatData [7] FreeFormatData OPTIONAL, +-- smsReferenceNumber [8] CallReferenceNumber OPTIONAL +--} +CauseForRecClosingV651 ::= INTEGER { -- -- In GGSN the value sGSNChange should be used for partial record @@ -478,7 +478,7 @@ CauseForRecClosing ::= INTEGER listofDownstreamNodeChange (59) } -ChangeCondition ::= ENUMERATED +ChangeConditionV651 ::= ENUMERATED { -- -- Failure Handling values used in eGCDR only @@ -491,7 +491,7 @@ ChangeCondition ::= ENUMERATED failureHandlingTerminateOngoing (5) } -ChangeOfCharCondition ::= SEQUENCE +ChangeOfCharConditionV651 ::= SEQUENCE { -- -- Used in PDP context record only @@ -500,7 +500,7 @@ ChangeOfCharCondition ::= SEQUENCE qosNegotiated [2] QoSInformation OPTIONAL, dataVolumeGPRSUplink [3] DataVolumeGPRS, dataVolumeGPRSDownlink [4] DataVolumeGPRS, - changeCondition [5] ChangeCondition, + changeCondition [5] ChangeConditionV651, changeTime [6] TimeStamp } ChangeOfMBMSCondition ::= SEQUENCE @@ -512,11 +512,11 @@ ChangeOfMBMSCondition ::= SEQUENCE qosNegotiated [2] QoSInformation OPTIONAL, dataVolumeMBMSUplink [3] DataVolumeMBMS OPTIONAL, dataVolumeMBMSDownlink [4] DataVolumeMBMS, - changeCondition [5] ChangeCondition, + changeCondition [5] ChangeConditionV651, changeTime [6] TimeStamp, failureHandlingContinue [7] FailureHandlingContinue OPTIONAL } -ChangeOfServiceCondition ::= SEQUENCE +ChangeOfServiceConditionV651 ::= SEQUENCE { -- -- Used for Flow based Charging service data container @@ -529,7 +529,7 @@ ChangeOfServiceCondition ::= SEQUENCE timeOfFirstUsage [5] TimeStamp OPTIONAL, timeOfLastUsage [6] TimeStamp OPTIONAL, timeUsage [7] CallDuration OPTIONAL, - serviceConditionChange [8] ServiceConditionChange, + serviceConditionChange [8] ServiceConditionChangeV651, qoSInformationNeg [9] QoSInformation OPTIONAL, sgsn-Address [10] GSNAddress OPTIONAL, -- sGSNPLMNIdentifier [11] SGSNPLMNIdentifier OPTIONAL, Typo ? @@ -543,7 +543,7 @@ ChangeOfServiceCondition ::= SEQUENCE pSFurnishChargingInformation [18] PSFurnishChargingInformation OPTIONAL } -ChangeLocation ::= SEQUENCE +ChangeLocationV651 ::= SEQUENCE { -- -- used in SGSNMMRecord only @@ -554,90 +554,90 @@ ChangeLocation ::= SEQUENCE changeTime [3] TimeStamp } -ChargingCharacteristics ::= OCTET STRING (SIZE(2)) +--ChargingCharacteristics ::= OCTET STRING (SIZE(2)) -- -- Bit 0-3: Profile Index -- Bit 4-15: For Behavior -- -ChargingID ::= INTEGER (0..4294967295) +--ChargingID ::= INTEGER (0..4294967295) -- -- Generated in GGSN, part of PDP context, see TS 23.060 -- 0..4294967295 is equivalent to 0..2**32-1 -- -ChargingRuleBaseName ::= IA5String (SIZE(1..16)) +--ChargingRuleBaseName ::= IA5String (SIZE(1..16)) -- -- identifier for the group of charging rules -- see Charging-Rule-Base-Name AVP as desined in 3GPP TS 29.210 [85] -ChChSelectionMode ::= ENUMERATED -{ - sGSNSupplied (0), -- For GGSN only - subscriptionSpecific (1), -- For SGSN only - aPNSpecific (2), -- For SGSN only - homeDefault (3), -- For SGSN and GGSN - roamingDefault (4), -- For SGSN and GGSN - visitingDefault (5) -- For SGSN and GGSN -} +--ChChSelectionMode ::= ENUMERATED +--{ +-- sGSNSupplied (0), - - For GGSN only +-- subscriptionSpecific (1), - - For SGSN only +-- aPNSpecific (2), - - For SGSN only +-- homeDefault (3), - - For SGSN and GGSN +-- roamingDefault (4), - - For SGSN and GGSN +-- visitingDefault (5) - - For SGSN and GGSN +--} -DataVolumeGPRS ::= INTEGER +--DataVolumeGPRS ::= INTEGER -- -- The volume of data transferred in octets. -- -DynamicAddressFlag ::= BOOLEAN +--DynamicAddressFlag ::= BOOLEAN -ETSIAddress ::= AddressString +--ETSIAddress ::= AddressString -- -- First octet for nature of address, and numbering plan indicator (3 for X.121) -- Other octets TBCD -- See TS 29.002 -- -FailureHandlingContinue ::= BOOLEAN +--FailureHandlingContinue ::= BOOLEAN -- -- This parameter is included when the failure handling procedure has been executed and new -- containers are opened. This parameter shall be included in the first and subsequent -- containers opened after the failure handling execution. -- -FFDAppendIndicator ::= BOOLEAN +--FFDAppendIndicator ::= BOOLEAN -FreeFormatData ::= OCTET STRING (SIZE(1..160)) +--FreeFormatData ::= OCTET STRING (SIZE(1..160)) -- -- Free formated data as sent in the FurnishChargingInformationGPRS -- see TS 29.078 -- -GSNAddress ::= IPAddress +--GSNAddress ::= IPAddress -MSNetworkCapability ::= OCTET STRING (SIZE(1..8)) +--MSNetworkCapability ::= OCTET STRING (SIZE(1..8)) -- see 3G TS 24.008 -NetworkInitiatedPDPContext ::= BOOLEAN +--NetworkInitiatedPDPContext ::= BOOLEAN -- -- Set to true if PDP context was initiated from network side -- -NodeID ::= IA5String (SIZE(1..20)) +--NodeID ::= IA5String (SIZE(1..20)) -NumberOfDPEncountered ::= INTEGER +--NumberOfDPEncountered ::= INTEGER -PDPAddress ::= CHOICE -{ - iPAddress [0] IPAddress, - eTSIAddress [1] ETSIAddress -} +--PDPAddress ::= CHOICE +--{ +-- iPAddress [0] IPAddress, +-- eTSIAddress [1] ETSIAddress +--} -PDPType ::= OCTET STRING (SIZE(2)) +--PDPType ::= OCTET STRING (SIZE(2)) -- -- OCTET 1: PDP Type Organization -- OCTET 2: PDP Type Number -- See TS 29.060 [75] -- -PLMN-Id ::= OCTET STRING (SIZE (3)) +--PLMN-Id ::= OCTET STRING (SIZE (3)) -- -- This is a 1:1 copy from the Routing Area Identity (RAI) IE specified in TS 29.060 [75] -- as follows: @@ -646,52 +646,43 @@ PLMN-Id ::= OCTET STRING (SIZE (3)) -- OCTET 3 of PLMN-Id = OCTET 4 of RAI -PSFurnishChargingInformation ::= SEQUENCE -{ - pSFreeFormatData [1] FreeFormatData, - pSFFDAppendIndicator [2] FFDAppendIndicator OPTIONAL -} +--PSFurnishChargingInformation ::= SEQUENCE +--{ +-- pSFreeFormatData [1] FreeFormatData, +-- pSFFDAppendIndicator [2] FFDAppendIndicator OPTIONAL +--} -QoSInformation ::= OCTET STRING (SIZE (4..15)) +--QoSInformation ::= OCTET STRING (SIZE (4..15)) -- -- This octet string -- is a 1:1 copy of the contents (i.e. starting with octet 4) of the "Quality of -- service Profile" information element specified in 3GPP TS 29.060 [75]. -- RatingGroup ::= INTEGER Typo ? -RatingGroupId ::= INTEGER +-- RatingGroupId ::= INTEGER -- -- IP service flow identity (DCCA), range of 4 byte (0...4294967259) -- see Rating-Group AVP as used in 3GPP TS 32.299 [40] -- -RATType ::= INTEGER +-- RATType ::= INTEGER -- -- Ihis integer is 1:1 copy of the RAT type value as defined in 3GPP TS 29.060 [75]. -- --- WS Extension -{ - reserved (0), - utran (1), - geran (2), - wlan (3), - gan (4), - hspa-evolution (5) -}(0..255) - -ResultCode ::= INTEGER + +--ResultCode ::= INTEGER -- -- charging protocol return value, range of 4 byte (0...4294967259) -- see Result-Code AVP as used in 3GPP 29.210 [85] -- -RoutingAreaCode ::= OCTET STRING (SIZE(1)) +--RoutingAreaCode ::= OCTET STRING (SIZE(1)) -- -- See TS 24.008 -- -- -ServiceConditionChange ::= BIT STRING +ServiceConditionChangeV651 ::= BIT STRING { qoSChange (0), sGSNChange (1), @@ -723,19 +714,19 @@ terminateOngoingSession (20) -- some of the values are non-exclusive -- serviceIdledOut – bit 6 is equivalent to service release by QHT -SCFAddress ::= AddressString +--SCFAddress ::= AddressString -- -- See TS 29.002 -- -ServiceIdentifier ::= INTEGER (0..4294967295) +--ServiceIdentifier ::= INTEGER (0..4294967295) -- -- The service identifier is used to identify the service or the service component -- the service data flow relates to. See Service-Identifier AVP as defined -- in 3GPP TS 29.210 [85] -- -SGSNChange ::= BOOLEAN +--SGSNChange ::= BOOLEAN -- -- present if first record after inter SGSN routing area update -- in new SGSN diff --git a/asn1/gprscdr/GPRSChargingDataTypesV8e0.asn b/asn1/gprscdr/GPRSChargingDataTypesV8e0.asn new file mode 100644 index 0000000000..7f2106b317 --- /dev/null +++ b/asn1/gprscdr/GPRSChargingDataTypesV8e0.asn @@ -0,0 +1,848 @@ +-- $Id$ +-- 3GPP TS 32.298 V8.14.0 (2012-03) +-- +GPRSChargingDataTypesV8e0 {itu-t (0) identified-organization (4) etsi (0) mobileDomain (0) charging (5) gprsChargingDataTypes (2) asn1Module (0) version1 (0)} + +DEFINITIONS IMPLICIT TAGS ::= + +BEGIN + +-- EXPORTS everything + +IMPORTS +-- CallDuration, CalledNumber, RecordType, CallingNumber, CallReferenceNumber, CellId, DefaultSMS-Handling, Diagnostics, Ext-GeographicalInformation, IMSI, IMEI, IPAddress, ISDN-AddressString, LCSCause, LCSClientExternalID, LCSClientIdentity, LCSClientInternalID, LCSClientType, LCS-Priority, LCSQoSInfo, LevelOfCAMELService, LocalSequenceNumber, LocationAreaAndCell, LocationAreaCode, LocationType, ManagementExtensions, MessageReference, MSISDN, NotificationToMSUser, PositioningData, RecordingEntity, ServiceKey, ServiceSpecificInfo, SMSResult, SmsTpDestinationNumber, SubscriptionID, TimeStamp, AddressString, MSTimeZone +-- FROM GenericChargingDataTypes {itu-t (0) identified-organization (4) etsi(0) mobileDomain (0) charging (5) genericChargingDataTypes (0) asn1Module (0) version1 (0)} + +DefaultGPRS-Handling +-- From V670 +-- , RAIdentity +FROM MAP-MS-DataTypes { itu-t identified-organization (4) etsi (0) mobileDomain (0) +gsm-Network (1) modules (3) map-MS-DataTypes (11) version6 (6)} +-- +-- from TS 29.002 [60] + +LocationMethod +FROM SS-DataTypes { itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3) ss-DataTypes (2) version7 (7)} +-- +-- from TS 24.080 [61] + +-- MBMS2G3GIndicator, FileRepairSupported, MBMSServiceType, MBMSUserServiceType, RequiredMBMSBearerCapabilities, MBMSSessionIdentity, TMGI, MBMSInformation +-- FROM MBMSChargingDataTypes {itu-t (0) identified-organization (4) etsi(0) mobileDomain (0) charging (5) mbmsChargingDataTypes (8) asn1Module (0) version1 (0)} + +-- Editor’s note: consider moving the above 2 items also into the generic module in order to avoid again copying from external sources. +; + +------------------------------------------------------------------------------ +-- +-- GPRS RECORDS +-- +------------------------------------------------------------------------------ + +GPRSRecord ::= CHOICE +-- +-- Record values 20, 22..27 are specific +-- Record values 76..77 are MBMS specific +-- Record values 78..79 are EPC specific +{ + sgsnPDPRecord [20] SGSNPDPRecord, + sgsnMMRecord [22] SGSNMMRecord, + sgsnSMORecord [23] SGSNSMORecord, + sgsnSMTRecord [24] SGSNSMTRecord, +-- sgsnLCTRecord [25] SGSNLCTRecord, +-- sgsnLCORecord [26] SGSNLCORecord, +-- sgsnLCNRecord [27] SGSNLCNRecord, +-- +-- +-- sgsnMBMSRecord [76] SGSNMBMSRecord, +-- ggsnMBMSRecord [77] GGSNMBMSRecord, + sGWRecord [78] SGWRecord, + pGWRecord [79] PGWRecord +} + +SGWRecord ::= SET +{ + recordType [0] RecordType, + servedIMSI [3] IMSI, + s-GWAddress [4] GSNAddress, + chargingID [5] ChargingID, + servingNodeAddress [6] SEQUENCE OF GSNAddress, + accessPointNameNI [7] AccessPointNameNI OPTIONAL, + pdpPDNType [8] PDPType OPTIONAL, + servedPDPPDNAddress [9] PDPAddress OPTIONAL, + dynamicAddressFlag [11] DynamicAddressFlag OPTIONAL, + listOfTrafficVolumes [12] SEQUENCE OF ChangeOfCharCondition OPTIONAL, + recordOpeningTime [13] TimeStamp, + duration [14] CallDuration, + causeForRecClosing [15] CauseForRecClosing, + diagnostics [16] Diagnostics OPTIONAL, + recordSequenceNumber [17] INTEGER OPTIONAL, + nodeID [18] NodeID OPTIONAL, + recordExtensions [19] ManagementExtensions OPTIONAL, + localSequenceNumber [20] LocalSequenceNumber OPTIONAL, + apnSelectionMode [21] APNSelectionMode OPTIONAL, + servedMSISDN [22] MSISDN OPTIONAL, + chargingCharacteristics [23] ChargingCharacteristics, + chChSelectionMode [24] ChChSelectionMode OPTIONAL, + iMSsignalingContext [25] NULL OPTIONAL, + servingNodePLMNIdentifier [27] PLMN-Id OPTIONAL, + servedIMEISV [29] IMEI OPTIONAL, + rATType [30] RATType OPTIONAL, + mSTimeZone [31] MSTimeZone OPTIONAL, + userLocationInformation [32] OCTET STRING OPTIONAL, + sGWChange [34] SGWChange OPTIONAL, + servingNodeType [35] SEQUENCE OF ServingNodeType, + p-GWAddressUsed [36] GSNAddress OPTIONAL, + p-GWPLMNIdentifier [37] PLMN-Id OPTIONAL, + startTime [38] TimeStamp OPTIONAL, + stopTime [39] TimeStamp OPTIONAL, + pDNConnectionChargingID [40] ChargingID OPTIONAL, + servedPDPPDNAddressExt [43] PDPAddress OPTIONAL, + dynamicAddressFlagExt [47] DynamicAddressFlag OPTIONAL + + +} + +PGWRecord ::= SET +{ + recordType [0] RecordType, + servedIMSI [3] IMSI, + p-GWAddress [4] GSNAddress, + chargingID [5] ChargingID, + servingNodeAddress [6] SEQUENCE OF GSNAddress, + accessPointNameNI [7] AccessPointNameNI OPTIONAL, + pdpPDNType [8] PDPType OPTIONAL, + servedPDPPDNAddress [9] PDPAddress OPTIONAL, + dynamicAddressFlag [11] DynamicAddressFlag OPTIONAL, + recordOpeningTime [13] TimeStamp, + duration [14] CallDuration, + causeForRecClosing [15] CauseForRecClosing, + diagnostics [16] Diagnostics OPTIONAL, + recordSequenceNumber [17] INTEGER OPTIONAL, + nodeID [18] NodeID OPTIONAL, + recordExtensions [19] ManagementExtensions OPTIONAL, + localSequenceNumber [20] LocalSequenceNumber OPTIONAL, + apnSelectionMode [21] APNSelectionMode OPTIONAL, + servedMSISDN [22] MSISDN OPTIONAL, + chargingCharacteristics [23] ChargingCharacteristics, + chChSelectionMode [24] ChChSelectionMode OPTIONAL, + iMSsignalingContext [25] NULL OPTIONAL, + externalChargingID [26] OCTET STRING OPTIONAL, + servinggNodePLMNIdentifier [27] PLMN-Id OPTIONAL, + pSFurnishChargingInformation [28] PSFurnishChargingInformation OPTIONAL, + servedIMEISV [29] IMEI OPTIONAL, + rATType [30] RATType OPTIONAL, + mSTimeZone [31] MSTimeZone OPTIONAL, + userLocationInformation [32] OCTET STRING OPTIONAL, + cAMELChargingInformation [33] OCTET STRING OPTIONAL, + listOfServiceData [34] SEQUENCE OF ChangeOfServiceCondition OPTIONAL, + servingNodeType [35] SEQUENCE OF ServingNodeType, + servedMNNAI [36] SubscriptionID OPTIONAL, + p-GWPLMNIdentifier [37] PLMN-Id OPTIONAL, + startTime [38] TimeStamp OPTIONAL, + stopTime [39] TimeStamp OPTIONAL, + served3gpp2MEID [40] OCTET STRING OPTIONAL, + pDNConnectionChargingID [41] ChargingID OPTIONAL, + tGPP2UserLocationInformation [42] OCTET STRING OPTIONAL, + servedPDPPDNAddressExt [45] PDPAddress OPTIONAL, + dynamicAddressFlagExt [47] DynamicAddressFlag OPTIONAL + +} + +SGSNMMRecord ::= SET +{ + recordType [0] RecordType, + servedIMSI [1] IMSI, + servedIMEI [2] IMEI OPTIONAL, + sgsnAddress [3] GSNAddress OPTIONAL, + msNetworkCapability [4] MSNetworkCapability OPTIONAL, + routingArea [5] RoutingAreaCode OPTIONAL, + locationAreaCode [6] LocationAreaCode OPTIONAL, + cellIdentifier [7] CellId OPTIONAL, + changeLocation [8] SEQUENCE OF ChangeLocation OPTIONAL, + recordOpeningTime [9] TimeStamp, + duration [10] CallDuration OPTIONAL, + sgsnChange [11] SGSNChange OPTIONAL, + causeForRecClosing [12] CauseForRecClosing, + diagnostics [13] Diagnostics OPTIONAL, + recordSequenceNumber [14] INTEGER OPTIONAL, + nodeID [15] NodeID OPTIONAL, + recordExtensions [16] ManagementExtensions OPTIONAL, + localSequenceNumber [17] LocalSequenceNumber OPTIONAL, + servedMSISDN [18] MSISDN OPTIONAL, + chargingCharacteristics [19] ChargingCharacteristics, + cAMELInformationMM [20] CAMELInformationMM OPTIONAL, + rATType [21] RATType OPTIONAL, + chChSelectionMode [22] ChChSelectionMode OPTIONAL, + cellPLMNId [23] PLMN-Id OPTIONAL +} + +SGSNPDPRecord ::= SET +{ + recordType [0] RecordType, + networkInitiation [1] NetworkInitiatedPDPContext OPTIONAL, + servedIMSI [3] IMSI, + servedIMEI [4] IMEI OPTIONAL, + sgsnAddress [5] GSNAddress OPTIONAL, + msNetworkCapability [6] MSNetworkCapability OPTIONAL, + routingArea [7] RoutingAreaCode OPTIONAL, + locationAreaCode [8] LocationAreaCode OPTIONAL, + cellIdentifier [9] CellId OPTIONAL, + chargingID [10] ChargingID, + ggsnAddressUsed [11] GSNAddress, + accessPointNameNI [12] AccessPointNameNI OPTIONAL, + pdpType [13] PDPType OPTIONAL, + servedPDPAddress [14] PDPAddress OPTIONAL, + listOfTrafficVolumes [15] SEQUENCE OF ChangeOfCharCondition OPTIONAL, + recordOpeningTime [16] TimeStamp, + duration [17] CallDuration, + sgsnChange [18] SGSNChange OPTIONAL, + causeForRecClosing [19] CauseForRecClosing, + diagnostics [20] Diagnostics OPTIONAL, + recordSequenceNumber [21] INTEGER OPTIONAL, + nodeID [22] NodeID OPTIONAL, + recordExtensions [23] ManagementExtensions OPTIONAL, + localSequenceNumber [24] LocalSequenceNumber OPTIONAL, + apnSelectionMode [25] APNSelectionMode OPTIONAL, + accessPointNameOI [26] AccessPointNameOI OPTIONAL, + servedMSISDN [27] MSISDN OPTIONAL, + chargingCharacteristics [28] ChargingCharacteristics, + rATType [29] RATType OPTIONAL, + cAMELInformationPDP [30] CAMELInformationPDP OPTIONAL, + rNCUnsentDownlinkVolume [31] DataVolumeGPRS OPTIONAL, + chChSelectionMode [32] ChChSelectionMode OPTIONAL, + dynamicAddressFlag [33] DynamicAddressFlag OPTIONAL +} + +SGSNSMORecord ::= SET +{ + recordType [0] RecordType, + servedIMSI [1] IMSI, + servedIMEI [2] IMEI OPTIONAL, + servedMSISDN [3] MSISDN OPTIONAL, + msNetworkCapability [4] MSNetworkCapability OPTIONAL, + serviceCentre [5] AddressString OPTIONAL, + recordingEntity [6] RecordingEntity OPTIONAL, + locationArea [7] LocationAreaCode OPTIONAL, + routingArea [8] RoutingAreaCode OPTIONAL, + cellIdentifier [9] CellId OPTIONAL, + messageReference [10] MessageReference, + eventTimeStamp [11] TimeStamp, + smsResult [12] SMSResult OPTIONAL, + recordExtensions [13] ManagementExtensions OPTIONAL, + nodeID [14] NodeID OPTIONAL, + localSequenceNumber [15] LocalSequenceNumber OPTIONAL, + chargingCharacteristics [16] ChargingCharacteristics, + rATType [17] RATType OPTIONAL, + destinationNumber [18] SmsTpDestinationNumber OPTIONAL, + cAMELInformationSMS [19] CAMELInformationSMS OPTIONAL, + chChSelectionMode [20] ChChSelectionMode OPTIONAL +} + +SGSNSMTRecord ::= SET +{ + recordType [0] RecordType, + servedIMSI [1] IMSI, + servedIMEI [2] IMEI OPTIONAL, + servedMSISDN [3] MSISDN OPTIONAL, + msNetworkCapability [4] MSNetworkCapability OPTIONAL, + serviceCentre [5] AddressString OPTIONAL, + recordingEntity [6] RecordingEntity OPTIONAL, + locationArea [7] LocationAreaCode OPTIONAL, + routingArea [8] RoutingAreaCode OPTIONAL, + cellIdentifier [9] CellId OPTIONAL, + eventTimeStamp [10] TimeStamp, + smsResult [11] SMSResult OPTIONAL, + recordExtensions [12] ManagementExtensions OPTIONAL, + nodeID [13] NodeID OPTIONAL, + localSequenceNumber [14] LocalSequenceNumber OPTIONAL, + chargingCharacteristics [15] ChargingCharacteristics, + rATType [16] RATType OPTIONAL, + chChSelectionMode [17] ChChSelectionMode OPTIONAL, + cAMELInformationSMS [18] CAMELInformationSMS OPTIONAL +} + +SGSNMTLCSRecord ::= SET +{ + recordType [0] RecordType, + recordingEntity [1] RecordingEntity, + lcsClientType [2] LCSClientType, + lcsClientIdentity [3] LCSClientIdentity, + servedIMSI [4] IMSI, + servedMSISDN [5] MSISDN OPTIONAL, + sgsnAddress [6] GSNAddress OPTIONAL, + locationType [7] LocationType, + lcsQos [8] LCSQoSInfo OPTIONAL, + lcsPriority [9] LCS-Priority OPTIONAL, + mlcNumber [10] ISDN-AddressString, + eventTimeStamp [11] TimeStamp, + measurementDuration [12] CallDuration OPTIONAL, + notificationToMSUser [13] NotificationToMSUser OPTIONAL, + privacyOverride [14] NULL OPTIONAL, + location [15] LocationAreaAndCell OPTIONAL, + routingArea [16] RoutingAreaCode OPTIONAL, + locationEstimate [17] Ext-GeographicalInformation OPTIONAL, + positioningData [18] PositioningData OPTIONAL, + lcsCause [19] LCSCause OPTIONAL, + diagnostics [20] Diagnostics OPTIONAL, + nodeID [21] NodeID OPTIONAL, + localSequenceNumber [22] LocalSequenceNumber OPTIONAL, + chargingCharacteristics [23] ChargingCharacteristics, + chChSelectionMode [24] ChChSelectionMode OPTIONAL, + rATType [25] RATType OPTIONAL, + recordExtensions [26] ManagementExtensions OPTIONAL, + causeForRecClosing [27] CauseForRecClosing +} + +SGSNMOLCSRecord ::= SET +{ + recordType [0] RecordType, + recordingEntity [1] RecordingEntity, + lcsClientType [2] LCSClientType OPTIONAL, + lcsClientIdentity [3] LCSClientIdentity OPTIONAL, + servedIMSI [4] IMSI, + servedMSISDN [5] MSISDN OPTIONAL, + sgsnAddress [6] GSNAddress OPTIONAL, + locationMethod [7] LocationMethod, + lcsQos [8] LCSQoSInfo OPTIONAL, + lcsPriority [9] LCS-Priority OPTIONAL, + mlcNumber [10] ISDN-AddressString OPTIONAL, + eventTimeStamp [11] TimeStamp, + measurementDuration [12] CallDuration OPTIONAL, + location [13] LocationAreaAndCell OPTIONAL, + routingArea [14] RoutingAreaCode OPTIONAL, + locationEstimate [15] Ext-GeographicalInformation OPTIONAL, + positioningData [16] PositioningData OPTIONAL, + lcsCause [17] LCSCause OPTIONAL, + diagnostics [18] Diagnostics OPTIONAL, + nodeID [19] NodeID OPTIONAL, + localSequenceNumber [20] LocalSequenceNumber OPTIONAL, + chargingCharacteristics [21] ChargingCharacteristics, + chChSelectionMode [22] ChChSelectionMode OPTIONAL, + rATType [23] RATType OPTIONAL, + recordExtensions [24] ManagementExtensions OPTIONAL, + causeForRecClosing [25] CauseForRecClosing +} + +SGSNNILCSRecord ::= SET +{ + recordType [0] RecordType, + recordingEntity [1] RecordingEntity, + lcsClientType [2] LCSClientType OPTIONAL, + lcsClientIdentity [3] LCSClientIdentity OPTIONAL, + servedIMSI [4] IMSI OPTIONAL, + servedMSISDN [5] MSISDN OPTIONAL, + sgsnAddress [6] GSNAddress OPTIONAL, + servedIMEI [7] IMEI OPTIONAL, + lcsQos [8] LCSQoSInfo OPTIONAL, + lcsPriority [9] LCS-Priority OPTIONAL, + mlcNumber [10] ISDN-AddressString OPTIONAL, + eventTimeStamp [11] TimeStamp, + measurementDuration [12] CallDuration OPTIONAL, + location [13] LocationAreaAndCell OPTIONAL, + routingArea [14] RoutingAreaCode OPTIONAL, + locationEstimate [15] Ext-GeographicalInformation OPTIONAL, + positioningData [16] PositioningData OPTIONAL, + lcsCause [17] LCSCause OPTIONAL, + diagnostics [18] Diagnostics OPTIONAL, + nodeID [19] NodeID OPTIONAL, + localSequenceNumber [20] LocalSequenceNumber OPTIONAL, + chargingCharacteristics [21] ChargingCharacteristics, + chChSelectionMode [22] ChChSelectionMode OPTIONAL, + rATType [23] RATType OPTIONAL, + recordExtensions [24] ManagementExtensions OPTIONAL, + causeForRecClosing [25] CauseForRecClosing +} + +SGSNMBMSRecord ::= SET +{ + recordType [0] RecordType, + ggsnAddress [1] GSNAddress, + chargingID [2] ChargingID, + listofRAs [3] SEQUENCE OF RAIdentity OPTIONAL, + accessPointNameNI [4] AccessPointNameNI OPTIONAL, + servedPDPAddress [5] PDPAddress OPTIONAL, + listOfTrafficVolumes [6] SEQUENCE OF ChangeOfMBMSCondition OPTIONAL, + recordOpeningTime [7] TimeStamp, + duration [8] CallDuration, + causeForRecClosing [9] CauseForRecClosing, + diagnostics [10] Diagnostics OPTIONAL, + recordSequenceNumber [11] INTEGER OPTIONAL, + nodeID [12] NodeID OPTIONAL, + recordExtensions [13] ManagementExtensions OPTIONAL, + localSequenceNumber [14] LocalSequenceNumber OPTIONAL, + sgsnPLMNIdentifier [15] PLMN-Id OPTIONAL, + numberofReceivingUE [16] INTEGER OPTIONAL, + mbmsInformation [17] MBMSInformation OPTIONAL +} + +GGSNMBMSRecord ::= SET +{ + recordType [0] RecordType, + ggsnAddress [1] GSNAddress, + chargingID [2] ChargingID, + listofDownstreamNodes [3] SEQUENCE OF GSNAddress, + accessPointNameNI [4] AccessPointNameNI OPTIONAL, + servedPDPAddress [5] PDPAddress OPTIONAL, + listOfTrafficVolumes [6] SEQUENCE OF ChangeOfMBMSCondition OPTIONAL, + recordOpeningTime [7] TimeStamp, + duration [8] CallDuration, + causeForRecClosing [9] CauseForRecClosing, + diagnostics [10] Diagnostics OPTIONAL, + recordSequenceNumber [11] INTEGER OPTIONAL, + nodeID [12] NodeID OPTIONAL, + recordExtensions [13] ManagementExtensions OPTIONAL, + localSequenceNumber [14] LocalSequenceNumber OPTIONAL, + mbmsInformation [15] MBMSInformation OPTIONAL +} + +------------------------------------------------------------------------------ +-- +-- PS DATA TYPES +-- +------------------------------------------------------------------------------ + +AccessPointNameNI ::= IA5String (SIZE(1..63)) + -- + -- Network Identifier part of APN in dot representation. + -- For example, if the complete APN is 'apn1a.apn1b.apn1c.mnc022.mcc111.gprs' + -- NI is 'apn1a.apn1b.apn1c' and is presented in this form in the CDR.. + -- + +AccessPointNameOI ::= IA5String (SIZE(1..37)) + -- + -- Operator Identifier part of APN in dot representation. + -- In the 'apn1a.apn1b.apn1c.mnc022.mcc111.gprs' example, the OI portion is 'mnc022.mcc111.gprs' + -- and is presented in this form in the CDR. + -- + +AFChargingIdentifier ::= OCTET STRING + -- + -- see AF-Charging-Identifier AVP as defined in TS 29.214[89] + -- + +AFRecordInformation ::= SEQUENCE +{ + aFChargingIdentifier [1] AFChargingIdentifier, + flows [2] Flows OPTIONAL +} + +APNSelectionMode::= ENUMERATED +{ + -- + -- See Information Elements TS 29.060 [75], TS 29.274 [91] or TS 29.275 [92] + -- + mSorNetworkProvidedSubscriptionVerified (0), + mSProvidedSubscriptionNotVerified (1), + networkProvidedSubscriptionNotVerified (2) +} + +CAMELAccessPointNameNI ::= AccessPointNameNI + +CAMELAccessPointNameOI ::= AccessPointNameOI + +CAMELInformationMM ::= SET +{ + sCFAddress [1] SCFAddress OPTIONAL, + serviceKey [2] ServiceKey OPTIONAL, + defaultTransactionHandling [3] DefaultGPRS-Handling OPTIONAL, + numberOfDPEncountered [4] NumberOfDPEncountered OPTIONAL, + levelOfCAMELService [5] LevelOfCAMELService OPTIONAL, + freeFormatData [6] FreeFormatData OPTIONAL, + fFDAppendIndicator [7] FFDAppendIndicator OPTIONAL +} + +CAMELInformationPDP ::= SET +{ + sCFAddress [1] SCFAddress OPTIONAL, + serviceKey [2] ServiceKey OPTIONAL, + defaultTransactionHandling [3] DefaultGPRS-Handling OPTIONAL, + cAMELAccessPointNameNI [4] CAMELAccessPointNameNI OPTIONAL, + cAMELAccessPointNameOI [5] CAMELAccessPointNameOI OPTIONAL, + numberOfDPEncountered [6] NumberOfDPEncountered OPTIONAL, + levelOfCAMELService [7] LevelOfCAMELService OPTIONAL, + freeFormatData [8] FreeFormatData OPTIONAL, + fFDAppendIndicator [9] FFDAppendIndicator OPTIONAL +} + +CAMELInformationSMS ::= SET +{ + sCFAddress [1] SCFAddress OPTIONAL, + serviceKey [2] ServiceKey OPTIONAL, + defaultSMSHandling [3] DefaultSMS-Handling OPTIONAL, + cAMELCallingPartyNumber [4] CallingNumber OPTIONAL, + cAMELDestinationSubscriberNumber [5] SmsTpDestinationNumber OPTIONAL, + cAMELSMSCAddress [6] AddressString OPTIONAL, + freeFormatData [7] FreeFormatData OPTIONAL, + smsReferenceNumber [8] CallReferenceNumber OPTIONAL +} + +CauseForRecClosing ::= INTEGER +{ + -- + -- In PGW-CDR and SGW-CDR the value servingNodeChange is used for partial record + -- generation due to Serving Node Address list Overflow + -- In SGSN servingNodeChange indicates the SGSN change + -- + -- LCS related causes belong to the MAP error causes acc. TS 29.002 [60] + -- + -- cause codes 0 to 15 are defined 'CauseForTerm' (cause for termination) + -- + normalRelease (0), + abnormalRelease (4), + cAMELInitCallRelease (5), + volumeLimit (16), + timeLimit (17), + servingNodeChange (18), + maxChangeCond (19), + managementIntervention (20), + intraSGSNIntersystemChange (21), + rATChange (22), + mSTimeZoneChange (23), + sGSNPLMNIDChange (24), + unauthorizedRequestingNetwork (52), + unauthorizedLCSClient (53), + positionMethodFailure (54), + unknownOrUnreachableLCSClient (58), + listofDownstreamNodeChange (59) +} + +ChangeCondition ::= ENUMERATED +{ + qoSChange (0), + tariffTime (1), + recordClosure (2), + cGI-SAICHange (6), -- bearer modification. "CGI-SAI Change" + rAIChange (7), -- bearer modification. "RAI Change" + dT-Establishment (8), + dT-Removal (9), + eCGIChange (10), -- bearer modification. "ECGI Change" + tAIChange (11), -- bearer modification. "TAI Change" + userLocationChange (12) -- bearer modification. "User Location Change" + +} + +ChangeOfCharCondition ::= SEQUENCE +{ + -- + -- qosRequested and qosNegotiated are used in S-CDR only + -- ePCQoSInformation used in SGW-CDR only + -- + qosRequested [1] QoSInformation OPTIONAL, + qosNegotiated [2] QoSInformation OPTIONAL, + dataVolumeGPRSUplink [3] DataVolumeGPRS OPTIONAL, + dataVolumeGPRSDownlink [4] DataVolumeGPRS OPTIONAL, + changeCondition [5] ChangeCondition, + changeTime [6] TimeStamp, + userLocationInformation [8] OCTET STRING OPTIONAL, + ePCQoSInformation [9] EPCQoSInformation OPTIONAL +} + +ChangeOfMBMSCondition ::= SEQUENCE +{ + -- + -- Used in MBMS record + -- + qosRequested [1] QoSInformation OPTIONAL, + qosNegotiated [2] QoSInformation OPTIONAL, + dataVolumeMBMSUplink [3] DataVolumeMBMS OPTIONAL, + dataVolumeMBMSDownlink [4] DataVolumeMBMS, + changeCondition [5] ChangeCondition, + changeTime [6] TimeStamp, + failureHandlingContinue [7] FailureHandlingContinue OPTIONAL +} + +ChangeOfServiceCondition ::= SEQUENCE +{ + -- + -- Used for Flow based Charging service data container + -- + ratingGroup [1] RatingGroupId, + chargingRuleBaseName [2] ChargingRuleBaseName OPTIONAL, + resultCode [3] ResultCode OPTIONAL, + localSequenceNumber [4] LocalSequenceNumber OPTIONAL, + timeOfFirstUsage [5] TimeStamp OPTIONAL, + timeOfLastUsage [6] TimeStamp OPTIONAL, + timeUsage [7] CallDuration OPTIONAL, + serviceConditionChange [8] ServiceConditionChange, + qoSInformationNeg [9] EPCQoSInformation OPTIONAL, + servingNodeAddress [10] GSNAddress OPTIONAL, + datavolumeFBCUplink [12] DataVolumeGPRS OPTIONAL, + datavolumeFBCDownlink [13] DataVolumeGPRS OPTIONAL, + timeOfReport [14] TimeStamp, + failureHandlingContinue [16] FailureHandlingContinue OPTIONAL, + serviceIdentifier [17] ServiceIdentifier OPTIONAL, + pSFurnishChargingInformation [18] PSFurnishChargingInformation OPTIONAL, + aFRecordInformation [19] SEQUENCE OF AFRecordInformation OPTIONAL, + userLocationInformation [20] OCTET STRING OPTIONAL, + eventBasedChargingInformation [21] EventBasedChargingInformation OPTIONAL, + timeQuotaMechanism [22] TimeQuotaMechanism OPTIONAL, + serviceSpecificInfo [23] SEQUENCE OF ServiceSpecificInfo OPTIONAL, + tGPP2UserLocationInformation [24] OCTET STRING OPTIONAL +} + +ChangeLocation ::= SEQUENCE +{ + -- + -- used in SGSNMMRecord only + -- + locationAreaCode [0] LocationAreaCode, + routingAreaCode [1] RoutingAreaCode, + cellId [2] CellId OPTIONAL, + changeTime [3] TimeStamp, + mCC-MNC [4] PLMN-Id OPTIONAL +} + +ChargingCharacteristics ::= OCTET STRING (SIZE(2)) + +ChargingID ::= INTEGER (0..4294967295) + -- + -- Generated in P-GW, part of IP CAN bearer + -- 0..4294967295 is equivalent to 0..2**32-1 + -- + +ChargingRuleBaseName ::= IA5String (SIZE(1..16)) + -- + -- identifier for the group of charging rules + -- see Charging-Rule-Base-Name AVP as desined in TS 29.212 [88] + -- + +ChChSelectionMode ::= ENUMERATED +{ + servingNodeSupplied (0), -- For S-GW/P-GW + subscriptionSpecific (1), -- For SGSN only + aPNSpecific (2), -- For SGSN only + homeDefault (3), -- For SGSN, S-GW and P-GW + roamingDefault (4), -- For SGSN, S-GW and P-GW + visitingDefault (5) -- For SGSN, S-GW and P-GW +} + +DataVolumeGPRS ::= INTEGER + -- + -- The volume of data transferred in octets. + -- + +DynamicAddressFlag ::= BOOLEAN + +EPCQoSInformation ::= SEQUENCE +{ + -- + -- See TS 29.212 [88] for more information + -- + qCI [1] INTEGER, + maxRequestedBandwithUL [2] INTEGER OPTIONAL, + maxRequestedBandwithDL [3] INTEGER OPTIONAL, + guaranteedBitrateUL [4] INTEGER OPTIONAL, + guaranteedBitrateDL [5] INTEGER OPTIONAL, + aRP [6] INTEGER OPTIONAL, + aPNAggregateMaxBitrateUL [7] INTEGER OPTIONAL, + aPNAggregateMaxBitrateDL [8] INTEGER OPTIONAL + +} + +EventBasedChargingInformation ::= SEQUENCE +{ + numberOfEvents [1] INTEGER, + eventTimeStamps [2] SEQUENCE OF TimeStamp OPTIONAL +} + +FailureHandlingContinue ::= BOOLEAN + -- +-- This parameter is included when the failure handling procedure has been executed and new +-- containers are opened. This parameter shall be included in the first and subsequent +-- containers opened after the failure handling execution. + -- + +FFDAppendIndicator ::= BOOLEAN + +Flows ::= SEQUENCE + -- + -- See Flows AVP as defined in TS 29.214 [89] + -- +{ + mediaComponentNumber [1] INTEGER, + flowNumber [2] SEQUENCE OF INTEGER OPTIONAL +} + +FreeFormatData ::= OCTET STRING (SIZE(1..160)) + -- + -- Free formatted data as sent in the FurnishChargingInformationGPRS + -- see TS 29.078 [66] + -- + +GSNAddress ::= IPAddress + +MSNetworkCapability ::= OCTET STRING (SIZE(1..8)) + -- see TS 24.008 [64] + +NetworkInitiatedPDPContext ::= BOOLEAN + -- + -- Set to true if PDP context was initiated from network side + -- + +NodeID ::= IA5String (SIZE(1..20)) + +NumberOfDPEncountered ::= INTEGER + +PDPAddress ::= CHOICE +{ + iPAddress [0] IPAddress +-- eTSIAddress [1] ETSIAddress : has only been used in earlier releases for X.121 format +} + +PDPType ::= OCTET STRING (SIZE(2)) + -- + -- OCTET 1: PDP Type Organization + -- OCTET 2: PDP/PDN Type Number + -- See TS 29.060 [75] for encoding details. + -- + +PLMN-Id ::= OCTET STRING (SIZE (3)) + -- + -- This is a 1:1 copy from the Routing Area Identity (RAI) IE specified in TS 29.060 [75] + -- as follows: + -- OCTET 1 of PLMN-Id = OCTET 2 of RAI + -- OCTET 2 of PLMN-Id = OCTET 3 of RAI + -- OCTET 3 of PLMN-Id = OCTET 4 of RAI + -- + + +PSFurnishChargingInformation ::= SEQUENCE +{ + pSFreeFormatData [1] FreeFormatData, + pSFFDAppendIndicator [2] FFDAppendIndicator OPTIONAL +} + +QoSInformation ::= OCTET STRING (SIZE (4..255)) + -- + -- This octet string + -- is a 1:1 copy of the contents (i.e. starting with octet 5) of the "Bearer Quality of + -- Service" information element specified in TS 29.274 [92]. + -- + +RatingGroupId ::= INTEGER + -- + -- IP service flow identity (DCCA), range of 4 byte (0...4294967295) + -- see Rating-Group AVP as used in TS 32.299 [40] + -- + +RATType ::= INTEGER + -- + -- Ihis integer is 1:1 copy of the RAT type value as defined in TS 29.061 [82]. + -- +-- WS Extension +{ + reserved (0), + utran (1), + geran (2), + wlan (3), + gan (4), + hspa-evolution (5) +}(0..255) + +ResultCode ::= INTEGER +-- + -- charging protocol return value, range of 4 byte (0...4294967295) + -- see Result-Code AVP as used in 3GPP 32.299 [40] + -- + +RoutingAreaCode ::= OCTET STRING (SIZE(1)) + -- + -- See TS 24.008 [64] + -- + +ServiceConditionChange ::= BIT STRING +{ + qoSChange (0), -- bearer modification + sGSNChange (1), -- bearer modification + sGSNPLMNIDChange (2), -- bearer modification + tariffTimeSwitch (3), -- tariff time change + pDPContextRelease (4), -- bearer release + rATChange (5), -- bearer modification + serviceIdledOut (6), -- IP flow idle out, DCCA QHT expiry + reserved (7), -- old: QCTexpiry is no report event + configurationChange (8), -- configuration change + serviceStop (9), -- IP flow termination.From "Service Stop" in + -- Change-Condition" AVP + dCCATimeThresholdReached (10), -- DCCA quota reauthorization + dCCAVolumeThresholdReached (11), -- DCCA quota reauthorization + dCCAServiceSpecificUnitThresholdReached (12), -- DCCA quota reauthorization + dCCATimeExhausted (13), -- DCCA quota reauthorization + dCCAVolumeExhausted (14), -- DCCA quota reauthorization + dCCAValidityTimeout (15), -- DCCA quota validity time (QVT expiry) + reserved1 (16), -- reserved due to no use case, + -- old: return Requested is covered by (17),(18) + dCCAReauthorisationRequest (17), -- DCCA quota reauthorization request by OCS + dCCAContinueOngoingSession (18), -- DCCA failure handling (CCFH), + -- continue IP flow + dCCARetryAndTerminateOngoingSession (19), -- DCCA failure handling (CCFH), + -- terminate IP flow after DCCA retry + dCCATerminateOngoingSession (20), -- DCCA failure handling, + -- terminate IP flow + cGI-SAIChange (21), -- bearer modification. "CGI-SAI Change" + rAIChange (22), -- bearer modification. "RAI Change" + dCCAServiceSpecificUnitExhausted (23), -- DCCA quota reauthorization + recordClosure (24), -- PGW-CDR closure + timeLimit (25), -- intermediate recording. From "Service Data + -- Time Limit" Change-Condition AVP value + volumeLimit (26), -- intermediate recording.From "Service Data + -- Volume Limit" Change-Condition AVP value + serviceSpecificUnitLimit (27), -- intermediate recording + envelopeClosure (28), + eCGIChange (29), -- bearer modification. "ECGI Change" + tAIChange (30), -- bearer modification. "TAI Change" + userLocationChange (31) -- bearer modification. "User Location Change" + +} +-- +-- Trigger and cause values for IP flow level recording are defined for support of independent +-- online and offline charging and also for tight interworking between online and offline charging. +-- Unused bits will always be zero. +-- Some of the values are non-exclusive (e.g. bearer modification reasons). + -- + +SCFAddress ::= AddressString + -- + -- See TS 29.002 [60] + -- + +ServiceIdentifier ::= INTEGER (0..4294967295) + -- + -- The service identifier is used to identify the service or the service component + -- the service data flow relates to. See Service-Identifier AVP as defined + -- in TS 29.212 [88] + -- + +ServingNodeType ::= ENUMERATED +{ + sGSN (0), + pMIPSGW (1), +gTPSGW (2), + ePDG (3), + hSGW (4), + mME (5) +} + +SGSNChange ::= BOOLEAN + -- + -- present if first record after inter SGSN routing area update + -- in new SGSN + -- + +SGWChange ::= BOOLEAN + -- + -- present if first record after inter S-GW change + -- + +TimeQuotaMechanism ::= SEQUENCE +{ + timeQuotaType [1] TimeQuotaType, + baseTimeInterval [2] INTEGER +} + +TimeQuotaType ::= ENUMERATED +{ + dISCRETETIMEPERIOD (0), + cONTINUOUSTIMEPERIOD (1) +} + +END diff --git a/asn1/gprscdr/GenericChargingDataTypesV8e0.asn b/asn1/gprscdr/GenericChargingDataTypesV8e0.asn new file mode 100644 index 0000000000..2c25b175cb --- /dev/null +++ b/asn1/gprscdr/GenericChargingDataTypesV8e0.asn @@ -0,0 +1,591 @@ +-- $Id$ +-- 3GPP TS 32.298 V8.14.0 (2006-06) +GenericChargingDataTypes {itu-t (0) identified-organization (4) etsi(0) mobileDomain (0) charging (5) genericChargingDataTypes (0) asn1Module (0) version1 (0)} + +DEFINITIONS IMPLICIT TAGS ::= + +BEGIN + +-- EXPORTS everything + +IMPORTS + + +CallReferenceNumber, NumberOfForwarding +FROM MAP-CH-DataTypes { itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) map-CH-DataTypes (13) version6 (6) } +-- from TS 29.002 [60] + + +AddressString, BasicServiceCode, IMSI, IMEI, ISDN-AddressString, LCSClientExternalID, LCSClientInternalID +FROM MAP-CommonDataTypes { itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) map-CommonDataTypes (18) version6 (6) } +-- from TS 29.002 [60] + + +DestinationRoutingAddress +FROM CAP-DataTypes { itu-t identified-organization (4) etsi (0) mobileDomain (0) +gsm-Network (1) modules (3) cap-datatypes (52) version1 (0) } +-- from TS 29.078 [66] + + +DefaultCallHandling, DefaultSMS-Handling, NotificationToMSUser, ServiceKey +FROM MAP-MS-DataTypes { itu-t identified-organization (4) etsi (0) mobileDomain (0) +gsm-Network (1) modules (3) map-MS-DataTypes (11) version6 (6) } +-- from TS 29.002 [60] + + +Ext-GeographicalInformation, LCSClientType, LCS-Priority, LocationType +FROM MAP-LCS-DataTypes { itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) map-LCS-DataTypes (25) version7 (7)} +-- from TS 29.002 [60] + +PositionMethodFailure-Diagnostic, UnauthorizedLCSClient-Diagnostic +FROM MAP-ER-DataTypes { itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Network (1) modules (3) map-ER-DataTypes (17) version7 (7)} +-- from TS 29.002 [60] + +BasicService +FROM Basic-Service-Elements { itu-t identified-organization (4) etsi (0) +196 basic-service-elements (8) } +-- +-- from "Digital Subscriber Signalling System No. one (DSS1) protocol" +-- ETS 300 196 [62] +-- + +ObjectInstance +FROM CMIP-1 {joint-iso-itu-t ms (9) cmip (1) version1 (1) protocol (3)} + +-- from ITU-T Rec. X.2ab[105] Editor’s note: clarify if this definition is still needed. It appears that it ends in Nirvana. + +-- WS localy defined +--ManagementExtension +--FROM Attribute-ASN1Module {joint-iso-itu-t ms (9) smi (3) part2 (2) asn1Module (2) 1} + +-- from ITU-T Rec. X.721 [106] Editor’s note: clarify if this definition is still needed. +--AE-title +--FROM ACSE-1 {joint-iso-itu-t association-control (2) abstract-syntax (1) apdus (0) version (1) }; +-- +-- From ITU-T Rec. X.2cd[107]. Note that the syntax of AE-title to be used is from +-- ITU-T Rec. X.227 / ISO 8650 corrigendum and not "ANY" Editor’s note: clarify if this definition is still needed. It appears that it ends in Nirvana. +; +------------------------------------------------------------------------------ +-- +-- Generic Data Types +-- +------------------------------------------------------------------------------ + +BCDDirectoryNumber ::= OCTET STRING + -- This type contains the binary coded decimal representation of + -- a directory number e.g. calling/called/connected/translated number. + -- The encoding of the octet string is in accordance with the + -- the elements "Calling party BCD number", "Called party BCD number" + -- and "Connected number" defined in TS 24.008 [64]. + -- This encoding includes type of number and number plan information + -- together with a BCD encoded digit string. + -- It may also contain both a presentation and screening indicator + -- (octet 3a). + -- For the avoidance of doubt, this field does not include + -- octets 1 and 2, the element name and length, as this would be + -- redundant. + +CallDuration ::= INTEGER + -- + -- The call duration is counted in seconds. + -- For successful calls /sessions / PDP contexts, this is the chargeable duration. + -- For call attempts this is the call holding time. + -- + +-- Editor’s note: the explanation above should be removed as proper definitions are required in the individual CDR parameter descriptions in[10] –[31] + +CalledNumber ::= BCDDirectoryNumber + +-- WS extension to cater for older version(6) +CallEventRecordType ::= INTEGER +{ + +-- Record values 0..17 are CS specific. +-- The contents are defined in TS 32.250 [10] + + moCallRecord (0), + mtCallRecord (1), + roamingRecord (2), + incGatewayRecord (3), + outGatewayRecord (4), + transitCallRecord (5), + moSMSRecord (6), + mtSMSRecord (7), + moSMSIWRecord (8), + mtSMSGWRecord (9), + ssActionRecord (10), + hlrIntRecord (11), + locUpdateHLRRecord (12), + locUpdateVLRRecord (13), + commonEquipRecord (14), + moTraceRecord (15), --- used in earlier releases + mtTraceRecord (16), --- used in earlier releases + termCAMELRecord (17), +-- +-- Record values 18..22 are GPRS specific. +-- The contents are defined in TS 32.251 [11] +-- + sgsnPDPRecord (18), + ggsnPDPRecord (19), + sgsnMMRecord (20), + sgsnSMORecord (21), + sgsnSMTRecord (22), +-- +-- Record values 23..25 are CS-LCS specific. +-- The contents are defined in TS 32.250 [10] +-- + mtLCSRecord (23), + moLCSRecord (24), + niLCSRecord (25), +-- +-- Record values 26..28 are GPRS-LCS specific. +-- The contents are defined in TS 32.251 [11] +-- + sgsnMtLCSRecord (26), + sgsnMoLCSRecord (27), + sgsnNiLCSRecord (28), +-- +-- Record values 29..62 are MMS specific. +-- The contents are defined in TS 32.270 [30] +-- + mmO1SRecord (29), + mmO4FRqRecord (30), + mmO4FRsRecord (31), + mmO4DRecord (32), + mmO1DRecord (33), + mmO4RRecord (34), + mmO1RRecord (35), + mmOMDRecord (36), + mmR4FRecord (37), + mmR1NRqRecord (38), + mmR1NRsRecord (39), + mmR1RtRecord (40), + mmR1AFRecord (42), + mmR4DRqRecord (43), + mmR4DRsRecord (44), + mmR1RRRecord (45), + mmR4RRqRecord (46), + mmR4RRsRecord (47), + mmRMDRecord (48), + mmFRecord (49), + mmBx1SRecord (50), + mmBx1VRecord (51), + mmBx1URecord (52), + mmBx1DRecord (53), + mM7SRecord (54), + mM7DRqRecord (55), + mM7DRsRecord (56), + mM7CRecord (57), + mM7RRecord (58), + mM7DRRqRecord (59), + mM7DRRsRecord (60), + mM7RRqRecord (61), + mM7RRsRecord (62), +-- +-- Record values 63..69 are IMS specific. +-- The contents are defined in TS 32.260 [20] +-- + s-CSCFRecord (63), + p-CSCFRecord (64), + i-CSCFRecord (65), + mRFCRecord (66), + mGCFRecord (67), + bGCFRecord (68), + aSRecord (69), +-- +-- Record values 70 is for Flow based Charging +-- The contents are defined in TS 32.251 [11] +-- + egsnPDPRecord (70), +-- +-- Record values 71..75 are LCS specific. +-- The contents are defined in TS 32.271 [31] +-- + lCSGMORecord (71), + lCSRGMTRecord (72), + lCSHGMTRecord (73), + lCSVGMTRecord (74), + lCSGNIRecord (75), +-- +-- Record values 76..79 are MBMS specific. +-- The contents are defined in TS 32.251 [11] +-- Record values 76 and 77 are MBMS bearer context specific +-- + sgsnMBMSRecord (76), + ggsnMBMSRecord (77), +-- And TS 32.273 [33] +-- Record values 78 and 79 are MBMS service specific +-- and defined in TS 32.273 [33] + subBMSCRecord (78), + contentBMSCRecord (79), +-- +-- Record Values 80..81 are PoC specific. +-- The contents are defined in TS 32.272 [14] +-- + pPFRecord (80), + cPFRecord (81) +} +-- End WS +RecordType ::= INTEGER +{ + +-- Record values 0..17 are CS specific. +-- The contents are defined in TS 32.250 [10] + + moCallRecord (0), + mtCallRecord (1), + roamingRecord (2), + incGatewayRecord (3), + outGatewayRecord (4), + transitCallRecord (5), + moSMSRecord (6), + mtSMSRecord (7), + moSMSIWRecord (8), + mtSMSGWRecord (9), + ssActionRecord (10), + hlrIntRecord (11), + locUpdateHLRRecord (12), + locUpdateVLRRecord (13), + commonEquipRecord (14), + moTraceRecord (15), --- used in earlier releases + mtTraceRecord (16), --- used in earlier releases + termCAMELRecord (17), +-- +-- Record values 18..22 are GPRS specific. +-- The contents are defined in TS 32.251 [11] +-- + sgsnPDPRecord (18), + sgsnMMRecord (20), + sgsnSMORecord (21), + sgsnSMTRecord (22), +-- +-- Record values 23..25 are CS-LCS specific. +-- The contents are defined in TS 32.250 [10] +-- + mtLCSRecord (23), + moLCSRecord (24), + niLCSRecord (25), +-- +-- Record values 26..28 are GPRS-LCS specific. +-- The contents are defined in TS 32.251 [11] +-- + sgsnMtLCSRecord (26), + sgsnMoLCSRecord (27), + sgsnNiLCSRecord (28), +-- +-- Record values 30..62 are MMS specific. +-- The contents are defined in TS 32.270 [30] +-- + mMO1SRecord (30), + mMO4FRqRecord (31), + mMO4FRsRecord (32), + mMO4DRecord (33), + mMO1DRecord (34), + mMO4RRecord (35), + mMO1RRecord (36), + mMOMDRecord (37), + mMR4FRecord (38), + mMR1NRqRecord (39), + mMR1NRsRecord (40), + mMR1RtRecord (41), + mMR1AFRecord (42), + mMR4DRqRecord (43), + mMR4DRsRecord (44), + mMR1RRRecord (45), + mMR4RRqRecord (46), + mMR4RRsRecord (47), + mMRMDRecord (48), + mMFRecord (49), + mMBx1SRecord (50), + mMBx1VRecord (51), + mMBx1URecord (52), + mMBx1DRecord (53), + mM7SRecord (54), + mM7DRqRecord (55), + mM7DRsRecord (56), + mM7CRecord (57), + mM7RRecord (58), + mM7DRRqRecord (59), + mM7DRRsRecord (60), + mM7RRqRecord (61), + mM7RRsRecord (62), +-- +-- Record values 63..69, 82 are IMS specific. +-- The contents are defined in TS 32.260 [20] +-- + sCSCFRecord (63), + pCSCFRecord (64), + iCSCFRecord (65), + mRFCRecord (66), + mGCFRecord (67), + bGCFRecord (68), + aSRecord (69), + iBCFRecord (82), +-- +-- Record values 70 is for Flow based Charging +-- The contents are defined in TS 32.251 [11] +-- +-- +-- Record values 71..75 are LCS specific. +-- The contents are defined in TS 32.271 [31] +-- + lCSGMORecord (71), + lCSRGMTRecord (72), + lCSHGMTRecord (73), + lCSVGMTRecord (74), + lCSGNIRecord (75), +-- +-- Record values 76..79 are MBMS specific. +-- The contents are defined in TS 32.251 [11] +-- Record values 76 and 77 are MBMS bearer context specific +-- + sgsnMBMSRecord (76), + ggsnMBMSRecord (77), +-- +-- And TS 32.273 [33] +-- Record values 78 and 79 are MBMS service specific +-- and defined in TS 32.273 [33] +-- + sUBBMSCRecord (78), + cONTENTBMSCRecord (79), +-- +-- Record Values 80..81 are PoC specific. +-- The contents are defined in TS 32.272 [32] +-- + pPFRecord (80), + cPFRecord (81), + +-- Record values 84..85 are EPC specific. +-- The contents are defined in TS 32.251 [11] +-- + sGWRecord (84), + pGWRecord (85), +-- +-- Record Value 83 is MMTel specific. +-- The contents are defined in TS 32.275 [35] +-- + + mMTelRecord (83) + +} + +CallingNumber ::= BCDDirectoryNumber + +CallReference ::= INTEGER + +CellId ::= OCTET STRING (SIZE(2)) + -- + -- Coded according to TS 24.008 [64] + -- + +ChargeIndicator ::= INTEGER +{ + noCharge (0), + charge (1) +} + +Diagnostics ::= CHOICE +{ + gsm0408Cause [0] INTEGER, + -- See TS 24.008 [64] + gsm0902MapErrorValue [1] INTEGER, + -- Note: The value to be stored here corresponds to + -- the local values defined in the MAP-Errors and + -- MAP-DialogueInformation modules, for full details + -- see TS 29.002 [60]. + itu-tQ767Cause [2] INTEGER, + -- See ITU-T Q.767 [67] + networkSpecificCause [3] ManagementExtension, + -- To be defined by network operator + manufacturerSpecificCause [4] ManagementExtension, + -- To be defined by manufacturer + positionMethodFailureCause [5] PositionMethodFailure-Diagnostic, + -- see TS 29.002 [60] + unauthorizedLCSClientCause [6] UnauthorizedLCSClient-Diagnostic + -- see TS 29.002 [60] +} + +IPAddress ::= CHOICE +{ + iPBinaryAddress IPBinaryAddress, + iPTextRepresentedAddress IPTextRepresentedAddress +} + +IPBinaryAddress ::= CHOICE +{ + iPBinV4Address [0] OCTET STRING (SIZE(4)), + iPBinV6Address [1] OCTET STRING (SIZE(16)) +} + +IPTextRepresentedAddress ::= CHOICE +{ + -- + -- IP address in the familiar "dot" notation + -- + iPTextV4Address [2] IA5String (SIZE(7..15)), + iPTextV6Address [3] IA5String (SIZE(15..45)) +} + +LCSCause ::= OCTET STRING (SIZE(1)) + -- + -- See LCS Cause Value, TS 49.031 [71] + -- + +LCSClientIdentity ::= SEQUENCE +{ + lcsClientExternalID [0] LCSClientExternalID OPTIONAL, + lcsClientDialedByMS [1] AddressString OPTIONAL, + lcsClientInternalID [2] LCSClientInternalID OPTIONAL +} + +LCSQoSInfo ::= OCTET STRING (SIZE(4)) + -- + -- See LCS QoS IE, TS 49.031 [71] + -- + +LevelOfCAMELService ::= BIT STRING +{ + basic (0), + callDurationSupervision (1), + onlineCharging (2) +} + +LocalSequenceNumber ::= INTEGER (0..4294967295) + -- + -- Sequence number of the record in this node + -- 0.. 4294967295 is equivalent to 0..2**32-1, unsigned integer in four octets + +LocationAreaAndCell ::= SEQUENCE +{ + locationAreaCode [0] LocationAreaCode, + cellId [1] CellId, + mCC-MNC [2] MCC-MNC OPTIONAL +} + +LocationAreaCode ::= OCTET STRING (SIZE(2)) + -- + -- See TS 24.008 [64] + -- + +MCC-MNC ::= OCTET STRING (SIZE(3)) + -- + -- See TS 24.008 [64] + -- + +ManagementExtensions ::= SET OF ManagementExtension + +MessageReference ::= OCTET STRING + +MscNo ::= ISDN-AddressString + -- + -- See TS 23.003 [68] + -- + +MSISDN ::= ISDN-AddressString + -- + -- See TS 23.003 [68] + -- + +MSTimeZone ::= OCTET STRING (SIZE (2)) + -- + -- 1.Octet: Time Zone and 2. Octet: Daylight saving time, see TS 29.060 [75] + -- + +NodeAddress ::= CHOICE +{ + iPAddress [0] IPAddress, + domainName [1] GraphicString +} + +PositioningData ::= OCTET STRING (SIZE(1..33)) + -- + -- See Positioning Data IE (octet 3..n), TS 49.031 [71] + -- + +RecordingEntity ::= AddressString + +ServiceContextID ::= UTF8String + + +ServiceSpecificInfo ::= SEQUENCE +{ + + serviceSpecificData [0] GraphicString OPTIONAL, +serviceSpecificType [1] INTEGER OPTIONAL +} + + +SMSResult ::= Diagnostics + +SmsTpDestinationNumber ::= OCTET STRING + -- + -- This type contains the binary coded decimal representation of + -- the SMS address field the encoding of the octet string is in + -- accordance with the definition of address fields in TS 23.040 [72]. + -- This encoding includes type of number and numbering plan indication + -- together with the address value range. + -- + +SubscriptionID ::= SET +{ + subscriptionIDType [0] SubscriptionIDType, + subscriptionIDData [1] UTF8String +} + +SubscriptionIDType ::= ENUMERATED +{ + eND-USER-E164 (0), + eND-USER-IMSI (1), + eND-USER-SIP-URI (2), + eND-USER-NAI (3), + eND-USER-PRIVATE (4) +} + +SystemType ::= ENUMERATED +{ + -- + -- "unknown" is not to be used in PS domain. + -- + unknown (0), + iuUTRAN (1), + gERAN (2) +} + +TimeStamp ::= OCTET STRING (SIZE(9)) + -- + -- The contents of this field are a compact form of the UTCTime format + -- containing local time plus an offset to universal time. Binary coded + -- decimal encoding is employed for the digits to reduce the storage and + -- transmission overhead + -- e.g. YYMMDDhhmmssShhmm + -- where + -- YY = Year 00 to 99 BCD encoded + -- MM = Month 01 to 12 BCD encoded + -- DD = Day 01 to 31 BCD encoded + -- hh = hour 00 to 23 BCD encoded + -- mm = minute 00 to 59 BCD encoded + -- ss = second 00 to 59 BCD encoded + -- S = Sign 0 = "+", "-" ASCII encoded + -- hh = hour 00 to 23 BCD encoded + -- mm = minute 00 to 59 BCD encoded + -- + +-- Local WS modification Import ManagementExtension here +-- as2wrs fault fix: +DMI-EXTENSION::= CLASS {&id OBJECT IDENTIFIER UNIQUE, + &Value +}WITH SYNTAX {TYPE &Value + ID &id +} + +ManagementExtension ::= SEQUENCE { + identifier DMI-EXTENSION.&id({ManagementExtensionSet}), + significance [1] BOOLEAN DEFAULT FALSE, + information + [2] DMI-EXTENSION.&Value({ManagementExtensionSet}{@.identifier}) +} + +ManagementExtensionSet DMI-EXTENSION ::= + {...} + +END diff --git a/asn1/gprscdr/Makefile.common b/asn1/gprscdr/Makefile.common index 9e515e2456..3b0515b33d 100644 --- a/asn1/gprscdr/Makefile.common +++ b/asn1/gprscdr/Makefile.common @@ -26,8 +26,9 @@ EXPORT_FILES = \ $(PROTOCOL_NAME)-exp.cnf ASN_FILE_LIST = \ - GenericChargingDataTypesV641.asn \ - GPRSChargingDataTypesV641.asn + GenericChargingDataTypesV8e0.asn \ + GPRSChargingDataTypesV641.asn \ + GPRSChargingDataTypesV8e0.asn # The packet-$(PROTOCOL_NAME)-template.h and $(PROTOCOL_NAME).asn # files do not exist for all protocols: Please add/remove as required. diff --git a/asn1/gprscdr/gprscdr.cnf b/asn1/gprscdr/gprscdr.cnf index f785e6e1cb..cedb5f4821 100644 --- a/asn1/gprscdr/gprscdr.cnf +++ b/asn1/gprscdr/gprscdr.cnf @@ -28,6 +28,8 @@ ChangeOfMBMSCondition #.EXPORTS GPRSCallEventRecord GPRSCallEventRecord_PDU +GPRSRecord +GPRSRecord_PDU #.CLASS ATTRIBUTE &id ObjectIdentifierType @@ -39,6 +41,7 @@ GPRSCallEventRecord_PDU #.PDU_NEW GPRSCallEventRecord +GPRSRecord #.FN_BODY ManagementExtension/information diff --git a/epan/dissectors/packet-gprscdr.c b/epan/dissectors/packet-gprscdr.c index c4b88a911d..ac24d6d0ab 100644 --- a/epan/dissectors/packet-gprscdr.c +++ b/epan/dissectors/packet-gprscdr.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-gprscdr.c */ -/* ../../tools/asn2wrs.py -b -p gprscdr -c ./gprscdr.cnf -s ./packet-gprscdr-template -D . -O ../../epan/dissectors GenericChargingDataTypesV641.asn GPRSChargingDataTypesV641.asn */ +/* ../../tools/asn2wrs.py -b -p gprscdr -c ./gprscdr.cnf -s ./packet-gprscdr-template -D . -O ../../epan/dissectors GenericChargingDataTypesV8e0.asn GPRSChargingDataTypesV641.asn GPRSChargingDataTypesV8e0.asn */ /* Input file: packet-gprscdr-template.c */ @@ -55,6 +55,7 @@ static int proto_gprscdr = -1; /*--- Included file: packet-gprscdr-hf.c ---*/ #line 1 "../../asn1/gprscdr/packet-gprscdr-hf.c" static int hf_gprscdr_gprscdr_GPRSCallEventRecord_PDU = -1; /* GPRSCallEventRecord */ +static int hf_gprscdr_gprscdr_GPRSRecord_PDU = -1; /* GPRSRecord */ static int hf_gprscdr_gsm0408Cause = -1; /* INTEGER */ static int hf_gprscdr_gsm0902MapErrorValue = -1; /* INTEGER */ static int hf_gprscdr_itu_tQ767Cause = -1; /* INTEGER */ @@ -69,14 +70,20 @@ static int hf_gprscdr_iPBinV6Address = -1; /* OCTET_STRING_SIZE_16 */ static int hf_gprscdr_iPTextV4Address = -1; /* IA5String_SIZE_7_15 */ static int hf_gprscdr_iPTextV6Address = -1; /* IA5String_SIZE_15_45 */ static int hf_gprscdr_ManagementExtensions_item = -1; /* ManagementExtension */ +static int hf_gprscdr_iPAddress = -1; /* IPAddress */ +static int hf_gprscdr_domainName = -1; /* GraphicString */ +static int hf_gprscdr_serviceSpecificData = -1; /* GraphicString */ +static int hf_gprscdr_serviceSpecificType = -1; /* INTEGER */ +static int hf_gprscdr_subscriptionIDType = -1; /* SubscriptionIDType */ +static int hf_gprscdr_subscriptionIDData = -1; /* UTF8String */ static int hf_gprscdr_identifier = -1; /* OBJECT_IDENTIFIER */ static int hf_gprscdr_significance = -1; /* BOOLEAN */ static int hf_gprscdr_information = -1; /* T_information */ -static int hf_gprscdr_sgsnPDPRecord = -1; /* SGSNPDPRecord */ +static int hf_gprscdr_sgsnPDPRecord = -1; /* SGSNPDPRecordV651 */ static int hf_gprscdr_ggsnPDPRecord = -1; /* GGSNPDPRecord */ static int hf_gprscdr_sgsnMMRecord = -1; /* SGSNMMRecord */ -static int hf_gprscdr_sgsnSMORecord = -1; /* SGSNSMORecord */ -static int hf_gprscdr_sgsnSMTRecord = -1; /* SGSNSMTRecord */ +static int hf_gprscdr_sgsnSMORecord = -1; /* SGSNSMORecordV651 */ +static int hf_gprscdr_sgsnSMTRecord = -1; /* SGSNSMTRecordV651 */ static int hf_gprscdr_egsnPDPRecord = -1; /* EGSNPDPRecord */ static int hf_gprscdr_recordType = -1; /* CallEventRecordType */ static int hf_gprscdr_networkInitiation = -1; /* NetworkInitiatedPDPContext */ @@ -89,11 +96,11 @@ static int hf_gprscdr_accessPointNameNI = -1; /* AccessPointNameNI */ static int hf_gprscdr_pdpType = -1; /* PDPType */ static int hf_gprscdr_servedPDPAddress = -1; /* PDPAddress */ static int hf_gprscdr_dynamicAddressFlag = -1; /* DynamicAddressFlag */ -static int hf_gprscdr_listOfTrafficVolumes = -1; /* SEQUENCE_OF_ChangeOfCharCondition */ -static int hf_gprscdr_listOfTrafficVolumes_item = -1; /* ChangeOfCharCondition */ +static int hf_gprscdr_listOfTrafficVolumes = -1; /* SEQUENCE_OF_ChangeOfCharConditionV651 */ +static int hf_gprscdr_listOfTrafficVolumes_item = -1; /* ChangeOfCharConditionV651 */ static int hf_gprscdr_recordOpeningTime = -1; /* TimeStamp */ static int hf_gprscdr_duration = -1; /* CallDuration */ -static int hf_gprscdr_causeForRecClosing = -1; /* CauseForRecClosing */ +static int hf_gprscdr_causeForRecClosing = -1; /* CauseForRecClosingV651 */ static int hf_gprscdr_diagnostics = -1; /* Diagnostics */ static int hf_gprscdr_recordSequenceNumber = -1; /* INTEGER */ static int hf_gprscdr_nodeID = -1; /* NodeID */ @@ -112,19 +119,16 @@ static int hf_gprscdr_mSTimeZone = -1; /* MSTimeZone */ static int hf_gprscdr_userLocationInformation = -1; /* OCTET_STRING */ static int hf_gprscdr_cAMELChargingInformation = -1; /* OCTET_STRING */ static int hf_gprscdr_pSFurnishChargingInformation = -1; /* PSFurnishChargingInformation */ -static int hf_gprscdr_listOfServiceData = -1; /* SEQUENCE_OF_ChangeOfServiceCondition */ -static int hf_gprscdr_listOfServiceData_item = -1; /* ChangeOfServiceCondition */ +static int hf_gprscdr_listOfServiceData = -1; /* SEQUENCE_OF_ChangeOfServiceConditionV651 */ +static int hf_gprscdr_listOfServiceData_item = -1; /* ChangeOfServiceConditionV651 */ static int hf_gprscdr_servedIMEI = -1; /* IMEI */ static int hf_gprscdr_sgsnAddress_01 = -1; /* GSNAddress */ static int hf_gprscdr_msNetworkCapability = -1; /* MSNetworkCapability */ static int hf_gprscdr_routingArea = -1; /* RoutingAreaCode */ static int hf_gprscdr_locationAreaCode = -1; /* LocationAreaCode */ static int hf_gprscdr_cellIdentifier = -1; /* CellId */ -static int hf_gprscdr_changeLocation = -1; /* SEQUENCE_OF_ChangeLocation */ -static int hf_gprscdr_changeLocation_item = -1; /* ChangeLocation */ -static int hf_gprscdr_sgsnChange = -1; /* SGSNChange */ -static int hf_gprscdr_cAMELInformationMM = -1; /* CAMELInformationMM */ static int hf_gprscdr_ggsnAddressUsed = -1; /* GSNAddress */ +static int hf_gprscdr_sgsnChange = -1; /* SGSNChange */ static int hf_gprscdr_accessPointNameOI = -1; /* AccessPointNameOI */ static int hf_gprscdr_cAMELInformationPDP = -1; /* CAMELInformationPDP */ static int hf_gprscdr_rNCUnsentDownlinkVolume = -1; /* DataVolumeGPRS */ @@ -136,25 +140,11 @@ static int hf_gprscdr_eventTimeStamp = -1; /* TimeStamp */ static int hf_gprscdr_smsResult = -1; /* SMSResult */ static int hf_gprscdr_destinationNumber = -1; /* SmsTpDestinationNumber */ static int hf_gprscdr_cAMELInformationSMS = -1; /* CAMELInformationSMS */ -static int hf_gprscdr_sCFAddress = -1; /* SCFAddress */ -static int hf_gprscdr_serviceKey = -1; /* ServiceKey */ -static int hf_gprscdr_defaultTransactionHandling = -1; /* DefaultGPRS_Handling */ -static int hf_gprscdr_numberOfDPEncountered = -1; /* NumberOfDPEncountered */ -static int hf_gprscdr_levelOfCAMELService = -1; /* LevelOfCAMELService */ -static int hf_gprscdr_freeFormatData = -1; /* FreeFormatData */ -static int hf_gprscdr_fFDAppendIndicator = -1; /* FFDAppendIndicator */ -static int hf_gprscdr_cAMELAccessPointNameNI = -1; /* CAMELAccessPointNameNI */ -static int hf_gprscdr_cAMELAccessPointNameOI = -1; /* CAMELAccessPointNameOI */ -static int hf_gprscdr_defaultSMSHandling = -1; /* DefaultSMS_Handling */ -static int hf_gprscdr_cAMELCallingPartyNumber = -1; /* CallingNumber */ -static int hf_gprscdr_cAMELDestinationSubscriberNumber = -1; /* SmsTpDestinationNumber */ -static int hf_gprscdr_cAMELSMSCAddress = -1; /* AddressString */ -static int hf_gprscdr_smsReferenceNumber = -1; /* CallReferenceNumber */ static int hf_gprscdr_qosRequested = -1; /* QoSInformation */ static int hf_gprscdr_qosNegotiated = -1; /* QoSInformation */ static int hf_gprscdr_dataVolumeGPRSUplink = -1; /* DataVolumeGPRS */ static int hf_gprscdr_dataVolumeGPRSDownlink = -1; /* DataVolumeGPRS */ -static int hf_gprscdr_changeCondition = -1; /* ChangeCondition */ +static int hf_gprscdr_changeCondition = -1; /* ChangeConditionV651 */ static int hf_gprscdr_changeTime = -1; /* TimeStamp */ static int hf_gprscdr_ratingGroup = -1; /* RatingGroupId */ static int hf_gprscdr_chargingRuleBaseName = -1; /* ChargingRuleBaseName */ @@ -162,7 +152,7 @@ static int hf_gprscdr_resultCode = -1; /* ResultCode */ static int hf_gprscdr_timeOfFirstUsage = -1; /* TimeStamp */ static int hf_gprscdr_timeOfLastUsage = -1; /* TimeStamp */ static int hf_gprscdr_timeUsage = -1; /* CallDuration */ -static int hf_gprscdr_serviceConditionChange = -1; /* ServiceConditionChange */ +static int hf_gprscdr_serviceConditionChange = -1; /* ServiceConditionChangeV651 */ static int hf_gprscdr_qoSInformationNeg = -1; /* QoSInformation */ static int hf_gprscdr_sgsn_Address = -1; /* GSNAddress */ static int hf_gprscdr_sGSNPLMNIdentifier = -1; /* PLMN_Id */ @@ -173,14 +163,112 @@ static int hf_gprscdr_failureHandlingContinue = -1; /* FailureHandlingContinue static int hf_gprscdr_serviceIdentifier = -1; /* ServiceIdentifier */ static int hf_gprscdr_routingAreaCode = -1; /* RoutingAreaCode */ static int hf_gprscdr_cellId = -1; /* CellId */ -static int hf_gprscdr_iPAddress = -1; /* IPAddress */ -static int hf_gprscdr_eTSIAddress = -1; /* ETSIAddress */ +static int hf_gprscdr_sgsnPDPRecord_01 = -1; /* SGSNPDPRecord */ +static int hf_gprscdr_sgsnSMORecord_01 = -1; /* SGSNSMORecord */ +static int hf_gprscdr_sgsnSMTRecord_01 = -1; /* SGSNSMTRecord */ +static int hf_gprscdr_sGWRecord = -1; /* SGWRecord */ +static int hf_gprscdr_pGWRecord = -1; /* PGWRecord */ +static int hf_gprscdr_recordType_01 = -1; /* RecordType */ +static int hf_gprscdr_s_GWAddress = -1; /* GSNAddress */ +static int hf_gprscdr_servingNodeAddress = -1; /* SEQUENCE_OF_GSNAddress */ +static int hf_gprscdr_servingNodeAddress_item = -1; /* GSNAddress */ +static int hf_gprscdr_pdpPDNType = -1; /* PDPType */ +static int hf_gprscdr_servedPDPPDNAddress = -1; /* PDPAddress */ +static int hf_gprscdr_listOfTrafficVolumes_01 = -1; /* SEQUENCE_OF_ChangeOfCharCondition */ +static int hf_gprscdr_listOfTrafficVolumes_item_01 = -1; /* ChangeOfCharCondition */ +static int hf_gprscdr_causeForRecClosing_01 = -1; /* CauseForRecClosing */ +static int hf_gprscdr_servingNodePLMNIdentifier = -1; /* PLMN_Id */ +static int hf_gprscdr_sGWChange = -1; /* SGWChange */ +static int hf_gprscdr_servingNodeType = -1; /* SEQUENCE_OF_ServingNodeType */ +static int hf_gprscdr_servingNodeType_item = -1; /* ServingNodeType */ +static int hf_gprscdr_p_GWAddressUsed = -1; /* GSNAddress */ +static int hf_gprscdr_p_GWPLMNIdentifier = -1; /* PLMN_Id */ +static int hf_gprscdr_startTime = -1; /* TimeStamp */ +static int hf_gprscdr_stopTime = -1; /* TimeStamp */ +static int hf_gprscdr_pDNConnectionChargingID = -1; /* ChargingID */ +static int hf_gprscdr_servedPDPPDNAddressExt = -1; /* PDPAddress */ +static int hf_gprscdr_dynamicAddressFlagExt = -1; /* DynamicAddressFlag */ +static int hf_gprscdr_p_GWAddress = -1; /* GSNAddress */ +static int hf_gprscdr_servinggNodePLMNIdentifier = -1; /* PLMN_Id */ +static int hf_gprscdr_listOfServiceData_01 = -1; /* SEQUENCE_OF_ChangeOfServiceCondition */ +static int hf_gprscdr_listOfServiceData_item_01 = -1; /* ChangeOfServiceCondition */ +static int hf_gprscdr_servedMNNAI = -1; /* SubscriptionID */ +static int hf_gprscdr_served3gpp2MEID = -1; /* OCTET_STRING */ +static int hf_gprscdr_tGPP2UserLocationInformation = -1; /* OCTET_STRING */ +static int hf_gprscdr_changeLocation = -1; /* SEQUENCE_OF_ChangeLocation */ +static int hf_gprscdr_changeLocation_item = -1; /* ChangeLocation */ +static int hf_gprscdr_cAMELInformationMM = -1; /* CAMELInformationMM */ +static int hf_gprscdr_cellPLMNId = -1; /* PLMN_Id */ +static int hf_gprscdr_aFChargingIdentifier = -1; /* AFChargingIdentifier */ +static int hf_gprscdr_flows = -1; /* Flows */ +static int hf_gprscdr_sCFAddress = -1; /* SCFAddress */ +static int hf_gprscdr_serviceKey = -1; /* ServiceKey */ +static int hf_gprscdr_defaultTransactionHandling = -1; /* DefaultGPRS_Handling */ +static int hf_gprscdr_numberOfDPEncountered = -1; /* NumberOfDPEncountered */ +static int hf_gprscdr_levelOfCAMELService = -1; /* LevelOfCAMELService */ +static int hf_gprscdr_freeFormatData = -1; /* FreeFormatData */ +static int hf_gprscdr_fFDAppendIndicator = -1; /* FFDAppendIndicator */ +static int hf_gprscdr_cAMELAccessPointNameNI = -1; /* CAMELAccessPointNameNI */ +static int hf_gprscdr_cAMELAccessPointNameOI = -1; /* CAMELAccessPointNameOI */ +static int hf_gprscdr_defaultSMSHandling = -1; /* DefaultSMS_Handling */ +static int hf_gprscdr_cAMELCallingPartyNumber = -1; /* CallingNumber */ +static int hf_gprscdr_cAMELDestinationSubscriberNumber = -1; /* SmsTpDestinationNumber */ +static int hf_gprscdr_cAMELSMSCAddress = -1; /* AddressString */ +static int hf_gprscdr_smsReferenceNumber = -1; /* CallReferenceNumber */ +static int hf_gprscdr_changeCondition_01 = -1; /* ChangeCondition */ +static int hf_gprscdr_ePCQoSInformation = -1; /* EPCQoSInformation */ +static int hf_gprscdr_serviceConditionChange_01 = -1; /* ServiceConditionChange */ +static int hf_gprscdr_qoSInformationNeg_01 = -1; /* EPCQoSInformation */ +static int hf_gprscdr_servingNodeAddress_01 = -1; /* GSNAddress */ +static int hf_gprscdr_aFRecordInformation = -1; /* SEQUENCE_OF_AFRecordInformation */ +static int hf_gprscdr_aFRecordInformation_item = -1; /* AFRecordInformation */ +static int hf_gprscdr_eventBasedChargingInformation = -1; /* EventBasedChargingInformation */ +static int hf_gprscdr_timeQuotaMechanism = -1; /* TimeQuotaMechanism */ +static int hf_gprscdr_serviceSpecificInfo = -1; /* SEQUENCE_OF_ServiceSpecificInfo */ +static int hf_gprscdr_serviceSpecificInfo_item = -1; /* ServiceSpecificInfo */ +static int hf_gprscdr_mCC_MNC = -1; /* PLMN_Id */ +static int hf_gprscdr_qCI = -1; /* INTEGER */ +static int hf_gprscdr_maxRequestedBandwithUL = -1; /* INTEGER */ +static int hf_gprscdr_maxRequestedBandwithDL = -1; /* INTEGER */ +static int hf_gprscdr_guaranteedBitrateUL = -1; /* INTEGER */ +static int hf_gprscdr_guaranteedBitrateDL = -1; /* INTEGER */ +static int hf_gprscdr_aRP = -1; /* INTEGER */ +static int hf_gprscdr_aPNAggregateMaxBitrateUL = -1; /* INTEGER */ +static int hf_gprscdr_aPNAggregateMaxBitrateDL = -1; /* INTEGER */ +static int hf_gprscdr_numberOfEvents = -1; /* INTEGER */ +static int hf_gprscdr_eventTimeStamps = -1; /* SEQUENCE_OF_TimeStamp */ +static int hf_gprscdr_eventTimeStamps_item = -1; /* TimeStamp */ +static int hf_gprscdr_mediaComponentNumber = -1; /* INTEGER */ +static int hf_gprscdr_flowNumber = -1; /* T_flowNumber */ +static int hf_gprscdr_flowNumber_item = -1; /* INTEGER */ static int hf_gprscdr_pSFreeFormatData = -1; /* FreeFormatData */ static int hf_gprscdr_pSFFDAppendIndicator = -1; /* FFDAppendIndicator */ +static int hf_gprscdr_timeQuotaType = -1; /* TimeQuotaType */ +static int hf_gprscdr_baseTimeInterval = -1; /* INTEGER */ /* named bits */ static int hf_gprscdr_LevelOfCAMELService_basic = -1; static int hf_gprscdr_LevelOfCAMELService_callDurationSupervision = -1; static int hf_gprscdr_LevelOfCAMELService_onlineCharging = -1; +static int hf_gprscdr_ServiceConditionChangeV651_qoSChange = -1; +static int hf_gprscdr_ServiceConditionChangeV651_sGSNChange = -1; +static int hf_gprscdr_ServiceConditionChangeV651_sGSNPLMNIDChange = -1; +static int hf_gprscdr_ServiceConditionChangeV651_tariffTimeSwitch = -1; +static int hf_gprscdr_ServiceConditionChangeV651_pDPContextRelease = -1; +static int hf_gprscdr_ServiceConditionChangeV651_rATChange = -1; +static int hf_gprscdr_ServiceConditionChangeV651_serviceIdledOut = -1; +static int hf_gprscdr_ServiceConditionChangeV651_qCTExpiry = -1; +static int hf_gprscdr_ServiceConditionChangeV651_configurationChange = -1; +static int hf_gprscdr_ServiceConditionChangeV651_serviceStop = -1; +static int hf_gprscdr_ServiceConditionChangeV651_timeThresholdReached = -1; +static int hf_gprscdr_ServiceConditionChangeV651_volumeThresholdReached = -1; +static int hf_gprscdr_ServiceConditionChangeV651_timeExhausted = -1; +static int hf_gprscdr_ServiceConditionChangeV651_volumeExhausted = -1; +static int hf_gprscdr_ServiceConditionChangeV651_timeout = -1; +static int hf_gprscdr_ServiceConditionChangeV651_returnRequested = -1; +static int hf_gprscdr_ServiceConditionChangeV651_reauthorisationRequest = -1; +static int hf_gprscdr_ServiceConditionChangeV651_continueOngoingSession = -1; +static int hf_gprscdr_ServiceConditionChangeV651_retryAndTerminateOngoingSession = -1; +static int hf_gprscdr_ServiceConditionChangeV651_terminateOngoingSession = -1; static int hf_gprscdr_ServiceConditionChange_qoSChange = -1; static int hf_gprscdr_ServiceConditionChange_sGSNChange = -1; static int hf_gprscdr_ServiceConditionChange_sGSNPLMNIDChange = -1; @@ -188,19 +276,31 @@ static int hf_gprscdr_ServiceConditionChange_tariffTimeSwitch = -1; static int hf_gprscdr_ServiceConditionChange_pDPContextRelease = -1; static int hf_gprscdr_ServiceConditionChange_rATChange = -1; static int hf_gprscdr_ServiceConditionChange_serviceIdledOut = -1; -static int hf_gprscdr_ServiceConditionChange_qCTExpiry = -1; +static int hf_gprscdr_ServiceConditionChange_reserved = -1; static int hf_gprscdr_ServiceConditionChange_configurationChange = -1; static int hf_gprscdr_ServiceConditionChange_serviceStop = -1; -static int hf_gprscdr_ServiceConditionChange_timeThresholdReached = -1; -static int hf_gprscdr_ServiceConditionChange_volumeThresholdReached = -1; -static int hf_gprscdr_ServiceConditionChange_timeExhausted = -1; -static int hf_gprscdr_ServiceConditionChange_volumeExhausted = -1; -static int hf_gprscdr_ServiceConditionChange_timeout = -1; -static int hf_gprscdr_ServiceConditionChange_returnRequested = -1; -static int hf_gprscdr_ServiceConditionChange_reauthorisationRequest = -1; -static int hf_gprscdr_ServiceConditionChange_continueOngoingSession = -1; -static int hf_gprscdr_ServiceConditionChange_retryAndTerminateOngoingSession = -1; -static int hf_gprscdr_ServiceConditionChange_terminateOngoingSession = -1; +static int hf_gprscdr_ServiceConditionChange_dCCATimeThresholdReached = -1; +static int hf_gprscdr_ServiceConditionChange_dCCAVolumeThresholdReached = -1; +static int hf_gprscdr_ServiceConditionChange_dCCAServiceSpecificUnitThresholdReached = -1; +static int hf_gprscdr_ServiceConditionChange_dCCATimeExhausted = -1; +static int hf_gprscdr_ServiceConditionChange_dCCAVolumeExhausted = -1; +static int hf_gprscdr_ServiceConditionChange_dCCAValidityTimeout = -1; +static int hf_gprscdr_ServiceConditionChange_reserved1 = -1; +static int hf_gprscdr_ServiceConditionChange_dCCAReauthorisationRequest = -1; +static int hf_gprscdr_ServiceConditionChange_dCCAContinueOngoingSession = -1; +static int hf_gprscdr_ServiceConditionChange_dCCARetryAndTerminateOngoingSession = -1; +static int hf_gprscdr_ServiceConditionChange_dCCATerminateOngoingSession = -1; +static int hf_gprscdr_ServiceConditionChange_cGI_SAIChange = -1; +static int hf_gprscdr_ServiceConditionChange_rAIChange = -1; +static int hf_gprscdr_ServiceConditionChange_dCCAServiceSpecificUnitExhausted = -1; +static int hf_gprscdr_ServiceConditionChange_recordClosure = -1; +static int hf_gprscdr_ServiceConditionChange_timeLimit = -1; +static int hf_gprscdr_ServiceConditionChange_volumeLimit = -1; +static int hf_gprscdr_ServiceConditionChange_serviceSpecificUnitLimit = -1; +static int hf_gprscdr_ServiceConditionChange_envelopeClosure = -1; +static int hf_gprscdr_ServiceConditionChange_eCGIChange = -1; +static int hf_gprscdr_ServiceConditionChange_tAIChange = -1; +static int hf_gprscdr_ServiceConditionChange_userLocationChange = -1; /*--- End of included file: packet-gprscdr-hf.c ---*/ #line 47 "../../asn1/gprscdr/packet-gprscdr-template.c" @@ -217,27 +317,52 @@ static gint ett_gprscdr_IPBinaryAddress = -1; static gint ett_gprscdr_IPTextRepresentedAddress = -1; static gint ett_gprscdr_LevelOfCAMELService = -1; static gint ett_gprscdr_ManagementExtensions = -1; +static gint ett_gprscdr_NodeAddress = -1; +static gint ett_gprscdr_ServiceSpecificInfo = -1; +static gint ett_gprscdr_SubscriptionID = -1; static gint ett_gprscdr_ManagementExtension = -1; static gint ett_gprscdr_GPRSCallEventRecord = -1; static gint ett_gprscdr_GGSNPDPRecord = -1; static gint ett_gprscdr_SEQUENCE_OF_GSNAddress = -1; -static gint ett_gprscdr_SEQUENCE_OF_ChangeOfCharCondition = -1; +static gint ett_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651 = -1; static gint ett_gprscdr_EGSNPDPRecord = -1; +static gint ett_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV651 = -1; +static gint ett_gprscdr_SGSNPDPRecordV651 = -1; +static gint ett_gprscdr_SGSNSMORecordV651 = -1; +static gint ett_gprscdr_SGSNSMTRecordV651 = -1; +static gint ett_gprscdr_ChangeOfCharConditionV651 = -1; +static gint ett_gprscdr_ChangeOfServiceConditionV651 = -1; +static gint ett_gprscdr_ChangeLocationV651 = -1; +static gint ett_gprscdr_ServiceConditionChangeV651 = -1; +static gint ett_gprscdr_GPRSRecord = -1; +static gint ett_gprscdr_SGWRecord = -1; +static gint ett_gprscdr_SEQUENCE_OF_ChangeOfCharCondition = -1; +static gint ett_gprscdr_SEQUENCE_OF_ServingNodeType = -1; +static gint ett_gprscdr_PGWRecord = -1; static gint ett_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition = -1; static gint ett_gprscdr_SGSNMMRecord = -1; static gint ett_gprscdr_SEQUENCE_OF_ChangeLocation = -1; static gint ett_gprscdr_SGSNPDPRecord = -1; static gint ett_gprscdr_SGSNSMORecord = -1; static gint ett_gprscdr_SGSNSMTRecord = -1; +static gint ett_gprscdr_AFRecordInformation = -1; static gint ett_gprscdr_CAMELInformationMM = -1; static gint ett_gprscdr_CAMELInformationPDP = -1; static gint ett_gprscdr_CAMELInformationSMS = -1; static gint ett_gprscdr_ChangeOfCharCondition = -1; static gint ett_gprscdr_ChangeOfServiceCondition = -1; +static gint ett_gprscdr_SEQUENCE_OF_AFRecordInformation = -1; +static gint ett_gprscdr_SEQUENCE_OF_ServiceSpecificInfo = -1; static gint ett_gprscdr_ChangeLocation = -1; +static gint ett_gprscdr_EPCQoSInformation = -1; +static gint ett_gprscdr_EventBasedChargingInformation = -1; +static gint ett_gprscdr_SEQUENCE_OF_TimeStamp = -1; +static gint ett_gprscdr_Flows = -1; +static gint ett_gprscdr_T_flowNumber = -1; static gint ett_gprscdr_PDPAddress = -1; static gint ett_gprscdr_PSFurnishChargingInformation = -1; static gint ett_gprscdr_ServiceConditionChange = -1; +static gint ett_gprscdr_TimeQuotaMechanism = -1; /*--- End of included file: packet-gprscdr-ett.c ---*/ #line 52 "../../asn1/gprscdr/packet-gprscdr-template.c" @@ -369,6 +494,103 @@ dissect_gprscdr_CallEventRecordType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ } +static const value_string gprscdr_RecordType_vals[] = { + { 0, "moCallRecord" }, + { 1, "mtCallRecord" }, + { 2, "roamingRecord" }, + { 3, "incGatewayRecord" }, + { 4, "outGatewayRecord" }, + { 5, "transitCallRecord" }, + { 6, "moSMSRecord" }, + { 7, "mtSMSRecord" }, + { 8, "moSMSIWRecord" }, + { 9, "mtSMSGWRecord" }, + { 10, "ssActionRecord" }, + { 11, "hlrIntRecord" }, + { 12, "locUpdateHLRRecord" }, + { 13, "locUpdateVLRRecord" }, + { 14, "commonEquipRecord" }, + { 15, "moTraceRecord" }, + { 16, "mtTraceRecord" }, + { 17, "termCAMELRecord" }, + { 18, "sgsnPDPRecord" }, + { 20, "sgsnMMRecord" }, + { 21, "sgsnSMORecord" }, + { 22, "sgsnSMTRecord" }, + { 23, "mtLCSRecord" }, + { 24, "moLCSRecord" }, + { 25, "niLCSRecord" }, + { 26, "sgsnMtLCSRecord" }, + { 27, "sgsnMoLCSRecord" }, + { 28, "sgsnNiLCSRecord" }, + { 30, "mMO1SRecord" }, + { 31, "mMO4FRqRecord" }, + { 32, "mMO4FRsRecord" }, + { 33, "mMO4DRecord" }, + { 34, "mMO1DRecord" }, + { 35, "mMO4RRecord" }, + { 36, "mMO1RRecord" }, + { 37, "mMOMDRecord" }, + { 38, "mMR4FRecord" }, + { 39, "mMR1NRqRecord" }, + { 40, "mMR1NRsRecord" }, + { 41, "mMR1RtRecord" }, + { 42, "mMR1AFRecord" }, + { 43, "mMR4DRqRecord" }, + { 44, "mMR4DRsRecord" }, + { 45, "mMR1RRRecord" }, + { 46, "mMR4RRqRecord" }, + { 47, "mMR4RRsRecord" }, + { 48, "mMRMDRecord" }, + { 49, "mMFRecord" }, + { 50, "mMBx1SRecord" }, + { 51, "mMBx1VRecord" }, + { 52, "mMBx1URecord" }, + { 53, "mMBx1DRecord" }, + { 54, "mM7SRecord" }, + { 55, "mM7DRqRecord" }, + { 56, "mM7DRsRecord" }, + { 57, "mM7CRecord" }, + { 58, "mM7RRecord" }, + { 59, "mM7DRRqRecord" }, + { 60, "mM7DRRsRecord" }, + { 61, "mM7RRqRecord" }, + { 62, "mM7RRsRecord" }, + { 63, "sCSCFRecord" }, + { 64, "pCSCFRecord" }, + { 65, "iCSCFRecord" }, + { 66, "mRFCRecord" }, + { 67, "mGCFRecord" }, + { 68, "bGCFRecord" }, + { 69, "aSRecord" }, + { 82, "iBCFRecord" }, + { 71, "lCSGMORecord" }, + { 72, "lCSRGMTRecord" }, + { 73, "lCSHGMTRecord" }, + { 74, "lCSVGMTRecord" }, + { 75, "lCSGNIRecord" }, + { 76, "sgsnMBMSRecord" }, + { 77, "ggsnMBMSRecord" }, + { 78, "sUBBMSCRecord" }, + { 79, "cONTENTBMSCRecord" }, + { 80, "pPFRecord" }, + { 81, "cPFRecord" }, + { 84, "sGWRecord" }, + { 85, "pGWRecord" }, + { 83, "mMTelRecord" }, + { 0, NULL } +}; + + +static int +dissect_gprscdr_RecordType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + static int dissect_gprscdr_CallingNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { @@ -419,7 +641,7 @@ dissect_gprscdr_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset static int dissect_gprscdr_T_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 45 "../../asn1/gprscdr/gprscdr.cnf" +#line 48 "../../asn1/gprscdr/gprscdr.cnf" proto_tree_add_text(tree, tvb, offset, -1, "Not dissected"); @@ -622,6 +844,16 @@ dissect_gprscdr_LocationAreaCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i } + +static int +dissect_gprscdr_MCC_MNC(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + static const ber_sequence_t ManagementExtensions_set_of[1] = { { &hf_gprscdr_ManagementExtensions_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ManagementExtension }, }; @@ -657,7 +889,7 @@ dissect_gprscdr_MSISDN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset static int dissect_gprscdr_MSTimeZone(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 88 "../../asn1/gprscdr/gprscdr.cnf" +#line 91 "../../asn1/gprscdr/gprscdr.cnf" /* * * 1.Octet: Time Zone and 2. Octet: Daylight saving time, see TS 29.060 [75] @@ -694,6 +926,39 @@ dissect_gprscdr_MSTimeZone(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off static int +dissect_gprscdr_GraphicString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString, + actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string gprscdr_NodeAddress_vals[] = { + { 0, "iPAddress" }, + { 1, "domainName" }, + { 0, NULL } +}; + +static const ber_choice_t NodeAddress_choice[] = { + { 0, &hf_gprscdr_iPAddress , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_IPAddress }, + { 1, &hf_gprscdr_domainName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_GraphicString }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_NodeAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + NodeAddress_choice, hf_index, ett_gprscdr_NodeAddress, + NULL); + + return offset; +} + + + +static int dissect_gprscdr_RecordingEntity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); @@ -703,6 +968,32 @@ dissect_gprscdr_RecordingEntity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in static int +dissect_gprscdr_ServiceContextID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String, + actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t ServiceSpecificInfo_sequence[] = { + { &hf_gprscdr_serviceSpecificData, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_GraphicString }, + { &hf_gprscdr_serviceSpecificType, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_ServiceSpecificInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + ServiceSpecificInfo_sequence, hf_index, ett_gprscdr_ServiceSpecificInfo); + + return offset; +} + + + +static int dissect_gprscdr_SMSResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_gprscdr_Diagnostics(implicit_tag, tvb, offset, actx, tree, hf_index); @@ -720,10 +1011,55 @@ dissect_gprscdr_SmsTpDestinationNumber(gboolean implicit_tag _U_, tvbuff_t *tvb } +static const value_string gprscdr_SubscriptionIDType_vals[] = { + { 0, "eND-USER-E164" }, + { 1, "eND-USER-IMSI" }, + { 2, "eND-USER-SIP-URI" }, + { 3, "eND-USER-NAI" }, + { 4, "eND-USER-PRIVATE" }, + { 0, NULL } +}; + + +static int +dissect_gprscdr_SubscriptionIDType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + + +static int +dissect_gprscdr_UTF8String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String, + actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t SubscriptionID_set[] = { + { &hf_gprscdr_subscriptionIDType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_SubscriptionIDType }, + { &hf_gprscdr_subscriptionIDData, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_UTF8String }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_SubscriptionID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset, + SubscriptionID_set, hf_index, ett_gprscdr_SubscriptionID); + + return offset; +} + + static int dissect_gprscdr_TimeStamp(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 49 "../../asn1/gprscdr/gprscdr.cnf" +#line 52 "../../asn1/gprscdr/gprscdr.cnf" /* * * The contents of this field are a compact form of the UTCTime format @@ -839,24 +1175,13 @@ dissect_gprscdr_PDPType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset } - -static int -dissect_gprscdr_ETSIAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index); - - return offset; -} - - static const value_string gprscdr_PDPAddress_vals[] = { { 0, "iPAddress" }, - { 1, "eTSIAddress" }, { 0, NULL } }; static const ber_choice_t PDPAddress_choice[] = { { 0, &hf_gprscdr_iPAddress , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_IPAddress }, - { 1, &hf_gprscdr_eTSIAddress , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_ETSIAddress }, { 0, NULL, 0, 0, 0, NULL } }; @@ -890,7 +1215,7 @@ dissect_gprscdr_DataVolumeGPRS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int } -static const value_string gprscdr_ChangeCondition_vals[] = { +static const value_string gprscdr_ChangeConditionV651_vals[] = { { 0, "qoSChange" }, { 1, "tariffTime" }, { 2, "recordClosure" }, @@ -902,7 +1227,7 @@ static const value_string gprscdr_ChangeCondition_vals[] = { static int -dissect_gprscdr_ChangeCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_gprscdr_ChangeConditionV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); @@ -910,33 +1235,33 @@ dissect_gprscdr_ChangeCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in } -static const ber_sequence_t ChangeOfCharCondition_sequence[] = { +static const ber_sequence_t ChangeOfCharConditionV651_sequence[] = { { &hf_gprscdr_qosRequested, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation }, { &hf_gprscdr_qosNegotiated, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation }, { &hf_gprscdr_dataVolumeGPRSUplink, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS }, { &hf_gprscdr_dataVolumeGPRSDownlink, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS }, - { &hf_gprscdr_changeCondition, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChangeCondition }, + { &hf_gprscdr_changeCondition, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChangeConditionV651 }, { &hf_gprscdr_changeTime , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, { NULL, 0, 0, 0, NULL } }; static int -dissect_gprscdr_ChangeOfCharCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_gprscdr_ChangeOfCharConditionV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, - ChangeOfCharCondition_sequence, hf_index, ett_gprscdr_ChangeOfCharCondition); + ChangeOfCharConditionV651_sequence, hf_index, ett_gprscdr_ChangeOfCharConditionV651); return offset; } -static const ber_sequence_t SEQUENCE_OF_ChangeOfCharCondition_sequence_of[1] = { - { &hf_gprscdr_listOfTrafficVolumes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeOfCharCondition }, +static const ber_sequence_t SEQUENCE_OF_ChangeOfCharConditionV651_sequence_of[1] = { + { &hf_gprscdr_listOfTrafficVolumes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeOfCharConditionV651 }, }; static int -dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, - SEQUENCE_OF_ChangeOfCharCondition_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeOfCharCondition); + SEQUENCE_OF_ChangeOfCharConditionV651_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651); return offset; } @@ -951,7 +1276,7 @@ dissect_gprscdr_SGSNChange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off } -static const value_string gprscdr_CauseForRecClosing_vals[] = { +static const value_string gprscdr_CauseForRecClosingV651_vals[] = { { 0, "normalRelease" }, { 4, "abnormalRelease" }, { 5, "cAMELInitCallRelease" }, @@ -973,7 +1298,7 @@ static const value_string gprscdr_CauseForRecClosing_vals[] = { static int -dissect_gprscdr_CauseForRecClosing(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_gprscdr_CauseForRecClosingV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); @@ -1129,7 +1454,7 @@ dissect_gprscdr_CAMELInformationPDP(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ static const value_string gprscdr_ChChSelectionMode_vals[] = { - { 0, "sGSNSupplied" }, + { 0, "servingNodeSupplied" }, { 1, "subscriptionSpecific" }, { 2, "aPNSpecific" }, { 3, "homeDefault" }, @@ -1157,7 +1482,7 @@ dissect_gprscdr_DynamicAddressFlag(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, } -static const ber_sequence_t SGSNPDPRecord_set[] = { +static const ber_sequence_t SGSNPDPRecordV651_set[] = { { &hf_gprscdr_recordType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType }, { &hf_gprscdr_networkInitiation, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NetworkInitiatedPDPContext }, { &hf_gprscdr_servedIMSI , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, @@ -1172,11 +1497,11 @@ static const ber_sequence_t SGSNPDPRecord_set[] = { { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI }, { &hf_gprscdr_pdpType , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType }, { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress }, - { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition }, + { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651 }, { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, { &hf_gprscdr_duration , BER_CLASS_CON, 17, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration }, { &hf_gprscdr_sgsnChange , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNChange }, - { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 19, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing }, + { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 19, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosingV651 }, { &hf_gprscdr_diagnostics , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics }, { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, { &hf_gprscdr_nodeID , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID }, @@ -1195,9 +1520,9 @@ static const ber_sequence_t SGSNPDPRecord_set[] = { }; static int -dissect_gprscdr_SGSNPDPRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_gprscdr_SGSNPDPRecordV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset, - SGSNPDPRecord_set, hf_index, ett_gprscdr_SGSNPDPRecord); + SGSNPDPRecordV651_set, hf_index, ett_gprscdr_SGSNPDPRecordV651); return offset; } @@ -1238,7 +1563,7 @@ dissect_gprscdr_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o static int dissect_gprscdr_PLMN_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 115 "../../asn1/gprscdr/gprscdr.cnf" +#line 118 "../../asn1/gprscdr/gprscdr.cnf" tvbuff_t *parameter_tvb; proto_tree *subtree; @@ -1269,10 +1594,10 @@ static const ber_sequence_t GGSNPDPRecord_set[] = { { &hf_gprscdr_pdpType , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType }, { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress }, { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag }, - { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition }, + { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651 }, { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, { &hf_gprscdr_duration , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration }, - { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing }, + { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosingV651 }, { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics }, { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, { &hf_gprscdr_nodeID , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID }, @@ -1307,6 +1632,7 @@ static const ber_sequence_t ChangeLocation_sequence[] = { { &hf_gprscdr_routingAreaCode, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode }, { &hf_gprscdr_cellId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId }, { &hf_gprscdr_changeTime , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_mCC_MNC , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id }, { NULL, 0, 0, 0, NULL } }; @@ -1332,6 +1658,37 @@ dissect_gprscdr_SEQUENCE_OF_ChangeLocation(gboolean implicit_tag _U_, tvbuff_t * } +static const value_string gprscdr_CauseForRecClosing_vals[] = { + { 0, "normalRelease" }, + { 4, "abnormalRelease" }, + { 5, "cAMELInitCallRelease" }, + { 16, "volumeLimit" }, + { 17, "timeLimit" }, + { 18, "servingNodeChange" }, + { 19, "maxChangeCond" }, + { 20, "managementIntervention" }, + { 21, "intraSGSNIntersystemChange" }, + { 22, "rATChange" }, + { 23, "mSTimeZoneChange" }, + { 24, "sGSNPLMNIDChange" }, + { 52, "unauthorizedRequestingNetwork" }, + { 53, "unauthorizedLCSClient" }, + { 54, "positionMethodFailure" }, + { 58, "unknownOrUnreachableLCSClient" }, + { 59, "listofDownstreamNodeChange" }, + { 0, NULL } +}; + + +static int +dissect_gprscdr_CauseForRecClosing(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + static const ber_sequence_t CAMELInformationMM_set[] = { { &hf_gprscdr_sCFAddress , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SCFAddress }, { &hf_gprscdr_serviceKey , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServiceKey }, @@ -1353,7 +1710,7 @@ dissect_gprscdr_CAMELInformationMM(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, static const ber_sequence_t SGSNMMRecord_set[] = { - { &hf_gprscdr_recordType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType }, + { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType }, { &hf_gprscdr_servedIMSI , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, { &hf_gprscdr_servedIMEI , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, { &hf_gprscdr_sgsnAddress_01, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress }, @@ -1365,7 +1722,7 @@ static const ber_sequence_t SGSNMMRecord_set[] = { { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, { &hf_gprscdr_duration , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration }, { &hf_gprscdr_sgsnChange , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNChange }, - { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing }, + { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing }, { &hf_gprscdr_diagnostics , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics }, { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, { &hf_gprscdr_nodeID , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID }, @@ -1376,6 +1733,7 @@ static const ber_sequence_t SGSNMMRecord_set[] = { { &hf_gprscdr_cAMELInformationMM, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELInformationMM }, { &hf_gprscdr_rATType , BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode }, + { &hf_gprscdr_cellPLMNId , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id }, { NULL, 0, 0, 0, NULL } }; @@ -1409,7 +1767,7 @@ dissect_gprscdr_CAMELInformationSMS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ } -static const ber_sequence_t SGSNSMORecord_set[] = { +static const ber_sequence_t SGSNSMORecordV651_set[] = { { &hf_gprscdr_recordType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType }, { &hf_gprscdr_servedIMSI , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, { &hf_gprscdr_servedIMEI , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, @@ -1435,15 +1793,15 @@ static const ber_sequence_t SGSNSMORecord_set[] = { }; static int -dissect_gprscdr_SGSNSMORecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_gprscdr_SGSNSMORecordV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset, - SGSNSMORecord_set, hf_index, ett_gprscdr_SGSNSMORecord); + SGSNSMORecordV651_set, hf_index, ett_gprscdr_SGSNSMORecordV651); return offset; } -static const ber_sequence_t SGSNSMTRecord_set[] = { +static const ber_sequence_t SGSNSMTRecordV651_set[] = { { &hf_gprscdr_recordType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType }, { &hf_gprscdr_servedIMSI , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, { &hf_gprscdr_servedIMEI , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, @@ -1467,9 +1825,9 @@ static const ber_sequence_t SGSNSMTRecord_set[] = { }; static int -dissect_gprscdr_SGSNSMTRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_gprscdr_SGSNSMTRecordV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset, - SGSNSMTRecord_set, hf_index, ett_gprscdr_SGSNSMTRecord); + SGSNSMTRecordV651_set, hf_index, ett_gprscdr_SGSNSMTRecordV651); return offset; } @@ -1521,34 +1879,34 @@ dissect_gprscdr_ResultCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off } -static const asn_namedbit ServiceConditionChange_bits[] = { - { 0, &hf_gprscdr_ServiceConditionChange_qoSChange, -1, -1, "qoSChange", NULL }, - { 1, &hf_gprscdr_ServiceConditionChange_sGSNChange, -1, -1, "sGSNChange", NULL }, - { 2, &hf_gprscdr_ServiceConditionChange_sGSNPLMNIDChange, -1, -1, "sGSNPLMNIDChange", NULL }, - { 3, &hf_gprscdr_ServiceConditionChange_tariffTimeSwitch, -1, -1, "tariffTimeSwitch", NULL }, - { 4, &hf_gprscdr_ServiceConditionChange_pDPContextRelease, -1, -1, "pDPContextRelease", NULL }, - { 5, &hf_gprscdr_ServiceConditionChange_rATChange, -1, -1, "rATChange", NULL }, - { 6, &hf_gprscdr_ServiceConditionChange_serviceIdledOut, -1, -1, "serviceIdledOut", NULL }, - { 7, &hf_gprscdr_ServiceConditionChange_qCTExpiry, -1, -1, "qCTExpiry", NULL }, - { 8, &hf_gprscdr_ServiceConditionChange_configurationChange, -1, -1, "configurationChange", NULL }, - { 9, &hf_gprscdr_ServiceConditionChange_serviceStop, -1, -1, "serviceStop", NULL }, - { 10, &hf_gprscdr_ServiceConditionChange_timeThresholdReached, -1, -1, "timeThresholdReached", NULL }, - { 11, &hf_gprscdr_ServiceConditionChange_volumeThresholdReached, -1, -1, "volumeThresholdReached", NULL }, - { 13, &hf_gprscdr_ServiceConditionChange_timeExhausted, -1, -1, "timeExhausted", NULL }, - { 14, &hf_gprscdr_ServiceConditionChange_volumeExhausted, -1, -1, "volumeExhausted", NULL }, - { 15, &hf_gprscdr_ServiceConditionChange_timeout, -1, -1, "timeout", NULL }, - { 16, &hf_gprscdr_ServiceConditionChange_returnRequested, -1, -1, "returnRequested", NULL }, - { 17, &hf_gprscdr_ServiceConditionChange_reauthorisationRequest, -1, -1, "reauthorisationRequest", NULL }, - { 18, &hf_gprscdr_ServiceConditionChange_continueOngoingSession, -1, -1, "continueOngoingSession", NULL }, - { 19, &hf_gprscdr_ServiceConditionChange_retryAndTerminateOngoingSession, -1, -1, "retryAndTerminateOngoingSession", NULL }, - { 20, &hf_gprscdr_ServiceConditionChange_terminateOngoingSession, -1, -1, "terminateOngoingSession", NULL }, +static const asn_namedbit ServiceConditionChangeV651_bits[] = { + { 0, &hf_gprscdr_ServiceConditionChangeV651_qoSChange, -1, -1, "qoSChange", NULL }, + { 1, &hf_gprscdr_ServiceConditionChangeV651_sGSNChange, -1, -1, "sGSNChange", NULL }, + { 2, &hf_gprscdr_ServiceConditionChangeV651_sGSNPLMNIDChange, -1, -1, "sGSNPLMNIDChange", NULL }, + { 3, &hf_gprscdr_ServiceConditionChangeV651_tariffTimeSwitch, -1, -1, "tariffTimeSwitch", NULL }, + { 4, &hf_gprscdr_ServiceConditionChangeV651_pDPContextRelease, -1, -1, "pDPContextRelease", NULL }, + { 5, &hf_gprscdr_ServiceConditionChangeV651_rATChange, -1, -1, "rATChange", NULL }, + { 6, &hf_gprscdr_ServiceConditionChangeV651_serviceIdledOut, -1, -1, "serviceIdledOut", NULL }, + { 7, &hf_gprscdr_ServiceConditionChangeV651_qCTExpiry, -1, -1, "qCTExpiry", NULL }, + { 8, &hf_gprscdr_ServiceConditionChangeV651_configurationChange, -1, -1, "configurationChange", NULL }, + { 9, &hf_gprscdr_ServiceConditionChangeV651_serviceStop, -1, -1, "serviceStop", NULL }, + { 10, &hf_gprscdr_ServiceConditionChangeV651_timeThresholdReached, -1, -1, "timeThresholdReached", NULL }, + { 11, &hf_gprscdr_ServiceConditionChangeV651_volumeThresholdReached, -1, -1, "volumeThresholdReached", NULL }, + { 13, &hf_gprscdr_ServiceConditionChangeV651_timeExhausted, -1, -1, "timeExhausted", NULL }, + { 14, &hf_gprscdr_ServiceConditionChangeV651_volumeExhausted, -1, -1, "volumeExhausted", NULL }, + { 15, &hf_gprscdr_ServiceConditionChangeV651_timeout, -1, -1, "timeout", NULL }, + { 16, &hf_gprscdr_ServiceConditionChangeV651_returnRequested, -1, -1, "returnRequested", NULL }, + { 17, &hf_gprscdr_ServiceConditionChangeV651_reauthorisationRequest, -1, -1, "reauthorisationRequest", NULL }, + { 18, &hf_gprscdr_ServiceConditionChangeV651_continueOngoingSession, -1, -1, "continueOngoingSession", NULL }, + { 19, &hf_gprscdr_ServiceConditionChangeV651_retryAndTerminateOngoingSession, -1, -1, "retryAndTerminateOngoingSession", NULL }, + { 20, &hf_gprscdr_ServiceConditionChangeV651_terminateOngoingSession, -1, -1, "terminateOngoingSession", NULL }, { 0, NULL, 0, 0, NULL, NULL } }; static int -dissect_gprscdr_ServiceConditionChange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_gprscdr_ServiceConditionChangeV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, - ServiceConditionChange_bits, hf_index, ett_gprscdr_ServiceConditionChange, + ServiceConditionChangeV651_bits, hf_index, ett_gprscdr_ServiceConditionChangeV651, NULL); return offset; @@ -1574,7 +1932,7 @@ dissect_gprscdr_ServiceIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, } -static const ber_sequence_t ChangeOfServiceCondition_sequence[] = { +static const ber_sequence_t ChangeOfServiceConditionV651_sequence[] = { { &hf_gprscdr_ratingGroup , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RatingGroupId }, { &hf_gprscdr_chargingRuleBaseName, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingRuleBaseName }, { &hf_gprscdr_resultCode , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ResultCode }, @@ -1582,7 +1940,7 @@ static const ber_sequence_t ChangeOfServiceCondition_sequence[] = { { &hf_gprscdr_timeOfFirstUsage, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, { &hf_gprscdr_timeOfLastUsage, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, { &hf_gprscdr_timeUsage , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration }, - { &hf_gprscdr_serviceConditionChange, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceConditionChange }, + { &hf_gprscdr_serviceConditionChange, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceConditionChangeV651 }, { &hf_gprscdr_qoSInformationNeg, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation }, { &hf_gprscdr_sgsn_Address, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress }, { &hf_gprscdr_sGSNPLMNIdentifier, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id }, @@ -1597,22 +1955,22 @@ static const ber_sequence_t ChangeOfServiceCondition_sequence[] = { }; static int -dissect_gprscdr_ChangeOfServiceCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_gprscdr_ChangeOfServiceConditionV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, - ChangeOfServiceCondition_sequence, hf_index, ett_gprscdr_ChangeOfServiceCondition); + ChangeOfServiceConditionV651_sequence, hf_index, ett_gprscdr_ChangeOfServiceConditionV651); return offset; } -static const ber_sequence_t SEQUENCE_OF_ChangeOfServiceCondition_sequence_of[1] = { - { &hf_gprscdr_listOfServiceData_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeOfServiceCondition }, +static const ber_sequence_t SEQUENCE_OF_ChangeOfServiceConditionV651_sequence_of[1] = { + { &hf_gprscdr_listOfServiceData_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeOfServiceConditionV651 }, }; static int -dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, - SEQUENCE_OF_ChangeOfServiceCondition_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition); + SEQUENCE_OF_ChangeOfServiceConditionV651_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV651); return offset; } @@ -1629,10 +1987,10 @@ static const ber_sequence_t EGSNPDPRecord_set[] = { { &hf_gprscdr_pdpType , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType }, { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress }, { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag }, - { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition }, + { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651 }, { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, { &hf_gprscdr_duration , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration }, - { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing }, + { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosingV651 }, { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics }, { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, { &hf_gprscdr_nodeID , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID }, @@ -1651,7 +2009,7 @@ static const ber_sequence_t EGSNPDPRecord_set[] = { { &hf_gprscdr_mSTimeZone , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone }, { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, { &hf_gprscdr_cAMELChargingInformation, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, - { &hf_gprscdr_listOfServiceData, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition }, + { &hf_gprscdr_listOfServiceData, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV651 }, { NULL, 0, 0, 0, NULL } }; @@ -1675,11 +2033,11 @@ const value_string gprscdr_GPRSCallEventRecord_vals[] = { }; static const ber_choice_t GPRSCallEventRecord_choice[] = { - { 20, &hf_gprscdr_sgsnPDPRecord, BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNPDPRecord }, + { 20, &hf_gprscdr_sgsnPDPRecord, BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNPDPRecordV651 }, { 21, &hf_gprscdr_ggsnPDPRecord, BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_gprscdr_GGSNPDPRecord }, { 22, &hf_gprscdr_sgsnMMRecord, BER_CLASS_CON, 22, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNMMRecord }, - { 23, &hf_gprscdr_sgsnSMORecord, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNSMORecord }, - { 24, &hf_gprscdr_sgsnSMTRecord, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNSMTRecord }, + { 23, &hf_gprscdr_sgsnSMORecord, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNSMORecordV651 }, + { 24, &hf_gprscdr_sgsnSMTRecord, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNSMTRecordV651 }, { 28, &hf_gprscdr_egsnPDPRecord, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_gprscdr_EGSNPDPRecord }, { 0, NULL, 0, 0, 0, NULL } }; @@ -1693,6 +2051,622 @@ dissect_gprscdr_GPRSCallEventRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ return offset; } + +static const ber_sequence_t ChangeLocationV651_sequence[] = { + { &hf_gprscdr_locationAreaCode, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode }, + { &hf_gprscdr_routingAreaCode, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode }, + { &hf_gprscdr_cellId , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId }, + { &hf_gprscdr_changeTime , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_ChangeLocationV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + ChangeLocationV651_sequence, hf_index, ett_gprscdr_ChangeLocationV651); + + return offset; +} + + +static const value_string gprscdr_ChangeCondition_vals[] = { + { 0, "qoSChange" }, + { 1, "tariffTime" }, + { 2, "recordClosure" }, + { 6, "cGI-SAICHange" }, + { 7, "rAIChange" }, + { 8, "dT-Establishment" }, + { 9, "dT-Removal" }, + { 10, "eCGIChange" }, + { 11, "tAIChange" }, + { 12, "userLocationChange" }, + { 0, NULL } +}; + + +static int +dissect_gprscdr_ChangeCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t EPCQoSInformation_sequence[] = { + { &hf_gprscdr_qCI , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { &hf_gprscdr_maxRequestedBandwithUL, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { &hf_gprscdr_maxRequestedBandwithDL, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { &hf_gprscdr_guaranteedBitrateUL, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { &hf_gprscdr_guaranteedBitrateDL, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { &hf_gprscdr_aRP , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { &hf_gprscdr_aPNAggregateMaxBitrateUL, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { &hf_gprscdr_aPNAggregateMaxBitrateDL, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_EPCQoSInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + EPCQoSInformation_sequence, hf_index, ett_gprscdr_EPCQoSInformation); + + return offset; +} + + +static const ber_sequence_t ChangeOfCharCondition_sequence[] = { + { &hf_gprscdr_qosRequested, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation }, + { &hf_gprscdr_qosNegotiated, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation }, + { &hf_gprscdr_dataVolumeGPRSUplink, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS }, + { &hf_gprscdr_dataVolumeGPRSDownlink, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS }, + { &hf_gprscdr_changeCondition_01, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChangeCondition }, + { &hf_gprscdr_changeTime , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_ePCQoSInformation, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EPCQoSInformation }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_ChangeOfCharCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + ChangeOfCharCondition_sequence, hf_index, ett_gprscdr_ChangeOfCharCondition); + + return offset; +} + + +static const ber_sequence_t SEQUENCE_OF_ChangeOfCharCondition_sequence_of[1] = { + { &hf_gprscdr_listOfTrafficVolumes_item_01, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeOfCharCondition }, +}; + +static int +dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + SEQUENCE_OF_ChangeOfCharCondition_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeOfCharCondition); + + return offset; +} + + +static const ber_sequence_t SGSNPDPRecord_set[] = { + { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType }, + { &hf_gprscdr_networkInitiation, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NetworkInitiatedPDPContext }, + { &hf_gprscdr_servedIMSI , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gprscdr_servedIMEI , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, + { &hf_gprscdr_sgsnAddress_01, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress }, + { &hf_gprscdr_msNetworkCapability, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSNetworkCapability }, + { &hf_gprscdr_routingArea , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode }, + { &hf_gprscdr_locationAreaCode, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode }, + { &hf_gprscdr_cellIdentifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId }, + { &hf_gprscdr_chargingID , BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID }, + { &hf_gprscdr_ggsnAddressUsed, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress }, + { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI }, + { &hf_gprscdr_pdpType , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType }, + { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress }, + { &hf_gprscdr_listOfTrafficVolumes_01, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition }, + { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_duration , BER_CLASS_CON, 17, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration }, + { &hf_gprscdr_sgsnChange , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNChange }, + { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 19, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing }, + { &hf_gprscdr_diagnostics , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics }, + { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { &hf_gprscdr_nodeID , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID }, + { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions }, + { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber }, + { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode }, + { &hf_gprscdr_accessPointNameOI, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameOI }, + { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN }, + { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics }, + { &hf_gprscdr_rATType , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, + { &hf_gprscdr_cAMELInformationPDP, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELInformationPDP }, + { &hf_gprscdr_rNCUnsentDownlinkVolume, BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS }, + { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode }, + { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_SGSNPDPRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset, + SGSNPDPRecord_set, hf_index, ett_gprscdr_SGSNPDPRecord); + + return offset; +} + + +static const ber_sequence_t SGSNSMORecord_set[] = { + { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType }, + { &hf_gprscdr_servedIMSI , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gprscdr_servedIMEI , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, + { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN }, + { &hf_gprscdr_msNetworkCapability, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSNetworkCapability }, + { &hf_gprscdr_serviceCentre, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { &hf_gprscdr_recordingEntity, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordingEntity }, + { &hf_gprscdr_locationArea, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode }, + { &hf_gprscdr_routingArea , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode }, + { &hf_gprscdr_cellIdentifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId }, + { &hf_gprscdr_messageReference, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gprscdr_MessageReference }, + { &hf_gprscdr_eventTimeStamp, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_smsResult , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_SMSResult }, + { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions }, + { &hf_gprscdr_nodeID , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID }, + { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber }, + { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics }, + { &hf_gprscdr_rATType , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, + { &hf_gprscdr_destinationNumber, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SmsTpDestinationNumber }, + { &hf_gprscdr_cAMELInformationSMS, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELInformationSMS }, + { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_SGSNSMORecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset, + SGSNSMORecord_set, hf_index, ett_gprscdr_SGSNSMORecord); + + return offset; +} + + +static const ber_sequence_t SGSNSMTRecord_set[] = { + { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType }, + { &hf_gprscdr_servedIMSI , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gprscdr_servedIMEI , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, + { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN }, + { &hf_gprscdr_msNetworkCapability, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSNetworkCapability }, + { &hf_gprscdr_serviceCentre, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString }, + { &hf_gprscdr_recordingEntity, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordingEntity }, + { &hf_gprscdr_locationArea, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode }, + { &hf_gprscdr_routingArea , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode }, + { &hf_gprscdr_cellIdentifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId }, + { &hf_gprscdr_eventTimeStamp, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_smsResult , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_SMSResult }, + { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions }, + { &hf_gprscdr_nodeID , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID }, + { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber }, + { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics }, + { &hf_gprscdr_rATType , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, + { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode }, + { &hf_gprscdr_cAMELInformationSMS, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELInformationSMS }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_SGSNSMTRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset, + SGSNSMTRecord_set, hf_index, ett_gprscdr_SGSNSMTRecord); + + return offset; +} + + + +static int +dissect_gprscdr_SGWChange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); + + return offset; +} + + +static const value_string gprscdr_ServingNodeType_vals[] = { + { 0, "sGSN" }, + { 1, "pMIPSGW" }, + { 2, "gTPSGW" }, + { 3, "ePDG" }, + { 4, "hSGW" }, + { 5, "mME" }, + { 0, NULL } +}; + + +static int +dissect_gprscdr_ServingNodeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t SEQUENCE_OF_ServingNodeType_sequence_of[1] = { + { &hf_gprscdr_servingNodeType_item, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ServingNodeType }, +}; + +static int +dissect_gprscdr_SEQUENCE_OF_ServingNodeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + SEQUENCE_OF_ServingNodeType_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ServingNodeType); + + return offset; +} + + +static const ber_sequence_t SGWRecord_set[] = { + { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType }, + { &hf_gprscdr_servedIMSI , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gprscdr_s_GWAddress , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress }, + { &hf_gprscdr_chargingID , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID }, + { &hf_gprscdr_servingNodeAddress, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress }, + { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI }, + { &hf_gprscdr_pdpPDNType , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType }, + { &hf_gprscdr_servedPDPPDNAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress }, + { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag }, + { &hf_gprscdr_listOfTrafficVolumes_01, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition }, + { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_duration , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration }, + { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing }, + { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics }, + { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { &hf_gprscdr_nodeID , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID }, + { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions }, + { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber }, + { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode }, + { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN }, + { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics }, + { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode }, + { &hf_gprscdr_iMSsignalingContext, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL }, + { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id }, + { &hf_gprscdr_servedIMEISV, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, + { &hf_gprscdr_rATType , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, + { &hf_gprscdr_mSTimeZone , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone }, + { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_sGWChange , BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGWChange }, + { &hf_gprscdr_servingNodeType, BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ServingNodeType }, + { &hf_gprscdr_p_GWAddressUsed, BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress }, + { &hf_gprscdr_p_GWPLMNIdentifier, BER_CLASS_CON, 37, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id }, + { &hf_gprscdr_startTime , BER_CLASS_CON, 38, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_stopTime , BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_pDNConnectionChargingID, BER_CLASS_CON, 40, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID }, + { &hf_gprscdr_servedPDPPDNAddressExt, BER_CLASS_CON, 43, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress }, + { &hf_gprscdr_dynamicAddressFlagExt, BER_CLASS_CON, 47, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_SGWRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset, + SGWRecord_set, hf_index, ett_gprscdr_SGWRecord); + + return offset; +} + + +static const asn_namedbit ServiceConditionChange_bits[] = { + { 0, &hf_gprscdr_ServiceConditionChange_qoSChange, -1, -1, "qoSChange", NULL }, + { 1, &hf_gprscdr_ServiceConditionChange_sGSNChange, -1, -1, "sGSNChange", NULL }, + { 2, &hf_gprscdr_ServiceConditionChange_sGSNPLMNIDChange, -1, -1, "sGSNPLMNIDChange", NULL }, + { 3, &hf_gprscdr_ServiceConditionChange_tariffTimeSwitch, -1, -1, "tariffTimeSwitch", NULL }, + { 4, &hf_gprscdr_ServiceConditionChange_pDPContextRelease, -1, -1, "pDPContextRelease", NULL }, + { 5, &hf_gprscdr_ServiceConditionChange_rATChange, -1, -1, "rATChange", NULL }, + { 6, &hf_gprscdr_ServiceConditionChange_serviceIdledOut, -1, -1, "serviceIdledOut", NULL }, + { 7, &hf_gprscdr_ServiceConditionChange_reserved, -1, -1, "reserved", NULL }, + { 8, &hf_gprscdr_ServiceConditionChange_configurationChange, -1, -1, "configurationChange", NULL }, + { 9, &hf_gprscdr_ServiceConditionChange_serviceStop, -1, -1, "serviceStop", NULL }, + { 10, &hf_gprscdr_ServiceConditionChange_dCCATimeThresholdReached, -1, -1, "dCCATimeThresholdReached", NULL }, + { 11, &hf_gprscdr_ServiceConditionChange_dCCAVolumeThresholdReached, -1, -1, "dCCAVolumeThresholdReached", NULL }, + { 12, &hf_gprscdr_ServiceConditionChange_dCCAServiceSpecificUnitThresholdReached, -1, -1, "dCCAServiceSpecificUnitThresholdReached", NULL }, + { 13, &hf_gprscdr_ServiceConditionChange_dCCATimeExhausted, -1, -1, "dCCATimeExhausted", NULL }, + { 14, &hf_gprscdr_ServiceConditionChange_dCCAVolumeExhausted, -1, -1, "dCCAVolumeExhausted", NULL }, + { 15, &hf_gprscdr_ServiceConditionChange_dCCAValidityTimeout, -1, -1, "dCCAValidityTimeout", NULL }, + { 16, &hf_gprscdr_ServiceConditionChange_reserved1, -1, -1, "reserved1", NULL }, + { 17, &hf_gprscdr_ServiceConditionChange_dCCAReauthorisationRequest, -1, -1, "dCCAReauthorisationRequest", NULL }, + { 18, &hf_gprscdr_ServiceConditionChange_dCCAContinueOngoingSession, -1, -1, "dCCAContinueOngoingSession", NULL }, + { 19, &hf_gprscdr_ServiceConditionChange_dCCARetryAndTerminateOngoingSession, -1, -1, "dCCARetryAndTerminateOngoingSession", NULL }, + { 20, &hf_gprscdr_ServiceConditionChange_dCCATerminateOngoingSession, -1, -1, "dCCATerminateOngoingSession", NULL }, + { 21, &hf_gprscdr_ServiceConditionChange_cGI_SAIChange, -1, -1, "cGI-SAIChange", NULL }, + { 22, &hf_gprscdr_ServiceConditionChange_rAIChange, -1, -1, "rAIChange", NULL }, + { 23, &hf_gprscdr_ServiceConditionChange_dCCAServiceSpecificUnitExhausted, -1, -1, "dCCAServiceSpecificUnitExhausted", NULL }, + { 24, &hf_gprscdr_ServiceConditionChange_recordClosure, -1, -1, "recordClosure", NULL }, + { 25, &hf_gprscdr_ServiceConditionChange_timeLimit, -1, -1, "timeLimit", NULL }, + { 26, &hf_gprscdr_ServiceConditionChange_volumeLimit, -1, -1, "volumeLimit", NULL }, + { 27, &hf_gprscdr_ServiceConditionChange_serviceSpecificUnitLimit, -1, -1, "serviceSpecificUnitLimit", NULL }, + { 28, &hf_gprscdr_ServiceConditionChange_envelopeClosure, -1, -1, "envelopeClosure", NULL }, + { 29, &hf_gprscdr_ServiceConditionChange_eCGIChange, -1, -1, "eCGIChange", NULL }, + { 30, &hf_gprscdr_ServiceConditionChange_tAIChange, -1, -1, "tAIChange", NULL }, + { 31, &hf_gprscdr_ServiceConditionChange_userLocationChange, -1, -1, "userLocationChange", NULL }, + { 0, NULL, 0, 0, NULL, NULL } +}; + +static int +dissect_gprscdr_ServiceConditionChange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + ServiceConditionChange_bits, hf_index, ett_gprscdr_ServiceConditionChange, + NULL); + + return offset; +} + + + +static int +dissect_gprscdr_AFChargingIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t T_flowNumber_sequence_of[1] = { + { &hf_gprscdr_flowNumber_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gprscdr_INTEGER }, +}; + +static int +dissect_gprscdr_T_flowNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + T_flowNumber_sequence_of, hf_index, ett_gprscdr_T_flowNumber); + + return offset; +} + + +static const ber_sequence_t Flows_sequence[] = { + { &hf_gprscdr_mediaComponentNumber, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { &hf_gprscdr_flowNumber , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_flowNumber }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_Flows(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + Flows_sequence, hf_index, ett_gprscdr_Flows); + + return offset; +} + + +static const ber_sequence_t AFRecordInformation_sequence[] = { + { &hf_gprscdr_aFChargingIdentifier, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_AFChargingIdentifier }, + { &hf_gprscdr_flows , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_Flows }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_AFRecordInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + AFRecordInformation_sequence, hf_index, ett_gprscdr_AFRecordInformation); + + return offset; +} + + +static const ber_sequence_t SEQUENCE_OF_AFRecordInformation_sequence_of[1] = { + { &hf_gprscdr_aFRecordInformation_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_AFRecordInformation }, +}; + +static int +dissect_gprscdr_SEQUENCE_OF_AFRecordInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + SEQUENCE_OF_AFRecordInformation_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_AFRecordInformation); + + return offset; +} + + +static const ber_sequence_t SEQUENCE_OF_TimeStamp_sequence_of[1] = { + { &hf_gprscdr_eventTimeStamps_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gprscdr_TimeStamp }, +}; + +static int +dissect_gprscdr_SEQUENCE_OF_TimeStamp(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + SEQUENCE_OF_TimeStamp_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_TimeStamp); + + return offset; +} + + +static const ber_sequence_t EventBasedChargingInformation_sequence[] = { + { &hf_gprscdr_numberOfEvents, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { &hf_gprscdr_eventTimeStamps, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_TimeStamp }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_EventBasedChargingInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + EventBasedChargingInformation_sequence, hf_index, ett_gprscdr_EventBasedChargingInformation); + + return offset; +} + + +static const value_string gprscdr_TimeQuotaType_vals[] = { + { 0, "dISCRETETIMEPERIOD" }, + { 1, "cONTINUOUSTIMEPERIOD" }, + { 0, NULL } +}; + + +static int +dissect_gprscdr_TimeQuotaType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const ber_sequence_t TimeQuotaMechanism_sequence[] = { + { &hf_gprscdr_timeQuotaType, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeQuotaType }, + { &hf_gprscdr_baseTimeInterval, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_TimeQuotaMechanism(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + TimeQuotaMechanism_sequence, hf_index, ett_gprscdr_TimeQuotaMechanism); + + return offset; +} + + +static const ber_sequence_t SEQUENCE_OF_ServiceSpecificInfo_sequence_of[1] = { + { &hf_gprscdr_serviceSpecificInfo_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ServiceSpecificInfo }, +}; + +static int +dissect_gprscdr_SEQUENCE_OF_ServiceSpecificInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + SEQUENCE_OF_ServiceSpecificInfo_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ServiceSpecificInfo); + + return offset; +} + + +static const ber_sequence_t ChangeOfServiceCondition_sequence[] = { + { &hf_gprscdr_ratingGroup , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RatingGroupId }, + { &hf_gprscdr_chargingRuleBaseName, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingRuleBaseName }, + { &hf_gprscdr_resultCode , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ResultCode }, + { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber }, + { &hf_gprscdr_timeOfFirstUsage, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_timeOfLastUsage, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_timeUsage , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration }, + { &hf_gprscdr_serviceConditionChange_01, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceConditionChange }, + { &hf_gprscdr_qoSInformationNeg_01, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EPCQoSInformation }, + { &hf_gprscdr_servingNodeAddress_01, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress }, + { &hf_gprscdr_datavolumeFBCUplink, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS }, + { &hf_gprscdr_datavolumeFBCDownlink, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS }, + { &hf_gprscdr_timeOfReport, BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_failureHandlingContinue, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FailureHandlingContinue }, + { &hf_gprscdr_serviceIdentifier, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceIdentifier }, + { &hf_gprscdr_pSFurnishChargingInformation, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSFurnishChargingInformation }, + { &hf_gprscdr_aFRecordInformation, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_AFRecordInformation }, + { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_eventBasedChargingInformation, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EventBasedChargingInformation }, + { &hf_gprscdr_timeQuotaMechanism, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeQuotaMechanism }, + { &hf_gprscdr_serviceSpecificInfo, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ServiceSpecificInfo }, + { &hf_gprscdr_tGPP2UserLocationInformation, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_ChangeOfServiceCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + ChangeOfServiceCondition_sequence, hf_index, ett_gprscdr_ChangeOfServiceCondition); + + return offset; +} + + +static const ber_sequence_t SEQUENCE_OF_ChangeOfServiceCondition_sequence_of[1] = { + { &hf_gprscdr_listOfServiceData_item_01, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeOfServiceCondition }, +}; + +static int +dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + SEQUENCE_OF_ChangeOfServiceCondition_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition); + + return offset; +} + + +static const ber_sequence_t PGWRecord_set[] = { + { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType }, + { &hf_gprscdr_servedIMSI , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI }, + { &hf_gprscdr_p_GWAddress , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress }, + { &hf_gprscdr_chargingID , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID }, + { &hf_gprscdr_servingNodeAddress, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress }, + { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI }, + { &hf_gprscdr_pdpPDNType , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType }, + { &hf_gprscdr_servedPDPPDNAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress }, + { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag }, + { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_duration , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration }, + { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing }, + { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics }, + { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, + { &hf_gprscdr_nodeID , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID }, + { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions }, + { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber }, + { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode }, + { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN }, + { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics }, + { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode }, + { &hf_gprscdr_iMSsignalingContext, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL }, + { &hf_gprscdr_externalChargingID, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_servinggNodePLMNIdentifier, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id }, + { &hf_gprscdr_pSFurnishChargingInformation, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSFurnishChargingInformation }, + { &hf_gprscdr_servedIMEISV, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, + { &hf_gprscdr_rATType , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, + { &hf_gprscdr_mSTimeZone , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone }, + { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_cAMELChargingInformation, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_listOfServiceData_01, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition }, + { &hf_gprscdr_servingNodeType, BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ServingNodeType }, + { &hf_gprscdr_servedMNNAI , BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SubscriptionID }, + { &hf_gprscdr_p_GWPLMNIdentifier, BER_CLASS_CON, 37, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id }, + { &hf_gprscdr_startTime , BER_CLASS_CON, 38, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_stopTime , BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, + { &hf_gprscdr_served3gpp2MEID, BER_CLASS_CON, 40, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_pDNConnectionChargingID, BER_CLASS_CON, 41, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID }, + { &hf_gprscdr_tGPP2UserLocationInformation, BER_CLASS_CON, 42, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_servedPDPPDNAddressExt, BER_CLASS_CON, 45, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress }, + { &hf_gprscdr_dynamicAddressFlagExt, BER_CLASS_CON, 47, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_gprscdr_PGWRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset, + PGWRecord_set, hf_index, ett_gprscdr_PGWRecord); + + return offset; +} + + +const value_string gprscdr_GPRSRecord_vals[] = { + { 20, "sgsnPDPRecord" }, + { 22, "sgsnMMRecord" }, + { 23, "sgsnSMORecord" }, + { 24, "sgsnSMTRecord" }, + { 78, "sGWRecord" }, + { 79, "pGWRecord" }, + { 0, NULL } +}; + +static const ber_choice_t GPRSRecord_choice[] = { + { 20, &hf_gprscdr_sgsnPDPRecord_01, BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNPDPRecord }, + { 22, &hf_gprscdr_sgsnMMRecord, BER_CLASS_CON, 22, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNMMRecord }, + { 23, &hf_gprscdr_sgsnSMORecord_01, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNSMORecord }, + { 24, &hf_gprscdr_sgsnSMTRecord_01, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNSMTRecord }, + { 78, &hf_gprscdr_sGWRecord , BER_CLASS_CON, 78, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGWRecord }, + { 79, &hf_gprscdr_pGWRecord , BER_CLASS_CON, 79, BER_FLAGS_IMPLTAG, dissect_gprscdr_PGWRecord }, + { 0, NULL, 0, 0, 0, NULL } +}; + +int +dissect_gprscdr_GPRSRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + GPRSRecord_choice, hf_index, ett_gprscdr_GPRSRecord, + NULL); + + return offset; +} + /*--- PDUs ---*/ int dissect_gprscdr_GPRSCallEventRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { @@ -1702,6 +2676,13 @@ int dissect_gprscdr_GPRSCallEventRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinf offset = dissect_gprscdr_GPRSCallEventRecord(FALSE, tvb, offset, &asn1_ctx, tree, hf_gprscdr_gprscdr_GPRSCallEventRecord_PDU); return offset; } +int dissect_gprscdr_GPRSRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) { + int offset = 0; + asn1_ctx_t asn1_ctx; + asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo); + offset = dissect_gprscdr_GPRSRecord(FALSE, tvb, offset, &asn1_ctx, tree, hf_gprscdr_gprscdr_GPRSRecord_PDU); + return offset; +} /*--- End of included file: packet-gprscdr-fn.c ---*/ @@ -1722,6 +2703,10 @@ proto_register_gprscdr(void) { "GPRSCallEventRecord", "gprscdr.GPRSCallEventRecord", FT_UINT32, BASE_DEC, VALS(gprscdr_GPRSCallEventRecord_vals), 0, NULL, HFILL }}, + { &hf_gprscdr_gprscdr_GPRSRecord_PDU, + { "GPRSRecord", "gprscdr.GPRSRecord", + FT_UINT32, BASE_DEC, VALS(gprscdr_GPRSRecord_vals), 0, + NULL, HFILL }}, { &hf_gprscdr_gsm0408Cause, { "gsm0408Cause", "gprscdr.gsm0408Cause", FT_INT32, BASE_DEC, NULL, 0, @@ -1778,6 +2763,30 @@ proto_register_gprscdr(void) { "ManagementExtension", "gprscdr.ManagementExtension", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_gprscdr_iPAddress, + { "iPAddress", "gprscdr.iPAddress", + FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0, + NULL, HFILL }}, + { &hf_gprscdr_domainName, + { "domainName", "gprscdr.domainName", + FT_STRING, BASE_NONE, NULL, 0, + "GraphicString", HFILL }}, + { &hf_gprscdr_serviceSpecificData, + { "serviceSpecificData", "gprscdr.serviceSpecificData", + FT_STRING, BASE_NONE, NULL, 0, + "GraphicString", HFILL }}, + { &hf_gprscdr_serviceSpecificType, + { "serviceSpecificType", "gprscdr.serviceSpecificType", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gprscdr_subscriptionIDType, + { "subscriptionIDType", "gprscdr.subscriptionIDType", + FT_UINT32, BASE_DEC, VALS(gprscdr_SubscriptionIDType_vals), 0, + NULL, HFILL }}, + { &hf_gprscdr_subscriptionIDData, + { "subscriptionIDData", "gprscdr.subscriptionIDData", + FT_STRING, BASE_NONE, NULL, 0, + "UTF8String", HFILL }}, { &hf_gprscdr_identifier, { "identifier", "gprscdr.identifier", FT_OID, BASE_NONE, NULL, 0, @@ -1793,7 +2802,7 @@ proto_register_gprscdr(void) { &hf_gprscdr_sgsnPDPRecord, { "sgsnPDPRecord", "gprscdr.sgsnPDPRecord", FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, + "SGSNPDPRecordV651", HFILL }}, { &hf_gprscdr_ggsnPDPRecord, { "ggsnPDPRecord", "gprscdr.ggsnPDPRecord", FT_NONE, BASE_NONE, NULL, 0, @@ -1805,11 +2814,11 @@ proto_register_gprscdr(void) { &hf_gprscdr_sgsnSMORecord, { "sgsnSMORecord", "gprscdr.sgsnSMORecord", FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, + "SGSNSMORecordV651", HFILL }}, { &hf_gprscdr_sgsnSMTRecord, { "sgsnSMTRecord", "gprscdr.sgsnSMTRecord", FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, + "SGSNSMTRecordV651", HFILL }}, { &hf_gprscdr_egsnPDPRecord, { "egsnPDPRecord", "gprscdr.egsnPDPRecord", FT_NONE, BASE_NONE, NULL, 0, @@ -1861,9 +2870,9 @@ proto_register_gprscdr(void) { &hf_gprscdr_listOfTrafficVolumes, { "listOfTrafficVolumes", "gprscdr.listOfTrafficVolumes", FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_OF_ChangeOfCharCondition", HFILL }}, + "SEQUENCE_OF_ChangeOfCharConditionV651", HFILL }}, { &hf_gprscdr_listOfTrafficVolumes_item, - { "ChangeOfCharCondition", "gprscdr.ChangeOfCharCondition", + { "ChangeOfCharConditionV651", "gprscdr.ChangeOfCharConditionV651", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_gprscdr_recordOpeningTime, @@ -1876,8 +2885,8 @@ proto_register_gprscdr(void) "CallDuration", HFILL }}, { &hf_gprscdr_causeForRecClosing, { "causeForRecClosing", "gprscdr.causeForRecClosing", - FT_INT32, BASE_DEC, VALS(gprscdr_CauseForRecClosing_vals), 0, - NULL, HFILL }}, + FT_INT32, BASE_DEC, VALS(gprscdr_CauseForRecClosingV651_vals), 0, + "CauseForRecClosingV651", HFILL }}, { &hf_gprscdr_diagnostics, { "diagnostics", "gprscdr.diagnostics", FT_UINT32, BASE_DEC, VALS(gprscdr_Diagnostics_vals), 0, @@ -1953,9 +2962,9 @@ proto_register_gprscdr(void) { &hf_gprscdr_listOfServiceData, { "listOfServiceData", "gprscdr.listOfServiceData", FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_OF_ChangeOfServiceCondition", HFILL }}, + "SEQUENCE_OF_ChangeOfServiceConditionV651", HFILL }}, { &hf_gprscdr_listOfServiceData_item, - { "ChangeOfServiceCondition", "gprscdr.ChangeOfServiceCondition", + { "ChangeOfServiceConditionV651", "gprscdr.ChangeOfServiceConditionV651", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_gprscdr_servedIMEI, @@ -1982,26 +2991,14 @@ proto_register_gprscdr(void) { "cellIdentifier", "gprscdr.cellIdentifier", FT_BYTES, BASE_NONE, NULL, 0, "CellId", HFILL }}, - { &hf_gprscdr_changeLocation, - { "changeLocation", "gprscdr.changeLocation", - FT_UINT32, BASE_DEC, NULL, 0, - "SEQUENCE_OF_ChangeLocation", HFILL }}, - { &hf_gprscdr_changeLocation_item, - { "ChangeLocation", "gprscdr.ChangeLocation", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_gprscdr_sgsnChange, - { "sgsnChange", "gprscdr.sgsnChange", - FT_BOOLEAN, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_gprscdr_cAMELInformationMM, - { "cAMELInformationMM", "gprscdr.cAMELInformationMM", - FT_NONE, BASE_NONE, NULL, 0, - NULL, HFILL }}, { &hf_gprscdr_ggsnAddressUsed, { "ggsnAddressUsed", "gprscdr.ggsnAddressUsed", FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0, "GSNAddress", HFILL }}, + { &hf_gprscdr_sgsnChange, + { "sgsnChange", "gprscdr.sgsnChange", + FT_BOOLEAN, BASE_NONE, NULL, 0, + NULL, HFILL }}, { &hf_gprscdr_accessPointNameOI, { "accessPointNameOI", "gprscdr.accessPointNameOI", FT_STRING, BASE_NONE, NULL, 0, @@ -2046,62 +3043,6 @@ proto_register_gprscdr(void) { "cAMELInformationSMS", "gprscdr.cAMELInformationSMS", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_gprscdr_sCFAddress, - { "sCFAddress", "gprscdr.sCFAddress", - FT_BYTES, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_gprscdr_serviceKey, - { "serviceKey", "gprscdr.serviceKey", - FT_UINT32, BASE_DEC, NULL, 0, - NULL, HFILL }}, - { &hf_gprscdr_defaultTransactionHandling, - { "defaultTransactionHandling", "gprscdr.defaultTransactionHandling", - FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DefaultGPRS_Handling_vals), 0, - "DefaultGPRS_Handling", HFILL }}, - { &hf_gprscdr_numberOfDPEncountered, - { "numberOfDPEncountered", "gprscdr.numberOfDPEncountered", - FT_INT32, BASE_DEC, NULL, 0, - NULL, HFILL }}, - { &hf_gprscdr_levelOfCAMELService, - { "levelOfCAMELService", "gprscdr.levelOfCAMELService", - FT_BYTES, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_gprscdr_freeFormatData, - { "freeFormatData", "gprscdr.freeFormatData", - FT_BYTES, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_gprscdr_fFDAppendIndicator, - { "fFDAppendIndicator", "gprscdr.fFDAppendIndicator", - FT_BOOLEAN, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_gprscdr_cAMELAccessPointNameNI, - { "cAMELAccessPointNameNI", "gprscdr.cAMELAccessPointNameNI", - FT_STRING, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_gprscdr_cAMELAccessPointNameOI, - { "cAMELAccessPointNameOI", "gprscdr.cAMELAccessPointNameOI", - FT_STRING, BASE_NONE, NULL, 0, - NULL, HFILL }}, - { &hf_gprscdr_defaultSMSHandling, - { "defaultSMSHandling", "gprscdr.defaultSMSHandling", - FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DefaultSMS_Handling_vals), 0, - "DefaultSMS_Handling", HFILL }}, - { &hf_gprscdr_cAMELCallingPartyNumber, - { "cAMELCallingPartyNumber", "gprscdr.cAMELCallingPartyNumber", - FT_BYTES, BASE_NONE, NULL, 0, - "CallingNumber", HFILL }}, - { &hf_gprscdr_cAMELDestinationSubscriberNumber, - { "cAMELDestinationSubscriberNumber", "gprscdr.cAMELDestinationSubscriberNumber", - FT_BYTES, BASE_NONE, NULL, 0, - "SmsTpDestinationNumber", HFILL }}, - { &hf_gprscdr_cAMELSMSCAddress, - { "cAMELSMSCAddress", "gprscdr.cAMELSMSCAddress", - FT_BYTES, BASE_NONE, NULL, 0, - "AddressString", HFILL }}, - { &hf_gprscdr_smsReferenceNumber, - { "smsReferenceNumber", "gprscdr.smsReferenceNumber", - FT_BYTES, BASE_NONE, NULL, 0, - "CallReferenceNumber", HFILL }}, { &hf_gprscdr_qosRequested, { "qosRequested", "gprscdr.qosRequested", FT_BYTES, BASE_NONE, NULL, 0, @@ -2120,8 +3061,8 @@ proto_register_gprscdr(void) "DataVolumeGPRS", HFILL }}, { &hf_gprscdr_changeCondition, { "changeCondition", "gprscdr.changeCondition", - FT_UINT32, BASE_DEC, VALS(gprscdr_ChangeCondition_vals), 0, - NULL, HFILL }}, + FT_UINT32, BASE_DEC, VALS(gprscdr_ChangeConditionV651_vals), 0, + "ChangeConditionV651", HFILL }}, { &hf_gprscdr_changeTime, { "changeTime", "gprscdr.changeTime", FT_BYTES, BASE_NONE, NULL, 0, @@ -2153,7 +3094,7 @@ proto_register_gprscdr(void) { &hf_gprscdr_serviceConditionChange, { "serviceConditionChange", "gprscdr.serviceConditionChange", FT_BYTES, BASE_NONE, NULL, 0, - NULL, HFILL }}, + "ServiceConditionChangeV651", HFILL }}, { &hf_gprscdr_qoSInformationNeg, { "qoSInformationNeg", "gprscdr.qoSInformationNeg", FT_BYTES, BASE_NONE, NULL, 0, @@ -2194,14 +3135,318 @@ proto_register_gprscdr(void) { "cellId", "gprscdr.cellId", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_gprscdr_iPAddress, - { "iPAddress", "gprscdr.iPAddress", + { &hf_gprscdr_sgsnPDPRecord_01, + { "sgsnPDPRecord", "gprscdr.sgsnPDPRecord", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_sgsnSMORecord_01, + { "sgsnSMORecord", "gprscdr.sgsnSMORecord", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_sgsnSMTRecord_01, + { "sgsnSMTRecord", "gprscdr.sgsnSMTRecord", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_sGWRecord, + { "sGWRecord", "gprscdr.sGWRecord", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_pGWRecord, + { "pGWRecord", "gprscdr.pGWRecord", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_recordType_01, + { "recordType", "gprscdr.recordType", + FT_INT32, BASE_DEC, VALS(gprscdr_RecordType_vals), 0, + NULL, HFILL }}, + { &hf_gprscdr_s_GWAddress, + { "s-GWAddress", "gprscdr.s_GWAddress", + FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0, + "GSNAddress", HFILL }}, + { &hf_gprscdr_servingNodeAddress, + { "servingNodeAddress", "gprscdr.servingNodeAddress", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_OF_GSNAddress", HFILL }}, + { &hf_gprscdr_servingNodeAddress_item, + { "GSNAddress", "gprscdr.GSNAddress", + FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0, + NULL, HFILL }}, + { &hf_gprscdr_pdpPDNType, + { "pdpPDNType", "gprscdr.pdpPDNType", + FT_BYTES, BASE_NONE, NULL, 0, + "PDPType", HFILL }}, + { &hf_gprscdr_servedPDPPDNAddress, + { "servedPDPPDNAddress", "gprscdr.servedPDPPDNAddress", + FT_UINT32, BASE_DEC, VALS(gprscdr_PDPAddress_vals), 0, + "PDPAddress", HFILL }}, + { &hf_gprscdr_listOfTrafficVolumes_01, + { "listOfTrafficVolumes", "gprscdr.listOfTrafficVolumes", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_OF_ChangeOfCharCondition", HFILL }}, + { &hf_gprscdr_listOfTrafficVolumes_item_01, + { "ChangeOfCharCondition", "gprscdr.ChangeOfCharCondition", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_causeForRecClosing_01, + { "causeForRecClosing", "gprscdr.causeForRecClosing", + FT_INT32, BASE_DEC, VALS(gprscdr_CauseForRecClosing_vals), 0, + NULL, HFILL }}, + { &hf_gprscdr_servingNodePLMNIdentifier, + { "servingNodePLMNIdentifier", "gprscdr.servingNodePLMNIdentifier", + FT_BYTES, BASE_NONE, NULL, 0, + "PLMN_Id", HFILL }}, + { &hf_gprscdr_sGWChange, + { "sGWChange", "gprscdr.sGWChange", + FT_BOOLEAN, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_servingNodeType, + { "servingNodeType", "gprscdr.servingNodeType", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_OF_ServingNodeType", HFILL }}, + { &hf_gprscdr_servingNodeType_item, + { "ServingNodeType", "gprscdr.ServingNodeType", + FT_UINT32, BASE_DEC, VALS(gprscdr_ServingNodeType_vals), 0, + NULL, HFILL }}, + { &hf_gprscdr_p_GWAddressUsed, + { "p-GWAddressUsed", "gprscdr.p_GWAddressUsed", + FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0, + "GSNAddress", HFILL }}, + { &hf_gprscdr_p_GWPLMNIdentifier, + { "p-GWPLMNIdentifier", "gprscdr.p_GWPLMNIdentifier", + FT_BYTES, BASE_NONE, NULL, 0, + "PLMN_Id", HFILL }}, + { &hf_gprscdr_startTime, + { "startTime", "gprscdr.startTime", + FT_BYTES, BASE_NONE, NULL, 0, + "TimeStamp", HFILL }}, + { &hf_gprscdr_stopTime, + { "stopTime", "gprscdr.stopTime", + FT_BYTES, BASE_NONE, NULL, 0, + "TimeStamp", HFILL }}, + { &hf_gprscdr_pDNConnectionChargingID, + { "pDNConnectionChargingID", "gprscdr.pDNConnectionChargingID", + FT_UINT32, BASE_DEC, NULL, 0, + "ChargingID", HFILL }}, + { &hf_gprscdr_servedPDPPDNAddressExt, + { "servedPDPPDNAddressExt", "gprscdr.servedPDPPDNAddressExt", + FT_UINT32, BASE_DEC, VALS(gprscdr_PDPAddress_vals), 0, + "PDPAddress", HFILL }}, + { &hf_gprscdr_dynamicAddressFlagExt, + { "dynamicAddressFlagExt", "gprscdr.dynamicAddressFlagExt", + FT_BOOLEAN, BASE_NONE, NULL, 0, + "DynamicAddressFlag", HFILL }}, + { &hf_gprscdr_p_GWAddress, + { "p-GWAddress", "gprscdr.p_GWAddress", + FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0, + "GSNAddress", HFILL }}, + { &hf_gprscdr_servinggNodePLMNIdentifier, + { "servinggNodePLMNIdentifier", "gprscdr.servinggNodePLMNIdentifier", + FT_BYTES, BASE_NONE, NULL, 0, + "PLMN_Id", HFILL }}, + { &hf_gprscdr_listOfServiceData_01, + { "listOfServiceData", "gprscdr.listOfServiceData", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_OF_ChangeOfServiceCondition", HFILL }}, + { &hf_gprscdr_listOfServiceData_item_01, + { "ChangeOfServiceCondition", "gprscdr.ChangeOfServiceCondition", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_servedMNNAI, + { "servedMNNAI", "gprscdr.servedMNNAI", + FT_NONE, BASE_NONE, NULL, 0, + "SubscriptionID", HFILL }}, + { &hf_gprscdr_served3gpp2MEID, + { "served3gpp2MEID", "gprscdr.served3gpp2MEID", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_gprscdr_tGPP2UserLocationInformation, + { "tGPP2UserLocationInformation", "gprscdr.tGPP2UserLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, + { &hf_gprscdr_changeLocation, + { "changeLocation", "gprscdr.changeLocation", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_OF_ChangeLocation", HFILL }}, + { &hf_gprscdr_changeLocation_item, + { "ChangeLocation", "gprscdr.ChangeLocation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_cAMELInformationMM, + { "cAMELInformationMM", "gprscdr.cAMELInformationMM", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_cellPLMNId, + { "cellPLMNId", "gprscdr.cellPLMNId", + FT_BYTES, BASE_NONE, NULL, 0, + "PLMN_Id", HFILL }}, + { &hf_gprscdr_aFChargingIdentifier, + { "aFChargingIdentifier", "gprscdr.aFChargingIdentifier", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_flows, + { "flows", "gprscdr.flows", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_sCFAddress, + { "sCFAddress", "gprscdr.sCFAddress", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_serviceKey, + { "serviceKey", "gprscdr.serviceKey", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_defaultTransactionHandling, + { "defaultTransactionHandling", "gprscdr.defaultTransactionHandling", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DefaultGPRS_Handling_vals), 0, + "DefaultGPRS_Handling", HFILL }}, + { &hf_gprscdr_numberOfDPEncountered, + { "numberOfDPEncountered", "gprscdr.numberOfDPEncountered", + FT_INT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_levelOfCAMELService, + { "levelOfCAMELService", "gprscdr.levelOfCAMELService", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_freeFormatData, + { "freeFormatData", "gprscdr.freeFormatData", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_fFDAppendIndicator, + { "fFDAppendIndicator", "gprscdr.fFDAppendIndicator", + FT_BOOLEAN, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_cAMELAccessPointNameNI, + { "cAMELAccessPointNameNI", "gprscdr.cAMELAccessPointNameNI", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_cAMELAccessPointNameOI, + { "cAMELAccessPointNameOI", "gprscdr.cAMELAccessPointNameOI", + FT_STRING, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_defaultSMSHandling, + { "defaultSMSHandling", "gprscdr.defaultSMSHandling", + FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DefaultSMS_Handling_vals), 0, + "DefaultSMS_Handling", HFILL }}, + { &hf_gprscdr_cAMELCallingPartyNumber, + { "cAMELCallingPartyNumber", "gprscdr.cAMELCallingPartyNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "CallingNumber", HFILL }}, + { &hf_gprscdr_cAMELDestinationSubscriberNumber, + { "cAMELDestinationSubscriberNumber", "gprscdr.cAMELDestinationSubscriberNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "SmsTpDestinationNumber", HFILL }}, + { &hf_gprscdr_cAMELSMSCAddress, + { "cAMELSMSCAddress", "gprscdr.cAMELSMSCAddress", + FT_BYTES, BASE_NONE, NULL, 0, + "AddressString", HFILL }}, + { &hf_gprscdr_smsReferenceNumber, + { "smsReferenceNumber", "gprscdr.smsReferenceNumber", + FT_BYTES, BASE_NONE, NULL, 0, + "CallReferenceNumber", HFILL }}, + { &hf_gprscdr_changeCondition_01, + { "changeCondition", "gprscdr.changeCondition", + FT_UINT32, BASE_DEC, VALS(gprscdr_ChangeCondition_vals), 0, + NULL, HFILL }}, + { &hf_gprscdr_ePCQoSInformation, + { "ePCQoSInformation", "gprscdr.ePCQoSInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_serviceConditionChange_01, + { "serviceConditionChange", "gprscdr.serviceConditionChange", + FT_BYTES, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_qoSInformationNeg_01, + { "qoSInformationNeg", "gprscdr.qoSInformationNeg", + FT_NONE, BASE_NONE, NULL, 0, + "EPCQoSInformation", HFILL }}, + { &hf_gprscdr_servingNodeAddress_01, + { "servingNodeAddress", "gprscdr.servingNodeAddress", FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0, + "GSNAddress", HFILL }}, + { &hf_gprscdr_aFRecordInformation, + { "aFRecordInformation", "gprscdr.aFRecordInformation", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_OF_AFRecordInformation", HFILL }}, + { &hf_gprscdr_aFRecordInformation_item, + { "AFRecordInformation", "gprscdr.AFRecordInformation", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_eventBasedChargingInformation, + { "eventBasedChargingInformation", "gprscdr.eventBasedChargingInformation", + FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, - { &hf_gprscdr_eTSIAddress, - { "eTSIAddress", "gprscdr.eTSIAddress", + { &hf_gprscdr_timeQuotaMechanism, + { "timeQuotaMechanism", "gprscdr.timeQuotaMechanism", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_serviceSpecificInfo, + { "serviceSpecificInfo", "gprscdr.serviceSpecificInfo", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_OF_ServiceSpecificInfo", HFILL }}, + { &hf_gprscdr_serviceSpecificInfo_item, + { "ServiceSpecificInfo", "gprscdr.ServiceSpecificInfo", + FT_NONE, BASE_NONE, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_mCC_MNC, + { "mCC-MNC", "gprscdr.mCC_MNC", + FT_BYTES, BASE_NONE, NULL, 0, + "PLMN_Id", HFILL }}, + { &hf_gprscdr_qCI, + { "qCI", "gprscdr.qCI", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gprscdr_maxRequestedBandwithUL, + { "maxRequestedBandwithUL", "gprscdr.maxRequestedBandwithUL", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gprscdr_maxRequestedBandwithDL, + { "maxRequestedBandwithDL", "gprscdr.maxRequestedBandwithDL", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gprscdr_guaranteedBitrateUL, + { "guaranteedBitrateUL", "gprscdr.guaranteedBitrateUL", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gprscdr_guaranteedBitrateDL, + { "guaranteedBitrateDL", "gprscdr.guaranteedBitrateDL", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gprscdr_aRP, + { "aRP", "gprscdr.aRP", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gprscdr_aPNAggregateMaxBitrateUL, + { "aPNAggregateMaxBitrateUL", "gprscdr.aPNAggregateMaxBitrateUL", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gprscdr_aPNAggregateMaxBitrateDL, + { "aPNAggregateMaxBitrateDL", "gprscdr.aPNAggregateMaxBitrateDL", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gprscdr_numberOfEvents, + { "numberOfEvents", "gprscdr.numberOfEvents", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gprscdr_eventTimeStamps, + { "eventTimeStamps", "gprscdr.eventTimeStamps", + FT_UINT32, BASE_DEC, NULL, 0, + "SEQUENCE_OF_TimeStamp", HFILL }}, + { &hf_gprscdr_eventTimeStamps_item, + { "TimeStamp", "gprscdr.TimeStamp", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_gprscdr_mediaComponentNumber, + { "mediaComponentNumber", "gprscdr.mediaComponentNumber", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, + { &hf_gprscdr_flowNumber, + { "flowNumber", "gprscdr.flowNumber", + FT_UINT32, BASE_DEC, NULL, 0, + NULL, HFILL }}, + { &hf_gprscdr_flowNumber_item, + { "flowNumber item", "gprscdr.flowNumber_item", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, { &hf_gprscdr_pSFreeFormatData, { "pSFreeFormatData", "gprscdr.pSFreeFormatData", FT_BYTES, BASE_NONE, NULL, 0, @@ -2210,6 +3455,14 @@ proto_register_gprscdr(void) { "pSFFDAppendIndicator", "gprscdr.pSFFDAppendIndicator", FT_BOOLEAN, BASE_NONE, NULL, 0, "FFDAppendIndicator", HFILL }}, + { &hf_gprscdr_timeQuotaType, + { "timeQuotaType", "gprscdr.timeQuotaType", + FT_UINT32, BASE_DEC, VALS(gprscdr_TimeQuotaType_vals), 0, + NULL, HFILL }}, + { &hf_gprscdr_baseTimeInterval, + { "baseTimeInterval", "gprscdr.baseTimeInterval", + FT_INT32, BASE_DEC, NULL, 0, + "INTEGER", HFILL }}, { &hf_gprscdr_LevelOfCAMELService_basic, { "basic", "gprscdr.basic", FT_BOOLEAN, 8, NULL, 0x80, @@ -2222,86 +3475,214 @@ proto_register_gprscdr(void) { "onlineCharging", "gprscdr.onlineCharging", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_qoSChange, + { &hf_gprscdr_ServiceConditionChangeV651_qoSChange, { "qoSChange", "gprscdr.qoSChange", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_sGSNChange, + { &hf_gprscdr_ServiceConditionChangeV651_sGSNChange, { "sGSNChange", "gprscdr.sGSNChange", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_sGSNPLMNIDChange, + { &hf_gprscdr_ServiceConditionChangeV651_sGSNPLMNIDChange, { "sGSNPLMNIDChange", "gprscdr.sGSNPLMNIDChange", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_tariffTimeSwitch, + { &hf_gprscdr_ServiceConditionChangeV651_tariffTimeSwitch, { "tariffTimeSwitch", "gprscdr.tariffTimeSwitch", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_pDPContextRelease, + { &hf_gprscdr_ServiceConditionChangeV651_pDPContextRelease, { "pDPContextRelease", "gprscdr.pDPContextRelease", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_rATChange, + { &hf_gprscdr_ServiceConditionChangeV651_rATChange, { "rATChange", "gprscdr.rATChange", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_serviceIdledOut, + { &hf_gprscdr_ServiceConditionChangeV651_serviceIdledOut, { "serviceIdledOut", "gprscdr.serviceIdledOut", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_qCTExpiry, + { &hf_gprscdr_ServiceConditionChangeV651_qCTExpiry, { "qCTExpiry", "gprscdr.qCTExpiry", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_configurationChange, + { &hf_gprscdr_ServiceConditionChangeV651_configurationChange, { "configurationChange", "gprscdr.configurationChange", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_serviceStop, + { &hf_gprscdr_ServiceConditionChangeV651_serviceStop, { "serviceStop", "gprscdr.serviceStop", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_timeThresholdReached, + { &hf_gprscdr_ServiceConditionChangeV651_timeThresholdReached, { "timeThresholdReached", "gprscdr.timeThresholdReached", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_volumeThresholdReached, + { &hf_gprscdr_ServiceConditionChangeV651_volumeThresholdReached, { "volumeThresholdReached", "gprscdr.volumeThresholdReached", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_timeExhausted, + { &hf_gprscdr_ServiceConditionChangeV651_timeExhausted, { "timeExhausted", "gprscdr.timeExhausted", FT_BOOLEAN, 8, NULL, 0x04, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_volumeExhausted, + { &hf_gprscdr_ServiceConditionChangeV651_volumeExhausted, { "volumeExhausted", "gprscdr.volumeExhausted", FT_BOOLEAN, 8, NULL, 0x02, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_timeout, + { &hf_gprscdr_ServiceConditionChangeV651_timeout, { "timeout", "gprscdr.timeout", FT_BOOLEAN, 8, NULL, 0x01, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_returnRequested, + { &hf_gprscdr_ServiceConditionChangeV651_returnRequested, { "returnRequested", "gprscdr.returnRequested", FT_BOOLEAN, 8, NULL, 0x80, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_reauthorisationRequest, + { &hf_gprscdr_ServiceConditionChangeV651_reauthorisationRequest, { "reauthorisationRequest", "gprscdr.reauthorisationRequest", FT_BOOLEAN, 8, NULL, 0x40, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_continueOngoingSession, + { &hf_gprscdr_ServiceConditionChangeV651_continueOngoingSession, { "continueOngoingSession", "gprscdr.continueOngoingSession", FT_BOOLEAN, 8, NULL, 0x20, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_retryAndTerminateOngoingSession, + { &hf_gprscdr_ServiceConditionChangeV651_retryAndTerminateOngoingSession, { "retryAndTerminateOngoingSession", "gprscdr.retryAndTerminateOngoingSession", FT_BOOLEAN, 8, NULL, 0x10, NULL, HFILL }}, - { &hf_gprscdr_ServiceConditionChange_terminateOngoingSession, + { &hf_gprscdr_ServiceConditionChangeV651_terminateOngoingSession, { "terminateOngoingSession", "gprscdr.terminateOngoingSession", FT_BOOLEAN, 8, NULL, 0x08, NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_qoSChange, + { "qoSChange", "gprscdr.qoSChange", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_sGSNChange, + { "sGSNChange", "gprscdr.sGSNChange", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_sGSNPLMNIDChange, + { "sGSNPLMNIDChange", "gprscdr.sGSNPLMNIDChange", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_tariffTimeSwitch, + { "tariffTimeSwitch", "gprscdr.tariffTimeSwitch", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_pDPContextRelease, + { "pDPContextRelease", "gprscdr.pDPContextRelease", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_rATChange, + { "rATChange", "gprscdr.rATChange", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_serviceIdledOut, + { "serviceIdledOut", "gprscdr.serviceIdledOut", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_reserved, + { "reserved", "gprscdr.reserved", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_configurationChange, + { "configurationChange", "gprscdr.configurationChange", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_serviceStop, + { "serviceStop", "gprscdr.serviceStop", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_dCCATimeThresholdReached, + { "dCCATimeThresholdReached", "gprscdr.dCCATimeThresholdReached", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_dCCAVolumeThresholdReached, + { "dCCAVolumeThresholdReached", "gprscdr.dCCAVolumeThresholdReached", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_dCCAServiceSpecificUnitThresholdReached, + { "dCCAServiceSpecificUnitThresholdReached", "gprscdr.dCCAServiceSpecificUnitThresholdReached", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_dCCATimeExhausted, + { "dCCATimeExhausted", "gprscdr.dCCATimeExhausted", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_dCCAVolumeExhausted, + { "dCCAVolumeExhausted", "gprscdr.dCCAVolumeExhausted", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_dCCAValidityTimeout, + { "dCCAValidityTimeout", "gprscdr.dCCAValidityTimeout", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_reserved1, + { "reserved1", "gprscdr.reserved1", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_dCCAReauthorisationRequest, + { "dCCAReauthorisationRequest", "gprscdr.dCCAReauthorisationRequest", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_dCCAContinueOngoingSession, + { "dCCAContinueOngoingSession", "gprscdr.dCCAContinueOngoingSession", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_dCCARetryAndTerminateOngoingSession, + { "dCCARetryAndTerminateOngoingSession", "gprscdr.dCCARetryAndTerminateOngoingSession", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_dCCATerminateOngoingSession, + { "dCCATerminateOngoingSession", "gprscdr.dCCATerminateOngoingSession", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_cGI_SAIChange, + { "cGI-SAIChange", "gprscdr.cGI-SAIChange", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_rAIChange, + { "rAIChange", "gprscdr.rAIChange", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_dCCAServiceSpecificUnitExhausted, + { "dCCAServiceSpecificUnitExhausted", "gprscdr.dCCAServiceSpecificUnitExhausted", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_recordClosure, + { "recordClosure", "gprscdr.recordClosure", + FT_BOOLEAN, 8, NULL, 0x80, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_timeLimit, + { "timeLimit", "gprscdr.timeLimit", + FT_BOOLEAN, 8, NULL, 0x40, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_volumeLimit, + { "volumeLimit", "gprscdr.volumeLimit", + FT_BOOLEAN, 8, NULL, 0x20, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_serviceSpecificUnitLimit, + { "serviceSpecificUnitLimit", "gprscdr.serviceSpecificUnitLimit", + FT_BOOLEAN, 8, NULL, 0x10, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_envelopeClosure, + { "envelopeClosure", "gprscdr.envelopeClosure", + FT_BOOLEAN, 8, NULL, 0x08, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_eCGIChange, + { "eCGIChange", "gprscdr.eCGIChange", + FT_BOOLEAN, 8, NULL, 0x04, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_tAIChange, + { "tAIChange", "gprscdr.tAIChange", + FT_BOOLEAN, 8, NULL, 0x02, + NULL, HFILL }}, + { &hf_gprscdr_ServiceConditionChange_userLocationChange, + { "userLocationChange", "gprscdr.userLocationChange", + FT_BOOLEAN, 8, NULL, 0x01, + NULL, HFILL }}, /*--- End of included file: packet-gprscdr-hfarr.c ---*/ #line 72 "../../asn1/gprscdr/packet-gprscdr-template.c" @@ -2321,27 +3702,52 @@ proto_register_gprscdr(void) &ett_gprscdr_IPTextRepresentedAddress, &ett_gprscdr_LevelOfCAMELService, &ett_gprscdr_ManagementExtensions, + &ett_gprscdr_NodeAddress, + &ett_gprscdr_ServiceSpecificInfo, + &ett_gprscdr_SubscriptionID, &ett_gprscdr_ManagementExtension, &ett_gprscdr_GPRSCallEventRecord, &ett_gprscdr_GGSNPDPRecord, &ett_gprscdr_SEQUENCE_OF_GSNAddress, - &ett_gprscdr_SEQUENCE_OF_ChangeOfCharCondition, + &ett_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651, &ett_gprscdr_EGSNPDPRecord, + &ett_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV651, + &ett_gprscdr_SGSNPDPRecordV651, + &ett_gprscdr_SGSNSMORecordV651, + &ett_gprscdr_SGSNSMTRecordV651, + &ett_gprscdr_ChangeOfCharConditionV651, + &ett_gprscdr_ChangeOfServiceConditionV651, + &ett_gprscdr_ChangeLocationV651, + &ett_gprscdr_ServiceConditionChangeV651, + &ett_gprscdr_GPRSRecord, + &ett_gprscdr_SGWRecord, + &ett_gprscdr_SEQUENCE_OF_ChangeOfCharCondition, + &ett_gprscdr_SEQUENCE_OF_ServingNodeType, + &ett_gprscdr_PGWRecord, &ett_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition, &ett_gprscdr_SGSNMMRecord, &ett_gprscdr_SEQUENCE_OF_ChangeLocation, &ett_gprscdr_SGSNPDPRecord, &ett_gprscdr_SGSNSMORecord, &ett_gprscdr_SGSNSMTRecord, + &ett_gprscdr_AFRecordInformation, &ett_gprscdr_CAMELInformationMM, &ett_gprscdr_CAMELInformationPDP, &ett_gprscdr_CAMELInformationSMS, &ett_gprscdr_ChangeOfCharCondition, &ett_gprscdr_ChangeOfServiceCondition, + &ett_gprscdr_SEQUENCE_OF_AFRecordInformation, + &ett_gprscdr_SEQUENCE_OF_ServiceSpecificInfo, &ett_gprscdr_ChangeLocation, + &ett_gprscdr_EPCQoSInformation, + &ett_gprscdr_EventBasedChargingInformation, + &ett_gprscdr_SEQUENCE_OF_TimeStamp, + &ett_gprscdr_Flows, + &ett_gprscdr_T_flowNumber, &ett_gprscdr_PDPAddress, &ett_gprscdr_PSFurnishChargingInformation, &ett_gprscdr_ServiceConditionChange, + &ett_gprscdr_TimeQuotaMechanism, /*--- End of included file: packet-gprscdr-ettarr.c ---*/ #line 80 "../../asn1/gprscdr/packet-gprscdr-template.c" diff --git a/epan/dissectors/packet-gprscdr.h b/epan/dissectors/packet-gprscdr.h index 65c06691bb..d90a9385b7 100644 --- a/epan/dissectors/packet-gprscdr.h +++ b/epan/dissectors/packet-gprscdr.h @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-gprscdr.h */ -/* ../../tools/asn2wrs.py -b -p gprscdr -c ./gprscdr.cnf -s ./packet-gprscdr-template -D . -O ../../epan/dissectors GenericChargingDataTypesV641.asn GPRSChargingDataTypesV641.asn */ +/* ../../tools/asn2wrs.py -b -p gprscdr -c ./gprscdr.cnf -s ./packet-gprscdr-template -D . -O ../../epan/dissectors GenericChargingDataTypesV8e0.asn GPRSChargingDataTypesV641.asn GPRSChargingDataTypesV8e0.asn */ /* Input file: packet-gprscdr-template.h */ @@ -39,8 +39,11 @@ /*--- Included file: packet-gprscdr-exp.h ---*/ #line 1 "../../asn1/gprscdr/packet-gprscdr-exp.h" extern const value_string gprscdr_GPRSCallEventRecord_vals[]; +extern const value_string gprscdr_GPRSRecord_vals[]; int dissect_gprscdr_GPRSCallEventRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); +int dissect_gprscdr_GPRSRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); int dissect_gprscdr_GPRSCallEventRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_); +int dissect_gprscdr_GPRSRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_); /*--- End of included file: packet-gprscdr-exp.h ---*/ #line 31 "../../asn1/gprscdr/packet-gprscdr-template.h" diff --git a/epan/dissectors/packet-gtp.c b/epan/dissectors/packet-gtp.c index 63db2ca36f..711041f19d 100644 --- a/epan/dissectors/packet-gtp.c +++ b/epan/dissectors/packet-gtp.c @@ -7550,7 +7550,11 @@ decode_gtp_data_req(tvbuff_t * tvb, int offset, packet_info * pinfo _U_, proto_t /* XXX this is for release 6, may not work for higher releases */ if(format==1) { - dissect_gprscdr_GPRSCallEventRecord_PDU(next_tvb, pinfo, cdr_dr_tree); + if(rel_id == 6){ + dissect_gprscdr_GPRSCallEventRecord_PDU(next_tvb, pinfo, cdr_dr_tree); + }else if(rel_id == 8){ + dissect_gprscdr_GPRSRecord_PDU(next_tvb, pinfo, cdr_dr_tree); + } } else { /* Do we have a dissector regestering for this data format? */ dissector_try_uint(gtp_cdr_fmt_dissector_table, format, next_tvb, pinfo, cdr_dr_tree); |