aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2011-02-02 17:15:27 +0000
committerAnders Broman <anders.broman@ericsson.com>2011-02-02 17:15:27 +0000
commitba18fd9cc7c1b0ca66562e7e28c337490e641924 (patch)
tree092c6c207348520d1f10e9af96b05ec976ff2b75 /epan/dissectors
parent583d2776f511ea17c9d9a3b9f04cf42cfe33fc51 (diff)
Add packet-gprcdr.[ch] to SVN.
svn path=/trunk/; revision=35760
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-gprscdr.c2741
-rw-r--r--epan/dissectors/packet-gprscdr.h50
2 files changed, 2791 insertions, 0 deletions
diff --git a/epan/dissectors/packet-gprscdr.c b/epan/dissectors/packet-gprscdr.c
new file mode 100644
index 0000000000..1051142c7f
--- /dev/null
+++ b/epan/dissectors/packet-gprscdr.c
@@ -0,0 +1,2741 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Wireshark dissector compiler */
+/* packet-gprscdr.c */
+/* ../../tools/asn2wrs.py -b -e -k -p gprscdr -c ./gprscdr.cnf -s ./packet-gprscdr-template -D . 3GPPGenericChargingDataTypes.asn GPRSChargingDataTypes.asn */
+
+/* Input file: packet-gprscdr-template.c */
+
+#line 1 "packet-gprscdr-template.c"
+/* packet-gprscdr-template.c
+ * Copyright 2011 , Anders Broman <anders.broman [AT] ericsson.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * References: 3GPP TS 32.298
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <glib.h>
+#include <epan/packet.h>
+#include <epan/asn1.h>
+
+#include "packet-ber.h"
+#include "packet-gsm_map.h"
+#include "packet-gprscdr.h"
+
+#define PNAME "GPRS CDR"
+#define PSNAME "GPRSCDR"
+#define PFNAME "gprscdr"
+
+/* Define the GPRS CDR proto */
+static int proto_gprscdr = -1;
+
+
+/*--- Included file: packet-gprscdr-hf.c ---*/
+#line 1 "packet-gprscdr-hf.c"
+static int hf_gprscdr_gprscdr_GPRSCallEventRecord_PDU = -1; /* GPRSCallEventRecord */
+static int hf_gprscdr_gsm0408Cause = -1; /* INTEGER */
+static int hf_gprscdr_gsm0902MapErrorValue = -1; /* INTEGER */
+static int hf_gprscdr_itu_tQ767Cause = -1; /* INTEGER */
+static int hf_gprscdr_networkSpecificCause = -1; /* ManagementExtension */
+static int hf_gprscdr_manufacturerSpecificCause = -1; /* ManagementExtension */
+static int hf_gprscdr_positionMethodFailureCause = -1; /* PositionMethodFailure_Diagnostic */
+static int hf_gprscdr_unauthorizedLCSClientCause = -1; /* UnauthorizedLCSClient_Diagnostic */
+static int hf_gprscdr_iPBinaryAddress = -1; /* IPBinaryAddress */
+static int hf_gprscdr_iPTextRepresentedAddress = -1; /* IPTextRepresentedAddress */
+static int hf_gprscdr_iPBinV4Address = -1; /* OCTET_STRING_SIZE_4 */
+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_lcsClientExternalID = -1; /* LCSClientExternalID */
+static int hf_gprscdr_lcsClientDialedByMS = -1; /* AddressString */
+static int hf_gprscdr_lcsClientInternalID = -1; /* LCSClientInternalID */
+static int hf_gprscdr_locationAreaCode = -1; /* LocationAreaCode */
+static int hf_gprscdr_cellId = -1; /* CellId */
+static int hf_gprscdr_ManagementExtensions_item = -1; /* ManagementExtension */
+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_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_egsnPDPRecord = -1; /* EGSNPDPRecord */
+static int hf_gprscdr_sgsnMBMSRecord = -1; /* SGSNMBMSRecord */
+static int hf_gprscdr_ggsnMBMSRecord = -1; /* GGSNMBMSRecord */
+static int hf_gprscdr_recordType = -1; /* CallEventRecordType */
+static int hf_gprscdr_networkInitiation = -1; /* NetworkInitiatedPDPContext */
+static int hf_gprscdr_servedIMSI = -1; /* IMSI */
+static int hf_gprscdr_ggsnAddress = -1; /* GSNAddress */
+static int hf_gprscdr_chargingID = -1; /* ChargingID */
+static int hf_gprscdr_sgsnAddress = -1; /* SEQUENCE_OF_GSNAddress */
+static int hf_gprscdr_sgsnAddress_item = -1; /* GSNAddress */
+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_recordOpeningTime = -1; /* TimeStamp */
+static int hf_gprscdr_duration = -1; /* CallDuration */
+static int hf_gprscdr_causeForRecClosing = -1; /* CauseForRecClosing */
+static int hf_gprscdr_diagnostics = -1; /* Diagnostics */
+static int hf_gprscdr_recordSequenceNumber = -1; /* INTEGER */
+static int hf_gprscdr_nodeID = -1; /* NodeID */
+static int hf_gprscdr_recordExtensions = -1; /* ManagementExtensions */
+static int hf_gprscdr_localSequenceNumber = -1; /* LocalSequenceNumber */
+static int hf_gprscdr_apnSelectionMode = -1; /* APNSelectionMode */
+static int hf_gprscdr_servedMSISDN = -1; /* MSISDN */
+static int hf_gprscdr_chargingCharacteristics = -1; /* ChargingCharacteristics */
+static int hf_gprscdr_chChSelectionMode = -1; /* ChChSelectionMode */
+static int hf_gprscdr_iMSsignalingContext = -1; /* NULL */
+static int hf_gprscdr_externalChargingID = -1; /* OCTET_STRING */
+static int hf_gprscdr_sgsnPLMNIdentifier = -1; /* PLMN_Id */
+static int hf_gprscdr_pSFurnishChargingInformation = -1; /* PSFurnishChargingInformation */
+static int hf_gprscdr_servedIMEISV = -1; /* IMEI */
+static int hf_gprscdr_rATType = -1; /* RATType */
+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_listOfServiceData = -1; /* SEQUENCE_OF_ChangeOfServiceCondition */
+static int hf_gprscdr_listOfServiceData_item = -1; /* ChangeOfServiceCondition */
+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_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_accessPointNameOI = -1; /* AccessPointNameOI */
+static int hf_gprscdr_cAMELInformationPDP = -1; /* CAMELInformationPDP */
+static int hf_gprscdr_rNCUnsentDownlinkVolume = -1; /* DataVolumeGPRS */
+static int hf_gprscdr_serviceCentre = -1; /* AddressString */
+static int hf_gprscdr_recordingEntity = -1; /* RecordingEntity */
+static int hf_gprscdr_locationArea = -1; /* LocationAreaCode */
+static int hf_gprscdr_messageReference = -1; /* MessageReference */
+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_lcsClientType = -1; /* LCSClientType */
+static int hf_gprscdr_lcsClientIdentity = -1; /* LCSClientIdentity */
+static int hf_gprscdr_locationType = -1; /* LocationType */
+static int hf_gprscdr_lcsQos = -1; /* LCSQoSInfo */
+static int hf_gprscdr_lcsPriority = -1; /* LCS_Priority */
+static int hf_gprscdr_mlcNumber = -1; /* ISDN_AddressString */
+static int hf_gprscdr_measurementDuration = -1; /* CallDuration */
+static int hf_gprscdr_notificationToMSUser = -1; /* NotificationToMSUser */
+static int hf_gprscdr_privacyOverride = -1; /* NULL */
+static int hf_gprscdr_location = -1; /* LocationAreaAndCell */
+static int hf_gprscdr_locationEstimate = -1; /* Ext_GeographicalInformation */
+static int hf_gprscdr_positioningData = -1; /* PositioningData */
+static int hf_gprscdr_lcsCause = -1; /* LCSCause */
+static int hf_gprscdr_locationMethod = -1; /* LocationMethod */
+static int hf_gprscdr_listofDownstreamNodes = -1; /* SEQUENCE_OF_RouteingAreaCode */
+static int hf_gprscdr_listofDownstreamNodes_item = -1; /* RouteingAreaCode */
+static int hf_gprscdr_numberofReceivingUE = -1; /* INTEGER */
+static int hf_gprscdr_mbmsInformation = -1; /* MBMSInformation */
+static int hf_gprscdr_listofDownstreamNodes_01 = -1; /* SEQUENCE_OF_GSNAddress */
+static int hf_gprscdr_listofDownstreamNodes_item_01 = -1; /* GSNAddress */
+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_changeTime = -1; /* TimeStamp */
+static int hf_gprscdr_categoryId = -1; /* CategoryId */
+static int hf_gprscdr_ratingGroupId = -1; /* RatingGroupId */
+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_serviceChangeCause = -1; /* ServiceChangeCause */
+static int hf_gprscdr_qoSInformationNeg = -1; /* QoSInformation */
+static int hf_gprscdr_sgsn_Address = -1; /* GSNAddress */
+static int hf_gprscdr_sGSNPLMNIdentifier = -1; /* SGSNPLMNIdentifier */
+static int hf_gprscdr_datavolumeFBCUplink = -1; /* DataVolumeGPRS */
+static int hf_gprscdr_datavolumeFBCDownlink = -1; /* DataVolumeGPRS */
+static int hf_gprscdr_timeOfReport = -1; /* TimeStamp */
+static int hf_gprscdr_routingAreaCode = -1; /* RoutingAreaCode */
+static int hf_gprscdr_iPAddress = -1; /* IPAddress */
+static int hf_gprscdr_eTSIAddress = -1; /* ETSIAddress */
+static int hf_gprscdr_pSFreeFormatData = -1; /* FreeFormatData */
+static int hf_gprscdr_pSFFDAppendIndicator = -1; /* FFDAppendIndicator */
+static int hf_gprscdr_tMGI = -1; /* TMGI */
+static int hf_gprscdr_mBMSSessionIdentity = -1; /* MBMSSessionIdentity */
+static int hf_gprscdr_mBMSServiceType = -1; /* MBMSServiceType */
+static int hf_gprscdr_mBMSUserServiceType = -1; /* MBMSUserServiceType */
+static int hf_gprscdr_mBMS2G3GIndicator = -1; /* MBMS2G3GIndicator */
+static int hf_gprscdr_fileRepairSupported = -1; /* BOOLEAN */
+static int hf_gprscdr_rAI = -1; /* RoutingAreaCode */
+static int hf_gprscdr_mBMSServiceArea = -1; /* MBMSServiceArea */
+static int hf_gprscdr_requiredMBMSBearerCaps = -1; /* RequiredMBMSBearerCapabilities */
+static int hf_gprscdr_mBMSGWAddress = -1; /* GSNAddress */
+static int hf_gprscdr_cNIPMulticastDistribution = -1; /* CNIPMulticastDistribution */
+/* named bits */
+static int hf_gprscdr_LevelOfCAMELService_basic = -1;
+static int hf_gprscdr_LevelOfCAMELService_callDurationSupervision = -1;
+static int hf_gprscdr_LevelOfCAMELService_onlineCharging = -1;
+
+/*--- End of included file: packet-gprscdr-hf.c ---*/
+#line 46 "packet-gprscdr-template.c"
+
+static int ett_gprscdr = -1;
+
+/*--- Included file: packet-gprscdr-ett.c ---*/
+#line 1 "packet-gprscdr-ett.c"
+static gint ett_gprscdr_Diagnostics = -1;
+static gint ett_gprscdr_IPAddress = -1;
+static gint ett_gprscdr_IPBinaryAddress = -1;
+static gint ett_gprscdr_IPTextRepresentedAddress = -1;
+static gint ett_gprscdr_LCSClientIdentity = -1;
+static gint ett_gprscdr_LevelOfCAMELService = -1;
+static gint ett_gprscdr_LocationAreaAndCell = -1;
+static gint ett_gprscdr_ManagementExtensions = -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_EGSNPDPRecord = -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_SGSNMTLCSRecord = -1;
+static gint ett_gprscdr_SGSNMOLCSRecord = -1;
+static gint ett_gprscdr_SGSNNILCSRecord = -1;
+static gint ett_gprscdr_SGSNMBMSRecord = -1;
+static gint ett_gprscdr_SEQUENCE_OF_RouteingAreaCode = -1;
+static gint ett_gprscdr_GGSNMBMSRecord = -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_ChangeLocation = -1;
+static gint ett_gprscdr_PDPAddress = -1;
+static gint ett_gprscdr_PSFurnishChargingInformation = -1;
+static gint ett_gprscdr_MBMSInformation = -1;
+
+/*--- End of included file: packet-gprscdr-ett.c ---*/
+#line 49 "packet-gprscdr-template.c"
+
+static dissector_handle_t gprscdr_handle;
+
+
+/*--- Included file: packet-gprscdr-fn.c ---*/
+#line 1 "packet-gprscdr-fn.c"
+
+
+static int
+dissect_gprscdr_BCDDirectoryNumber(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 int
+dissect_gprscdr_CallDuration(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_CalledNumber(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_BCDDirectoryNumber(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+static const value_string gprscdr_CallEventRecordType_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" },
+ { 19, "ggsnPDPRecord" },
+ { 20, "sgsnMMRecord" },
+ { 21, "sgsnSMORecord" },
+ { 22, "sgsnSMTRecord" },
+ { 23, "mtLCSRecord" },
+ { 24, "moLCSRecord" },
+ { 25, "niLCSRecord" },
+ { 26, "sgsnMtLCSRecord" },
+ { 27, "sgsnMoLCSRecord" },
+ { 28, "sgsnNiLCSRecord" },
+ { 29, "mmO1SRecord" },
+ { 30, "mmO4FRqRecord" },
+ { 31, "mmO4FRsRecord" },
+ { 32, "mmO4DRecord" },
+ { 33, "mmO1DRecord" },
+ { 34, "mmO4RRecord" },
+ { 35, "mmO1RRecord" },
+ { 36, "mmOMDRecord" },
+ { 37, "mmR4FRecord" },
+ { 38, "mmR1NRqRecord" },
+ { 39, "mmR1NRsRecord" },
+ { 40, "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, "s-CSCFRecord" },
+ { 64, "p-CSCFRecord" },
+ { 65, "i-CSCFRecord" },
+ { 66, "mRFCRecord" },
+ { 67, "mGCFRecord" },
+ { 68, "bGCFRecord" },
+ { 69, "aSRecord" },
+ { 70, "egsnPDPRecord" },
+ { 71, "lCSGMORecord" },
+ { 72, "lCSRGMTRecord" },
+ { 73, "lCSHGMTRecord" },
+ { 74, "lCSVGMTRecord" },
+ { 75, "lCSGNIRecord" },
+ { 76, "sgsnMBMSRecord" },
+ { 77, "ggsnMBMSRecord" },
+ { 78, "subBMSCRecord" },
+ { 79, "contentBMSCRecord" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_gprscdr_CallEventRecordType(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_) {
+ offset = dissect_gprscdr_BCDDirectoryNumber(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_CallReference(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_CellId(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 value_string gprscdr_ChargeIndicator_vals[] = {
+ { 0, "noCharge" },
+ { 1, "charge" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_gprscdr_ChargeIndicator(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_INTEGER(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_OBJECT_IDENTIFIER(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_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_BOOLEAN(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 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 26 "gprscdr.cnf"
+
+ proto_tree_add_text(tree, tvb, offset, -1, "Not dissected");
+
+
+
+ return offset;
+}
+
+
+static const ber_sequence_t ManagementExtension_sequence[] = {
+ { &hf_gprscdr_identifier , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_gprscdr_OBJECT_IDENTIFIER },
+ { &hf_gprscdr_significance, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_BOOLEAN },
+ { &hf_gprscdr_information , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_T_information },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_ManagementExtension(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,
+ ManagementExtension_sequence, hf_index, ett_gprscdr_ManagementExtension);
+
+ return offset;
+}
+
+
+static const value_string gprscdr_Diagnostics_vals[] = {
+ { 0, "gsm0408Cause" },
+ { 1, "gsm0902MapErrorValue" },
+ { 2, "itu-tQ767Cause" },
+ { 3, "networkSpecificCause" },
+ { 4, "manufacturerSpecificCause" },
+ { 5, "positionMethodFailureCause" },
+ { 6, "unauthorizedLCSClientCause" },
+ { 0, NULL }
+};
+
+static const ber_choice_t Diagnostics_choice[] = {
+ { 0, &hf_gprscdr_gsm0408Cause, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
+ { 1, &hf_gprscdr_gsm0902MapErrorValue, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
+ { 2, &hf_gprscdr_itu_tQ767Cause, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
+ { 3, &hf_gprscdr_networkSpecificCause, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtension },
+ { 4, &hf_gprscdr_manufacturerSpecificCause, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtension },
+ { 5, &hf_gprscdr_positionMethodFailureCause, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_er_PositionMethodFailure_Diagnostic },
+ { 6, &hf_gprscdr_unauthorizedLCSClientCause, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gsm_map_er_UnauthorizedLCSClient_Diagnostic },
+ { 0, NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_Diagnostics(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,
+ Diagnostics_choice, hf_index, ett_gprscdr_Diagnostics,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_OCTET_STRING_SIZE_4(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 int
+dissect_gprscdr_OCTET_STRING_SIZE_16(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 value_string gprscdr_IPBinaryAddress_vals[] = {
+ { 0, "iPBinV4Address" },
+ { 1, "iPBinV6Address" },
+ { 0, NULL }
+};
+
+static const ber_choice_t IPBinaryAddress_choice[] = {
+ { 0, &hf_gprscdr_iPBinV4Address, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING_SIZE_4 },
+ { 1, &hf_gprscdr_iPBinV6Address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING_SIZE_16 },
+ { 0, NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_IPBinaryAddress(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,
+ IPBinaryAddress_choice, hf_index, ett_gprscdr_IPBinaryAddress,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_IA5String_SIZE_7_15(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_IA5String,
+ actx, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_IA5String_SIZE_15_45(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_IA5String,
+ actx, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string gprscdr_IPTextRepresentedAddress_vals[] = {
+ { 2, "iPTextV4Address" },
+ { 3, "iPTextV6Address" },
+ { 0, NULL }
+};
+
+static const ber_choice_t IPTextRepresentedAddress_choice[] = {
+ { 2, &hf_gprscdr_iPTextV4Address, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_IA5String_SIZE_7_15 },
+ { 3, &hf_gprscdr_iPTextV6Address, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_IA5String_SIZE_15_45 },
+ { 0, NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_IPTextRepresentedAddress(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,
+ IPTextRepresentedAddress_choice, hf_index, ett_gprscdr_IPTextRepresentedAddress,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string gprscdr_IPAddress_vals[] = {
+ { -1/*choice*/, "iPBinaryAddress" },
+ { -1/*choice*/, "iPTextRepresentedAddress" },
+ { 0, NULL }
+};
+
+static const ber_choice_t IPAddress_choice[] = {
+ { -1/*choice*/, &hf_gprscdr_iPBinaryAddress, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gprscdr_IPBinaryAddress },
+ { -1/*choice*/, &hf_gprscdr_iPTextRepresentedAddress, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gprscdr_IPTextRepresentedAddress },
+ { 0, NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_IPAddress(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,
+ IPAddress_choice, hf_index, ett_gprscdr_IPAddress,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_LCSCause(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 LCSClientIdentity_sequence[] = {
+ { &hf_gprscdr_lcsClientExternalID, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientExternalID },
+ { &hf_gprscdr_lcsClientDialedByMS, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
+ { &hf_gprscdr_lcsClientInternalID, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientInternalID },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_LCSClientIdentity(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,
+ LCSClientIdentity_sequence, hf_index, ett_gprscdr_LCSClientIdentity);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_LCSQoSInfo(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 asn_namedbit LevelOfCAMELService_bits[] = {
+ { 0, &hf_gprscdr_LevelOfCAMELService_basic, -1, -1, "basic", NULL },
+ { 1, &hf_gprscdr_LevelOfCAMELService_callDurationSupervision, -1, -1, "callDurationSupervision", NULL },
+ { 2, &hf_gprscdr_LevelOfCAMELService_onlineCharging, -1, -1, "onlineCharging", NULL },
+ { 0, NULL, 0, 0, NULL, NULL }
+};
+
+static int
+dissect_gprscdr_LevelOfCAMELService(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,
+ LevelOfCAMELService_bits, hf_index, ett_gprscdr_LevelOfCAMELService,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_LocalSequenceNumber(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_LocationAreaCode(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 LocationAreaAndCell_sequence[] = {
+ { &hf_gprscdr_locationAreaCode, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode },
+ { &hf_gprscdr_cellId , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_LocationAreaAndCell(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,
+ LocationAreaAndCell_sequence, hf_index, ett_gprscdr_LocationAreaAndCell);
+
+ 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 },
+};
+
+static int
+dissect_gprscdr_ManagementExtensions(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_of(implicit_tag, actx, tree, tvb, offset,
+ ManagementExtensions_set_of, hf_index, ett_gprscdr_ManagementExtensions);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_MessageReference(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 int
+dissect_gprscdr_MscNo(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_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_MSISDN(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_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+ return 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_) {
+ offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_PositioningData(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 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);
+
+ 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);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_SmsTpDestinationNumber(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 value_string gprscdr_SystemType_vals[] = {
+ { 0, "unknown" },
+ { 1, "iuUTRAN" },
+ { 2, "gERAN" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_gprscdr_SystemType(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_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_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_NetworkInitiatedPDPContext(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 int
+dissect_gprscdr_GSNAddress(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_IPAddress(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_MSNetworkCapability(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 int
+dissect_gprscdr_RoutingAreaCode(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 int
+dissect_gprscdr_ChargingID(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_AccessPointNameNI(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_IA5String,
+ actx, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_PDPType(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 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 }
+};
+
+static int
+dissect_gprscdr_PDPAddress(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,
+ PDPAddress_choice, hf_index, ett_gprscdr_PDPAddress,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_QoSInformation(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 int
+dissect_gprscdr_DataVolumeGPRS(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 value_string gprscdr_ChangeCondition_vals[] = {
+ { 0, "qoSChange" },
+ { 1, "tariffTime" },
+ { 2, "recordClosure" },
+ { 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 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_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_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_) {
+ 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, 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 int
+dissect_gprscdr_SGSNChange(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_CauseForRecClosing_vals[] = {
+ { 0, "normalRelease" },
+ { 4, "abnormalRelease" },
+ { 5, "cAMELInitCallRelease" },
+ { 16, "volumeLimit" },
+ { 17, "timeLimit" },
+ { 18, "sGSNChange" },
+ { 19, "maxChangeCond" },
+ { 20, "managementIntervention" },
+ { 21, "intraSGSNIntersystemChange" },
+ { 22, "rATChange" },
+ { 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 int
+dissect_gprscdr_NodeID(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_IA5String,
+ actx, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+
+
+static const value_string gprscdr_APNSelectionMode_vals[] = {
+ { 0, "mSorNetworkProvidedSubscriptionVerified" },
+ { 1, "mSProvidedSubscriptionNotVerified" },
+ { 2, "networkProvidedSubscriptionNotVerified" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_gprscdr_APNSelectionMode(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_AccessPointNameOI(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_IA5String,
+ actx, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_ChargingCharacteristics(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 int
+dissect_gprscdr_RATType(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_SCFAddress(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 int
+dissect_gprscdr_CAMELAccessPointNameNI(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_AccessPointNameNI(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_CAMELAccessPointNameOI(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_AccessPointNameOI(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_NumberOfDPEncountered(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_FreeFormatData(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 int
+dissect_gprscdr_FFDAppendIndicator(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 ber_sequence_t CAMELInformationPDP_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 },
+ { &hf_gprscdr_defaultTransactionHandling, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultGPRS_Handling },
+ { &hf_gprscdr_cAMELAccessPointNameNI, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELAccessPointNameNI },
+ { &hf_gprscdr_cAMELAccessPointNameOI, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELAccessPointNameOI },
+ { &hf_gprscdr_numberOfDPEncountered, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NumberOfDPEncountered },
+ { &hf_gprscdr_levelOfCAMELService, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LevelOfCAMELService },
+ { &hf_gprscdr_freeFormatData, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FreeFormatData },
+ { &hf_gprscdr_fFDAppendIndicator, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FFDAppendIndicator },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_CAMELInformationPDP(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,
+ CAMELInformationPDP_set, hf_index, ett_gprscdr_CAMELInformationPDP);
+
+ return offset;
+}
+
+
+static const value_string gprscdr_ChChSelectionMode_vals[] = {
+ { 0, "sGSNSupplied" },
+ { 1, "subscriptionSpecific" },
+ { 2, "aPNSpecific" },
+ { 3, "homeDefault" },
+ { 4, "roamingDefault" },
+ { 5, "visitingDefault" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_gprscdr_ChChSelectionMode(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_DynamicAddressFlag(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 ber_sequence_t SGSNPDPRecord_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 },
+ { &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, 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, 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 SEQUENCE_OF_GSNAddress_sequence_of[1] = {
+ { &hf_gprscdr_sgsnAddress_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
+};
+
+static int
+dissect_gprscdr_SEQUENCE_OF_GSNAddress(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_GSNAddress_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_GSNAddress);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_NULL(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_null(implicit_tag, actx, tree, tvb, offset, hf_index);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_OCTET_STRING(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 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_) {
+ offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t PSFurnishChargingInformation_sequence[] = {
+ { &hf_gprscdr_pSFreeFormatData, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_FreeFormatData },
+ { &hf_gprscdr_pSFFDAppendIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FFDAppendIndicator },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_PSFurnishChargingInformation(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,
+ PSFurnishChargingInformation_sequence, hf_index, ett_gprscdr_PSFurnishChargingInformation);
+
+ return offset;
+}
+
+
+static const ber_sequence_t GGSNPDPRecord_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 },
+ { &hf_gprscdr_ggsnAddress , 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_sgsnAddress , 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_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_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_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_sgsnPLMNIdentifier, 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 },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_GGSNPDPRecord(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,
+ GGSNPDPRecord_set, hf_index, ett_gprscdr_GGSNPDPRecord);
+
+ return offset;
+}
+
+
+static const ber_sequence_t ChangeLocation_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_ChangeLocation(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,
+ ChangeLocation_sequence, hf_index, ett_gprscdr_ChangeLocation);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SEQUENCE_OF_ChangeLocation_sequence_of[1] = {
+ { &hf_gprscdr_changeLocation_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeLocation },
+};
+
+static int
+dissect_gprscdr_SEQUENCE_OF_ChangeLocation(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_ChangeLocation_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeLocation);
+
+ 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 },
+ { &hf_gprscdr_defaultTransactionHandling, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultGPRS_Handling },
+ { &hf_gprscdr_numberOfDPEncountered, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NumberOfDPEncountered },
+ { &hf_gprscdr_levelOfCAMELService, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LevelOfCAMELService },
+ { &hf_gprscdr_freeFormatData, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FreeFormatData },
+ { &hf_gprscdr_fFDAppendIndicator, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FFDAppendIndicator },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_CAMELInformationMM(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,
+ CAMELInformationMM_set, hf_index, ett_gprscdr_CAMELInformationMM);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SGSNMMRecord_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 },
+ { &hf_gprscdr_sgsnAddress_01, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
+ { &hf_gprscdr_msNetworkCapability, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSNetworkCapability },
+ { &hf_gprscdr_routingArea , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
+ { &hf_gprscdr_locationAreaCode, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode },
+ { &hf_gprscdr_cellIdentifier, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId },
+ { &hf_gprscdr_changeLocation, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeLocation },
+ { &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_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 },
+ { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
+ { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
+ { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
+ { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 19, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
+ { &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 },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_SGSNMMRecord(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,
+ SGSNMMRecord_set, hf_index, ett_gprscdr_SGSNMMRecord);
+
+ return offset;
+}
+
+
+static const ber_sequence_t CAMELInformationSMS_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 },
+ { &hf_gprscdr_defaultSMSHandling, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultSMS_Handling },
+ { &hf_gprscdr_cAMELCallingPartyNumber, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallingNumber },
+ { &hf_gprscdr_cAMELDestinationSubscriberNumber, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SmsTpDestinationNumber },
+ { &hf_gprscdr_cAMELSMSCAddress, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
+ { &hf_gprscdr_freeFormatData, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FreeFormatData },
+ { &hf_gprscdr_smsReferenceNumber, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallReferenceNumber },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_CAMELInformationSMS(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,
+ CAMELInformationSMS_set, hf_index, ett_gprscdr_CAMELInformationSMS);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SGSNSMORecord_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 },
+ { &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 , 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 },
+ { &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_CategoryId(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_RatingGroupId(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_IA5String,
+ actx, tree, tvb, offset, hf_index,
+ NULL);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_ServiceChangeCause(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 int
+dissect_gprscdr_SGSNPLMNIdentifier(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 ChangeOfServiceCondition_sequence[] = {
+ { &hf_gprscdr_categoryId , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_CategoryId },
+ { &hf_gprscdr_ratingGroupId, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_RatingGroupId },
+ { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
+ { &hf_gprscdr_timeOfFirstUsage, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
+ { &hf_gprscdr_timeOfLastUsage, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
+ { &hf_gprscdr_timeUsage , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
+ { &hf_gprscdr_serviceChangeCause, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceChangeCause },
+ { &hf_gprscdr_qoSInformationNeg, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation },
+ { &hf_gprscdr_sgsn_Address, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
+ { &hf_gprscdr_sGSNPLMNIdentifier, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNPLMNIdentifier },
+ { &hf_gprscdr_datavolumeFBCUplink, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
+ { &hf_gprscdr_datavolumeFBCDownlink, BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
+ { &hf_gprscdr_timeOfReport, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
+ { &hf_gprscdr_rATType , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
+ { 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, 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 EGSNPDPRecord_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 },
+ { &hf_gprscdr_ggsnAddress , 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_sgsnAddress , 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_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_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_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_sgsnPLMNIdentifier, 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, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_EGSNPDPRecord(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,
+ EGSNPDPRecord_set, hf_index, ett_gprscdr_EGSNPDPRecord);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_RouteingAreaCode(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 SEQUENCE_OF_RouteingAreaCode_sequence_of[1] = {
+ { &hf_gprscdr_listofDownstreamNodes_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gprscdr_RouteingAreaCode },
+};
+
+static int
+dissect_gprscdr_SEQUENCE_OF_RouteingAreaCode(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_RouteingAreaCode_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_RouteingAreaCode);
+
+ return offset;
+}
+
+
+
+static int
+dissect_gprscdr_TMGI(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 int
+dissect_gprscdr_MBMSSessionIdentity(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 value_string gprscdr_MBMSServiceType_vals[] = {
+ { 0, "mULTICAST" },
+ { 1, "bROADCAST" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_gprscdr_MBMSServiceType(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 value_string gprscdr_MBMSUserServiceType_vals[] = {
+ { 0, "dOWNLOAD" },
+ { 1, "sTREAMING" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_gprscdr_MBMSUserServiceType(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 value_string gprscdr_MBMS2G3GIndicator_vals[] = {
+ { 0, "t2G" },
+ { 1, "t3G" },
+ { 2, "t2G-AND-3G" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_gprscdr_MBMS2G3GIndicator(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_MBMSServiceArea(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 int
+dissect_gprscdr_RequiredMBMSBearerCapabilities(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 value_string gprscdr_CNIPMulticastDistribution_vals[] = {
+ { 0, "nO-IP-MULTICAST" },
+ { 1, "iP-MULTICAST" },
+ { 0, NULL }
+};
+
+
+static int
+dissect_gprscdr_CNIPMulticastDistribution(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 MBMSInformation_set[] = {
+ { &hf_gprscdr_tMGI , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TMGI },
+ { &hf_gprscdr_mBMSSessionIdentity, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSSessionIdentity },
+ { &hf_gprscdr_mBMSServiceType, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSServiceType },
+ { &hf_gprscdr_mBMSUserServiceType, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSUserServiceType },
+ { &hf_gprscdr_mBMS2G3GIndicator, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMS2G3GIndicator },
+ { &hf_gprscdr_fileRepairSupported, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_BOOLEAN },
+ { &hf_gprscdr_rAI , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
+ { &hf_gprscdr_mBMSServiceArea, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSServiceArea },
+ { &hf_gprscdr_requiredMBMSBearerCaps, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RequiredMBMSBearerCapabilities },
+ { &hf_gprscdr_mBMSGWAddress, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
+ { &hf_gprscdr_cNIPMulticastDistribution, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNIPMulticastDistribution },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_MBMSInformation(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,
+ MBMSInformation_set, hf_index, ett_gprscdr_MBMSInformation);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SGSNMBMSRecord_set[] = {
+ { &hf_gprscdr_recordType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType },
+ { &hf_gprscdr_ggsnAddress , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
+ { &hf_gprscdr_chargingID , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
+ { &hf_gprscdr_listofDownstreamNodes, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_RouteingAreaCode },
+ { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
+ { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
+ { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition },
+ { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
+ { &hf_gprscdr_duration , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
+ { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
+ { &hf_gprscdr_diagnostics , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
+ { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
+ { &hf_gprscdr_nodeID , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
+ { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
+ { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
+ { &hf_gprscdr_sgsnPLMNIdentifier, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
+ { &hf_gprscdr_numberofReceivingUE, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
+ { &hf_gprscdr_mbmsInformation, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSInformation },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_SGSNMBMSRecord(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,
+ SGSNMBMSRecord_set, hf_index, ett_gprscdr_SGSNMBMSRecord);
+
+ return offset;
+}
+
+
+static const ber_sequence_t GGSNMBMSRecord_set[] = {
+ { &hf_gprscdr_recordType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType },
+ { &hf_gprscdr_ggsnAddress , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
+ { &hf_gprscdr_chargingID , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
+ { &hf_gprscdr_listofDownstreamNodes_01, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
+ { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
+ { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
+ { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition },
+ { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
+ { &hf_gprscdr_duration , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
+ { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
+ { &hf_gprscdr_diagnostics , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
+ { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
+ { &hf_gprscdr_nodeID , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
+ { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
+ { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
+ { &hf_gprscdr_mbmsInformation, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSInformation },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_GGSNMBMSRecord(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,
+ GGSNMBMSRecord_set, hf_index, ett_gprscdr_GGSNMBMSRecord);
+
+ return offset;
+}
+
+
+const value_string gprscdr_GPRSCallEventRecord_vals[] = {
+ { 20, "sgsnPDPRecord" },
+ { 21, "ggsnPDPRecord" },
+ { 22, "sgsnMMRecord" },
+ { 23, "sgsnSMORecord" },
+ { 24, "sgsnSMTRecord" },
+ { 28, "egsnPDPRecord" },
+ { 29, "sgsnMBMSRecord" },
+ { 30, "ggsnMBMSRecord" },
+ { 0, NULL }
+};
+
+static const ber_choice_t GPRSCallEventRecord_choice[] = {
+ { 20, &hf_gprscdr_sgsnPDPRecord, BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNPDPRecord },
+ { 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 },
+ { 28, &hf_gprscdr_egsnPDPRecord, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_gprscdr_EGSNPDPRecord },
+ { 29, &hf_gprscdr_sgsnMBMSRecord, BER_CLASS_CON, 29, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNMBMSRecord },
+ { 30, &hf_gprscdr_ggsnMBMSRecord, BER_CLASS_CON, 30, BER_FLAGS_IMPLTAG, dissect_gprscdr_GGSNMBMSRecord },
+ { 0, NULL, 0, 0, 0, NULL }
+};
+
+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_) {
+ offset = dissect_ber_choice(actx, tree, tvb, offset,
+ GPRSCallEventRecord_choice, hf_index, ett_gprscdr_GPRSCallEventRecord,
+ NULL);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SGSNMTLCSRecord_set[] = {
+ { &hf_gprscdr_recordType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType },
+ { &hf_gprscdr_recordingEntity, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordingEntity },
+ { &hf_gprscdr_lcsClientType, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSClientType },
+ { &hf_gprscdr_lcsClientIdentity, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSClientIdentity },
+ { &hf_gprscdr_servedIMSI , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
+ { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
+ { &hf_gprscdr_sgsnAddress_01, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
+ { &hf_gprscdr_locationType, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LocationType },
+ { &hf_gprscdr_lcsQos , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSQoSInfo },
+ { &hf_gprscdr_lcsPriority , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_Priority },
+ { &hf_gprscdr_mlcNumber , BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
+ { &hf_gprscdr_eventTimeStamp, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
+ { &hf_gprscdr_measurementDuration, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
+ { &hf_gprscdr_notificationToMSUser, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NotificationToMSUser },
+ { &hf_gprscdr_privacyOverride, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
+ { &hf_gprscdr_location , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaAndCell },
+ { &hf_gprscdr_routingArea , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
+ { &hf_gprscdr_locationEstimate, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation },
+ { &hf_gprscdr_positioningData, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PositioningData },
+ { &hf_gprscdr_lcsCause , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSCause },
+ { &hf_gprscdr_diagnostics , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
+ { &hf_gprscdr_nodeID , BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
+ { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
+ { &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_rATType , BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
+ { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
+ { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 27, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_SGSNMTLCSRecord(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,
+ SGSNMTLCSRecord_set, hf_index, ett_gprscdr_SGSNMTLCSRecord);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SGSNMOLCSRecord_set[] = {
+ { &hf_gprscdr_recordType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType },
+ { &hf_gprscdr_recordingEntity, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordingEntity },
+ { &hf_gprscdr_lcsClientType, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSClientType },
+ { &hf_gprscdr_lcsClientIdentity, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSClientIdentity },
+ { &hf_gprscdr_servedIMSI , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
+ { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
+ { &hf_gprscdr_sgsnAddress_01, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
+ { &hf_gprscdr_locationMethod, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gsm_ss_LocationMethod },
+ { &hf_gprscdr_lcsQos , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSQoSInfo },
+ { &hf_gprscdr_lcsPriority , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_Priority },
+ { &hf_gprscdr_mlcNumber , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
+ { &hf_gprscdr_eventTimeStamp, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
+ { &hf_gprscdr_measurementDuration, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
+ { &hf_gprscdr_location , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaAndCell },
+ { &hf_gprscdr_routingArea , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
+ { &hf_gprscdr_locationEstimate, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation },
+ { &hf_gprscdr_positioningData, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PositioningData },
+ { &hf_gprscdr_lcsCause , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSCause },
+ { &hf_gprscdr_diagnostics , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
+ { &hf_gprscdr_nodeID , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
+ { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
+ { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
+ { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
+ { &hf_gprscdr_rATType , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
+ { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
+ { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_SGSNMOLCSRecord(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,
+ SGSNMOLCSRecord_set, hf_index, ett_gprscdr_SGSNMOLCSRecord);
+
+ return offset;
+}
+
+
+static const ber_sequence_t SGSNNILCSRecord_set[] = {
+ { &hf_gprscdr_recordType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType },
+ { &hf_gprscdr_recordingEntity, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordingEntity },
+ { &hf_gprscdr_lcsClientType, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSClientType },
+ { &hf_gprscdr_lcsClientIdentity, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSClientIdentity },
+ { &hf_gprscdr_servedIMSI , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
+ { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
+ { &hf_gprscdr_sgsnAddress_01, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
+ { &hf_gprscdr_servedIMEI , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
+ { &hf_gprscdr_lcsQos , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSQoSInfo },
+ { &hf_gprscdr_lcsPriority , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_Priority },
+ { &hf_gprscdr_mlcNumber , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
+ { &hf_gprscdr_eventTimeStamp, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
+ { &hf_gprscdr_measurementDuration, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
+ { &hf_gprscdr_location , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaAndCell },
+ { &hf_gprscdr_routingArea , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
+ { &hf_gprscdr_locationEstimate, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation },
+ { &hf_gprscdr_positioningData, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PositioningData },
+ { &hf_gprscdr_lcsCause , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSCause },
+ { &hf_gprscdr_diagnostics , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
+ { &hf_gprscdr_nodeID , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
+ { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
+ { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
+ { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
+ { &hf_gprscdr_rATType , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
+ { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
+ { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
+ { NULL, 0, 0, 0, NULL }
+};
+
+static int
+dissect_gprscdr_SGSNNILCSRecord(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,
+ SGSNNILCSRecord_set, hf_index, ett_gprscdr_SGSNNILCSRecord);
+
+ return offset;
+}
+
+/*--- PDUs ---*/
+
+int dissect_gprscdr_GPRSCallEventRecord_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_GPRSCallEventRecord(FALSE, tvb, offset, &asn1_ctx, tree, hf_gprscdr_gprscdr_GPRSCallEventRecord_PDU);
+ return offset;
+}
+
+
+/*--- End of included file: packet-gprscdr-fn.c ---*/
+#line 53 "packet-gprscdr-template.c"
+
+
+
+/* Register all the bits needed with the filtering engine */
+void
+proto_register_gprscdr(void)
+{
+ /* List of fields */
+ static hf_register_info hf[] = {
+
+/*--- Included file: packet-gprscdr-hfarr.c ---*/
+#line 1 "packet-gprscdr-hfarr.c"
+ { &hf_gprscdr_gprscdr_GPRSCallEventRecord_PDU,
+ { "GPRSCallEventRecord", "gprscdr.GPRSCallEventRecord",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_GPRSCallEventRecord_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_gsm0408Cause,
+ { "gsm0408Cause", "gprscdr.gsm0408Cause",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER", HFILL }},
+ { &hf_gprscdr_gsm0902MapErrorValue,
+ { "gsm0902MapErrorValue", "gprscdr.gsm0902MapErrorValue",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER", HFILL }},
+ { &hf_gprscdr_itu_tQ767Cause,
+ { "itu-tQ767Cause", "gprscdr.itu_tQ767Cause",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER", HFILL }},
+ { &hf_gprscdr_networkSpecificCause,
+ { "networkSpecificCause", "gprscdr.networkSpecificCause",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ManagementExtension", HFILL }},
+ { &hf_gprscdr_manufacturerSpecificCause,
+ { "manufacturerSpecificCause", "gprscdr.manufacturerSpecificCause",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ManagementExtension", HFILL }},
+ { &hf_gprscdr_positionMethodFailureCause,
+ { "positionMethodFailureCause", "gprscdr.positionMethodFailureCause",
+ FT_UINT32, BASE_DEC, VALS(gsm_map_er_PositionMethodFailure_Diagnostic_vals), 0,
+ "PositionMethodFailure_Diagnostic", HFILL }},
+ { &hf_gprscdr_unauthorizedLCSClientCause,
+ { "unauthorizedLCSClientCause", "gprscdr.unauthorizedLCSClientCause",
+ FT_UINT32, BASE_DEC, VALS(gsm_map_er_UnauthorizedLCSClient_Diagnostic_vals), 0,
+ "UnauthorizedLCSClient_Diagnostic", HFILL }},
+ { &hf_gprscdr_iPBinaryAddress,
+ { "iPBinaryAddress", "gprscdr.iPBinaryAddress",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_IPBinaryAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_iPTextRepresentedAddress,
+ { "iPTextRepresentedAddress", "gprscdr.iPTextRepresentedAddress",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_IPTextRepresentedAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_iPBinV4Address,
+ { "iPBinV4Address", "gprscdr.iPBinV4Address",
+ FT_IPv4, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_4", HFILL }},
+ { &hf_gprscdr_iPBinV6Address,
+ { "iPBinV6Address", "gprscdr.iPBinV6Address",
+ FT_IPv6, BASE_NONE, NULL, 0,
+ "OCTET_STRING_SIZE_16", HFILL }},
+ { &hf_gprscdr_iPTextV4Address,
+ { "iPTextV4Address", "gprscdr.iPTextV4Address",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_7_15", HFILL }},
+ { &hf_gprscdr_iPTextV6Address,
+ { "iPTextV6Address", "gprscdr.iPTextV6Address",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "IA5String_SIZE_15_45", HFILL }},
+ { &hf_gprscdr_lcsClientExternalID,
+ { "lcsClientExternalID", "gprscdr.lcsClientExternalID",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_lcsClientDialedByMS,
+ { "lcsClientDialedByMS", "gprscdr.lcsClientDialedByMS",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "AddressString", HFILL }},
+ { &hf_gprscdr_lcsClientInternalID,
+ { "lcsClientInternalID", "gprscdr.lcsClientInternalID",
+ FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientInternalID_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_locationAreaCode,
+ { "locationAreaCode", "gprscdr.locationAreaCode",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_cellId,
+ { "cellId", "gprscdr.cellId",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_ManagementExtensions_item,
+ { "ManagementExtension", "gprscdr.ManagementExtension",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_identifier,
+ { "identifier", "gprscdr.identifier",
+ FT_OID, BASE_NONE, NULL, 0,
+ "OBJECT_IDENTIFIER", HFILL }},
+ { &hf_gprscdr_significance,
+ { "significance", "gprscdr.significance",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_gprscdr_information,
+ { "information", "gprscdr.information",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_sgsnPDPRecord,
+ { "sgsnPDPRecord", "gprscdr.sgsnPDPRecord",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_ggsnPDPRecord,
+ { "ggsnPDPRecord", "gprscdr.ggsnPDPRecord",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_sgsnMMRecord,
+ { "sgsnMMRecord", "gprscdr.sgsnMMRecord",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_sgsnSMORecord,
+ { "sgsnSMORecord", "gprscdr.sgsnSMORecord",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_sgsnSMTRecord,
+ { "sgsnSMTRecord", "gprscdr.sgsnSMTRecord",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_egsnPDPRecord,
+ { "egsnPDPRecord", "gprscdr.egsnPDPRecord",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_sgsnMBMSRecord,
+ { "sgsnMBMSRecord", "gprscdr.sgsnMBMSRecord",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_ggsnMBMSRecord,
+ { "ggsnMBMSRecord", "gprscdr.ggsnMBMSRecord",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_recordType,
+ { "recordType", "gprscdr.recordType",
+ FT_INT32, BASE_DEC, VALS(gprscdr_CallEventRecordType_vals), 0,
+ "CallEventRecordType", HFILL }},
+ { &hf_gprscdr_networkInitiation,
+ { "networkInitiation", "gprscdr.networkInitiation",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "NetworkInitiatedPDPContext", HFILL }},
+ { &hf_gprscdr_servedIMSI,
+ { "servedIMSI", "gprscdr.servedIMSI",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "IMSI", HFILL }},
+ { &hf_gprscdr_ggsnAddress,
+ { "ggsnAddress", "gprscdr.ggsnAddress",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
+ "GSNAddress", HFILL }},
+ { &hf_gprscdr_chargingID,
+ { "chargingID", "gprscdr.chargingID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_sgsnAddress,
+ { "sgsnAddress", "gprscdr.sgsnAddress",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_GSNAddress", HFILL }},
+ { &hf_gprscdr_sgsnAddress_item,
+ { "GSNAddress", "gprscdr.GSNAddress",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_accessPointNameNI,
+ { "accessPointNameNI", "gprscdr.accessPointNameNI",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_pdpType,
+ { "pdpType", "gprscdr.pdpType",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_servedPDPAddress,
+ { "servedPDPAddress", "gprscdr.servedPDPAddress",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_PDPAddress_vals), 0,
+ "PDPAddress", HFILL }},
+ { &hf_gprscdr_dynamicAddressFlag,
+ { "dynamicAddressFlag", "gprscdr.dynamicAddressFlag",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_listOfTrafficVolumes,
+ { "listOfTrafficVolumes", "gprscdr.listOfTrafficVolumes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_ChangeOfCharCondition", HFILL }},
+ { &hf_gprscdr_listOfTrafficVolumes_item,
+ { "ChangeOfCharCondition", "gprscdr.ChangeOfCharCondition",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_recordOpeningTime,
+ { "recordOpeningTime", "gprscdr.recordOpeningTime",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "TimeStamp", HFILL }},
+ { &hf_gprscdr_duration,
+ { "duration", "gprscdr.duration",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "CallDuration", HFILL }},
+ { &hf_gprscdr_causeForRecClosing,
+ { "causeForRecClosing", "gprscdr.causeForRecClosing",
+ FT_INT32, BASE_DEC, VALS(gprscdr_CauseForRecClosing_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_diagnostics,
+ { "diagnostics", "gprscdr.diagnostics",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_Diagnostics_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_recordSequenceNumber,
+ { "recordSequenceNumber", "gprscdr.recordSequenceNumber",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER", HFILL }},
+ { &hf_gprscdr_nodeID,
+ { "nodeID", "gprscdr.nodeID",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_recordExtensions,
+ { "recordExtensions", "gprscdr.recordExtensions",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ManagementExtensions", HFILL }},
+ { &hf_gprscdr_localSequenceNumber,
+ { "localSequenceNumber", "gprscdr.localSequenceNumber",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_apnSelectionMode,
+ { "apnSelectionMode", "gprscdr.apnSelectionMode",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_APNSelectionMode_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_servedMSISDN,
+ { "servedMSISDN", "gprscdr.servedMSISDN",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "MSISDN", HFILL }},
+ { &hf_gprscdr_chargingCharacteristics,
+ { "chargingCharacteristics", "gprscdr.chargingCharacteristics",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_chChSelectionMode,
+ { "chChSelectionMode", "gprscdr.chChSelectionMode",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_ChChSelectionMode_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_iMSsignalingContext,
+ { "iMSsignalingContext", "gprscdr.iMSsignalingContext",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_externalChargingID,
+ { "externalChargingID", "gprscdr.externalChargingID",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING", HFILL }},
+ { &hf_gprscdr_sgsnPLMNIdentifier,
+ { "sgsnPLMNIdentifier", "gprscdr.sgsnPLMNIdentifier",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "PLMN_Id", HFILL }},
+ { &hf_gprscdr_pSFurnishChargingInformation,
+ { "pSFurnishChargingInformation", "gprscdr.pSFurnishChargingInformation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_servedIMEISV,
+ { "servedIMEISV", "gprscdr.servedIMEISV",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "IMEI", HFILL }},
+ { &hf_gprscdr_rATType,
+ { "rATType", "gprscdr.rATType",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_mSTimeZone,
+ { "mSTimeZone", "gprscdr.mSTimeZone",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_userLocationInformation,
+ { "userLocationInformation", "gprscdr.userLocationInformation",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING", HFILL }},
+ { &hf_gprscdr_cAMELChargingInformation,
+ { "cAMELChargingInformation", "gprscdr.cAMELChargingInformation",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "OCTET_STRING", HFILL }},
+ { &hf_gprscdr_listOfServiceData,
+ { "listOfServiceData", "gprscdr.listOfServiceData",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_ChangeOfServiceCondition", HFILL }},
+ { &hf_gprscdr_listOfServiceData_item,
+ { "ChangeOfServiceCondition", "gprscdr.ChangeOfServiceCondition",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_servedIMEI,
+ { "servedIMEI", "gprscdr.servedIMEI",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "IMEI", HFILL }},
+ { &hf_gprscdr_sgsnAddress_01,
+ { "sgsnAddress", "gprscdr.sgsnAddress",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
+ "GSNAddress", HFILL }},
+ { &hf_gprscdr_msNetworkCapability,
+ { "msNetworkCapability", "gprscdr.msNetworkCapability",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_routingArea,
+ { "routingArea", "gprscdr.routingArea",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "RoutingAreaCode", HFILL }},
+ { &hf_gprscdr_cellIdentifier,
+ { "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_accessPointNameOI,
+ { "accessPointNameOI", "gprscdr.accessPointNameOI",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_cAMELInformationPDP,
+ { "cAMELInformationPDP", "gprscdr.cAMELInformationPDP",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_rNCUnsentDownlinkVolume,
+ { "rNCUnsentDownlinkVolume", "gprscdr.rNCUnsentDownlinkVolume",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "DataVolumeGPRS", HFILL }},
+ { &hf_gprscdr_serviceCentre,
+ { "serviceCentre", "gprscdr.serviceCentre",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "AddressString", HFILL }},
+ { &hf_gprscdr_recordingEntity,
+ { "recordingEntity", "gprscdr.recordingEntity",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_locationArea,
+ { "locationArea", "gprscdr.locationArea",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "LocationAreaCode", HFILL }},
+ { &hf_gprscdr_messageReference,
+ { "messageReference", "gprscdr.messageReference",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_eventTimeStamp,
+ { "eventTimeStamp", "gprscdr.eventTimeStamp",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "TimeStamp", HFILL }},
+ { &hf_gprscdr_smsResult,
+ { "smsResult", "gprscdr.smsResult",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_Diagnostics_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_destinationNumber,
+ { "destinationNumber", "gprscdr.destinationNumber",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "SmsTpDestinationNumber", HFILL }},
+ { &hf_gprscdr_cAMELInformationSMS,
+ { "cAMELInformationSMS", "gprscdr.cAMELInformationSMS",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_lcsClientType,
+ { "lcsClientType", "gprscdr.lcsClientType",
+ FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_LCSClientType_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_lcsClientIdentity,
+ { "lcsClientIdentity", "gprscdr.lcsClientIdentity",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_locationType,
+ { "locationType", "gprscdr.locationType",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_lcsQos,
+ { "lcsQos", "gprscdr.lcsQos",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "LCSQoSInfo", HFILL }},
+ { &hf_gprscdr_lcsPriority,
+ { "lcsPriority", "gprscdr.lcsPriority",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "LCS_Priority", HFILL }},
+ { &hf_gprscdr_mlcNumber,
+ { "mlcNumber", "gprscdr.mlcNumber",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "ISDN_AddressString", HFILL }},
+ { &hf_gprscdr_measurementDuration,
+ { "measurementDuration", "gprscdr.measurementDuration",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "CallDuration", HFILL }},
+ { &hf_gprscdr_notificationToMSUser,
+ { "notificationToMSUser", "gprscdr.notificationToMSUser",
+ FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NotificationToMSUser_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_privacyOverride,
+ { "privacyOverride", "gprscdr.privacyOverride",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_location,
+ { "location", "gprscdr.location",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "LocationAreaAndCell", HFILL }},
+ { &hf_gprscdr_locationEstimate,
+ { "locationEstimate", "gprscdr.locationEstimate",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "Ext_GeographicalInformation", HFILL }},
+ { &hf_gprscdr_positioningData,
+ { "positioningData", "gprscdr.positioningData",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_lcsCause,
+ { "lcsCause", "gprscdr.lcsCause",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_locationMethod,
+ { "locationMethod", "gprscdr.locationMethod",
+ FT_UINT32, BASE_DEC, VALS(gsm_ss_LocationMethod_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_listofDownstreamNodes,
+ { "listofDownstreamNodes", "gprscdr.listofDownstreamNodes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_RouteingAreaCode", HFILL }},
+ { &hf_gprscdr_listofDownstreamNodes_item,
+ { "RouteingAreaCode", "gprscdr.RouteingAreaCode",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_numberofReceivingUE,
+ { "numberofReceivingUE", "gprscdr.numberofReceivingUE",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "INTEGER", HFILL }},
+ { &hf_gprscdr_mbmsInformation,
+ { "mbmsInformation", "gprscdr.mbmsInformation",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_listofDownstreamNodes_01,
+ { "listofDownstreamNodes", "gprscdr.listofDownstreamNodes",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SEQUENCE_OF_GSNAddress", HFILL }},
+ { &hf_gprscdr_listofDownstreamNodes_item_01,
+ { "GSNAddress", "gprscdr.GSNAddress",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 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,
+ "QoSInformation", HFILL }},
+ { &hf_gprscdr_qosNegotiated,
+ { "qosNegotiated", "gprscdr.qosNegotiated",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "QoSInformation", HFILL }},
+ { &hf_gprscdr_dataVolumeGPRSUplink,
+ { "dataVolumeGPRSUplink", "gprscdr.dataVolumeGPRSUplink",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "DataVolumeGPRS", HFILL }},
+ { &hf_gprscdr_dataVolumeGPRSDownlink,
+ { "dataVolumeGPRSDownlink", "gprscdr.dataVolumeGPRSDownlink",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "DataVolumeGPRS", HFILL }},
+ { &hf_gprscdr_changeCondition,
+ { "changeCondition", "gprscdr.changeCondition",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_ChangeCondition_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_changeTime,
+ { "changeTime", "gprscdr.changeTime",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "TimeStamp", HFILL }},
+ { &hf_gprscdr_categoryId,
+ { "categoryId", "gprscdr.categoryId",
+ FT_INT32, BASE_DEC, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_ratingGroupId,
+ { "ratingGroupId", "gprscdr.ratingGroupId",
+ FT_STRING, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_timeOfFirstUsage,
+ { "timeOfFirstUsage", "gprscdr.timeOfFirstUsage",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "TimeStamp", HFILL }},
+ { &hf_gprscdr_timeOfLastUsage,
+ { "timeOfLastUsage", "gprscdr.timeOfLastUsage",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "TimeStamp", HFILL }},
+ { &hf_gprscdr_timeUsage,
+ { "timeUsage", "gprscdr.timeUsage",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "CallDuration", HFILL }},
+ { &hf_gprscdr_serviceChangeCause,
+ { "serviceChangeCause", "gprscdr.serviceChangeCause",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_qoSInformationNeg,
+ { "qoSInformationNeg", "gprscdr.qoSInformationNeg",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "QoSInformation", HFILL }},
+ { &hf_gprscdr_sgsn_Address,
+ { "sgsn-Address", "gprscdr.sgsn_Address",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
+ "GSNAddress", HFILL }},
+ { &hf_gprscdr_sGSNPLMNIdentifier,
+ { "sGSNPLMNIdentifier", "gprscdr.sGSNPLMNIdentifier",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_datavolumeFBCUplink,
+ { "datavolumeFBCUplink", "gprscdr.datavolumeFBCUplink",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "DataVolumeGPRS", HFILL }},
+ { &hf_gprscdr_datavolumeFBCDownlink,
+ { "datavolumeFBCDownlink", "gprscdr.datavolumeFBCDownlink",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "DataVolumeGPRS", HFILL }},
+ { &hf_gprscdr_timeOfReport,
+ { "timeOfReport", "gprscdr.timeOfReport",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "TimeStamp", HFILL }},
+ { &hf_gprscdr_routingAreaCode,
+ { "routingAreaCode", "gprscdr.routingAreaCode",
+ FT_BYTES, 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_eTSIAddress,
+ { "eTSIAddress", "gprscdr.eTSIAddress",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_pSFreeFormatData,
+ { "pSFreeFormatData", "gprscdr.pSFreeFormatData",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "FreeFormatData", HFILL }},
+ { &hf_gprscdr_pSFFDAppendIndicator,
+ { "pSFFDAppendIndicator", "gprscdr.pSFFDAppendIndicator",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "FFDAppendIndicator", HFILL }},
+ { &hf_gprscdr_tMGI,
+ { "tMGI", "gprscdr.tMGI",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_mBMSSessionIdentity,
+ { "mBMSSessionIdentity", "gprscdr.mBMSSessionIdentity",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_mBMSServiceType,
+ { "mBMSServiceType", "gprscdr.mBMSServiceType",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_MBMSServiceType_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_mBMSUserServiceType,
+ { "mBMSUserServiceType", "gprscdr.mBMSUserServiceType",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_MBMSUserServiceType_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_mBMS2G3GIndicator,
+ { "mBMS2G3GIndicator", "gprscdr.mBMS2G3GIndicator",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_MBMS2G3GIndicator_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_fileRepairSupported,
+ { "fileRepairSupported", "gprscdr.fileRepairSupported",
+ FT_BOOLEAN, BASE_NONE, NULL, 0,
+ "BOOLEAN", HFILL }},
+ { &hf_gprscdr_rAI,
+ { "rAI", "gprscdr.rAI",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "RoutingAreaCode", HFILL }},
+ { &hf_gprscdr_mBMSServiceArea,
+ { "mBMSServiceArea", "gprscdr.mBMSServiceArea",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_requiredMBMSBearerCaps,
+ { "requiredMBMSBearerCaps", "gprscdr.requiredMBMSBearerCaps",
+ FT_BYTES, BASE_NONE, NULL, 0,
+ "RequiredMBMSBearerCapabilities", HFILL }},
+ { &hf_gprscdr_mBMSGWAddress,
+ { "mBMSGWAddress", "gprscdr.mBMSGWAddress",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
+ "GSNAddress", HFILL }},
+ { &hf_gprscdr_cNIPMulticastDistribution,
+ { "cNIPMulticastDistribution", "gprscdr.cNIPMulticastDistribution",
+ FT_UINT32, BASE_DEC, VALS(gprscdr_CNIPMulticastDistribution_vals), 0,
+ NULL, HFILL }},
+ { &hf_gprscdr_LevelOfCAMELService_basic,
+ { "basic", "gprscdr.basic",
+ FT_BOOLEAN, 8, NULL, 0x80,
+ NULL, HFILL }},
+ { &hf_gprscdr_LevelOfCAMELService_callDurationSupervision,
+ { "callDurationSupervision", "gprscdr.callDurationSupervision",
+ FT_BOOLEAN, 8, NULL, 0x40,
+ NULL, HFILL }},
+ { &hf_gprscdr_LevelOfCAMELService_onlineCharging,
+ { "onlineCharging", "gprscdr.onlineCharging",
+ FT_BOOLEAN, 8, NULL, 0x20,
+ NULL, HFILL }},
+
+/*--- End of included file: packet-gprscdr-hfarr.c ---*/
+#line 63 "packet-gprscdr-template.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+ &ett_gprscdr,
+
+/*--- Included file: packet-gprscdr-ettarr.c ---*/
+#line 1 "packet-gprscdr-ettarr.c"
+ &ett_gprscdr_Diagnostics,
+ &ett_gprscdr_IPAddress,
+ &ett_gprscdr_IPBinaryAddress,
+ &ett_gprscdr_IPTextRepresentedAddress,
+ &ett_gprscdr_LCSClientIdentity,
+ &ett_gprscdr_LevelOfCAMELService,
+ &ett_gprscdr_LocationAreaAndCell,
+ &ett_gprscdr_ManagementExtensions,
+ &ett_gprscdr_ManagementExtension,
+ &ett_gprscdr_GPRSCallEventRecord,
+ &ett_gprscdr_GGSNPDPRecord,
+ &ett_gprscdr_SEQUENCE_OF_GSNAddress,
+ &ett_gprscdr_SEQUENCE_OF_ChangeOfCharCondition,
+ &ett_gprscdr_EGSNPDPRecord,
+ &ett_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition,
+ &ett_gprscdr_SGSNMMRecord,
+ &ett_gprscdr_SEQUENCE_OF_ChangeLocation,
+ &ett_gprscdr_SGSNPDPRecord,
+ &ett_gprscdr_SGSNSMORecord,
+ &ett_gprscdr_SGSNSMTRecord,
+ &ett_gprscdr_SGSNMTLCSRecord,
+ &ett_gprscdr_SGSNMOLCSRecord,
+ &ett_gprscdr_SGSNNILCSRecord,
+ &ett_gprscdr_SGSNMBMSRecord,
+ &ett_gprscdr_SEQUENCE_OF_RouteingAreaCode,
+ &ett_gprscdr_GGSNMBMSRecord,
+ &ett_gprscdr_CAMELInformationMM,
+ &ett_gprscdr_CAMELInformationPDP,
+ &ett_gprscdr_CAMELInformationSMS,
+ &ett_gprscdr_ChangeOfCharCondition,
+ &ett_gprscdr_ChangeOfServiceCondition,
+ &ett_gprscdr_ChangeLocation,
+ &ett_gprscdr_PDPAddress,
+ &ett_gprscdr_PSFurnishChargingInformation,
+ &ett_gprscdr_MBMSInformation,
+
+/*--- End of included file: packet-gprscdr-ettarr.c ---*/
+#line 69 "packet-gprscdr-template.c"
+ };
+
+ proto_gprscdr = proto_register_protocol(PNAME, PSNAME, PFNAME);
+
+ proto_register_field_array(proto_gprscdr, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+}
+
+/* The registration hand-off routine */
+
diff --git a/epan/dissectors/packet-gprscdr.h b/epan/dissectors/packet-gprscdr.h
new file mode 100644
index 0000000000..369c15ad11
--- /dev/null
+++ b/epan/dissectors/packet-gprscdr.h
@@ -0,0 +1,50 @@
+/* Do not modify this file. */
+/* It is created automatically by the ASN.1 to Wireshark dissector compiler */
+/* packet-gprscdr.h */
+/* ../../tools/asn2wrs.py -b -e -k -p gprscdr -c ./gprscdr.cnf -s ./packet-gprscdr-template -D . 3GPPGenericChargingDataTypes.asn GPRSChargingDataTypes.asn */
+
+/* Input file: packet-gprscdr-template.h */
+
+#line 1 "packet-gprscdr-template.h"
+/* packet-gprscdr.h
+ * Routines for gprscdr packet dissection
+ * Copyright 2011, Anders Broman <anders.broman@ericsson.com>
+ *
+ * $Id$
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef PACKET_GPRSCDR_H
+#define PACKET_GPRSCDR_H
+
+
+
+/*--- Included file: packet-gprscdr-exp.h ---*/
+#line 1 "packet-gprscdr-exp.h"
+extern const value_string gprscdr_GPRSCallEventRecord_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_GPRSCallEventRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_);
+
+/*--- End of included file: packet-gprscdr-exp.h ---*/
+#line 31 "packet-gprscdr-template.h"
+
+#endif /* PACKET_GPRSCDR_H */
+
+