1 /* Do not modify this file. Changes will be overwritten.                      */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler       */
3 /* packet-gprscdr.c                                                           */
4 /* asn2wrs.py -b -p gprscdr -c ./gprscdr.cnf -s ./packet-gprscdr-template -D . -O ../.. GenericChargingDataTypes.asn GPRSChargingDataTypesV641.asn GPRSChargingDataTypes.asn */
5 
6 /* Input file: packet-gprscdr-template.c */
7 
8 #line 1 "./asn1/gprscdr/packet-gprscdr-template.c"
9 /* packet-gprscdr-template.c
10  * Copyright 2011 , Anders Broman <anders.broman [AT] ericsson.com>
11  *
12  * Wireshark - Network traffic analyzer
13  * By Gerald Combs <gerald@wireshark.org>
14  * Copyright 1998 Gerald Combs
15  *
16  * SPDX-License-Identifier: GPL-2.0-or-later
17  * References: 3GPP TS 32.298 V16.7.0
18  */
19 
20 #include "config.h"
21 
22 #include <epan/packet.h>
23 #include <epan/expert.h>
24 #include <epan/asn1.h>
25 
26 #include "packet-ber.h"
27 #include "packet-gsm_map.h"
28 #include "packet-gsm_a_common.h"
29 #include "packet-e212.h"
30 #include "packet-gprscdr.h"
31 #include "packet-gtp.h"
32 #include "packet-gtpv2.h"
33 
34 #define PNAME  "GPRS CDR"
35 #define PSNAME "GPRSCDR"
36 #define PFNAME "gprscdr"
37 
38 void proto_register_gprscdr(void);
39 
40 /* Define the GPRS CDR proto */
41 static int proto_gprscdr = -1;
42 
43 
44 /*--- Included file: packet-gprscdr-hf.c ---*/
45 #line 1 "./asn1/gprscdr/packet-gprscdr-hf.c"
46 static int hf_gprscdr_gprscdr_GPRSCallEventRecord_PDU = -1;  /* GPRSCallEventRecord */
47 static int hf_gprscdr_gprscdr_GPRSRecord_PDU = -1;  /* GPRSRecord */
48 static int hf_gprscdr_gsm0408Cause = -1;          /* INTEGER */
49 static int hf_gprscdr_gsm0902MapErrorValue = -1;  /* INTEGER */
50 static int hf_gprscdr_itu_tQ767Cause = -1;        /* INTEGER */
51 static int hf_gprscdr_networkSpecificCause = -1;  /* ManagementExtension */
52 static int hf_gprscdr_manufacturerSpecificCause = -1;  /* ManagementExtension */
53 static int hf_gprscdr_positionMethodFailureCause = -1;  /* PositionMethodFailure_Diagnostic */
54 static int hf_gprscdr_unauthorizedLCSClientCause = -1;  /* UnauthorizedLCSClient_Diagnostic */
55 static int hf_gprscdr_diameterResultCodeAndExperimentalResult = -1;  /* INTEGER */
56 static int hf_gprscdr_plmnId = -1;                /* PLMN_Id */
57 static int hf_gprscdr_eutraCellId = -1;           /* EutraCellId */
58 static int hf_gprscdr_nid = -1;                   /* Nid */
59 static int hf_gprscdr_rANNASCause = -1;           /* SEQUENCE_OF_RANNASCause */
60 static int hf_gprscdr_rANNASCause_item = -1;      /* RANNASCause */
61 static int hf_gprscdr_sIP_URI = -1;               /* GraphicString */
62 static int hf_gprscdr_tEL_URI = -1;               /* GraphicString */
63 static int hf_gprscdr_uRN = -1;                   /* GraphicString */
64 static int hf_gprscdr_iSDN_E164 = -1;             /* GraphicString */
65 static int hf_gprscdr_externalId = -1;            /* UTF8String */
66 static int hf_gprscdr_iPBinaryAddress = -1;       /* IPBinaryAddress */
67 static int hf_gprscdr_iPTextRepresentedAddress = -1;  /* IPTextRepresentedAddress */
68 static int hf_gprscdr_iPBinV4Address = -1;        /* IPBinV4Address */
69 static int hf_gprscdr_iPBinV6Address_choice = -1;  /* IPBinV6AddressWithOrWithoutPrefixLength */
70 static int hf_gprscdr_iPBinV6Address = -1;        /* IPBinV6Address */
71 static int hf_gprscdr_iPBinV6AddressWithPrefix = -1;  /* IPBinV6AddressWithPrefixLength */
72 static int hf_gprscdr_pDPAddressPrefixLength = -1;  /* PDPAddressPrefixLength */
73 static int hf_gprscdr_iPTextV4Address = -1;       /* IA5String_SIZE_7_15 */
74 static int hf_gprscdr_iPTextV6Address = -1;       /* IA5String_SIZE_15_45 */
75 static int hf_gprscdr_lcsClientExternalID = -1;   /* LCSClientExternalID */
76 static int hf_gprscdr_lcsClientDialedByMS = -1;   /* AddressString */
77 static int hf_gprscdr_lcsClientInternalID = -1;   /* LCSClientInternalID */
78 static int hf_gprscdr_locationAreaCode = -1;      /* LocationAreaCode */
79 static int hf_gprscdr_cellId = -1;                /* CellId */
80 static int hf_gprscdr_mCC_MNC = -1;               /* MCC_MNC */
81 static int hf_gprscdr_ManagementExtensions_item = -1;  /* ManagementExtension */
82 static int hf_gprscdr_tMGI = -1;                  /* TMGI */
83 static int hf_gprscdr_mBMSSessionIdentity = -1;   /* MBMSSessionIdentity */
84 static int hf_gprscdr_mBMSServiceType = -1;       /* MBMSServiceType */
85 static int hf_gprscdr_mBMSUserServiceType = -1;   /* MBMSUserServiceType */
86 static int hf_gprscdr_mBMS2G3GIndicator = -1;     /* MBMS2G3GIndicator */
87 static int hf_gprscdr_fileRepairSupported = -1;   /* BOOLEAN */
88 static int hf_gprscdr_rAI = -1;                   /* RoutingAreaCode */
89 static int hf_gprscdr_mBMSServiceArea = -1;       /* MBMSServiceArea */
90 static int hf_gprscdr_requiredMBMSBearerCaps = -1;  /* RequiredMBMSBearerCapabilities */
91 static int hf_gprscdr_mBMSGWAddress = -1;         /* GSNAddress */
92 static int hf_gprscdr_cNIPMulticastDistribution = -1;  /* CNIPMulticastDistribution */
93 static int hf_gprscdr_mBMSDataTransferStart = -1;  /* MBMSTime */
94 static int hf_gprscdr_mBMSDataTransferStop = -1;  /* MBMSTime */
95 static int hf_gprscdr_nrCellId = -1;              /* NrCellId */
96 static int hf_gprscdr_iPAddress = -1;             /* IPAddress */
97 static int hf_gprscdr_nRcgi = -1;                 /* Ncgi */
98 static int hf_gprscdr_ecgi = -1;                  /* Ecgi */
99 static int hf_gprscdr_sCSAddress = -1;            /* IPAddress */
100 static int hf_gprscdr_sCSRealm = -1;              /* DiameterIdentity */
101 static int hf_gprscdr_serviceSpecificData = -1;   /* GraphicString */
102 static int hf_gprscdr_serviceSpecificType = -1;   /* INTEGER */
103 static int hf_gprscdr_subscriptionIDType = -1;    /* SubscriptionIDType */
104 static int hf_gprscdr_subscriptionIDData = -1;    /* UTF8String */
105 static int hf_gprscdr_identifier = -1;            /* T_identifier */
106 static int hf_gprscdr_significance = -1;          /* BOOLEAN */
107 static int hf_gprscdr_information = -1;           /* T_information */
108 static int hf_gprscdr_sgsnPDPRecord = -1;         /* SGSNPDPRecordV651 */
109 static int hf_gprscdr_ggsnPDPRecord = -1;         /* GGSNPDPRecord */
110 static int hf_gprscdr_sgsnMMRecord = -1;          /* SGSNMMRecord */
111 static int hf_gprscdr_sgsnSMORecord = -1;         /* SGSNSMORecordV651 */
112 static int hf_gprscdr_sgsnSMTRecord = -1;         /* SGSNSMTRecordV651 */
113 static int hf_gprscdr_egsnPDPRecord = -1;         /* EGSNPDPRecord */
114 static int hf_gprscdr_recordType = -1;            /* CallEventRecordType */
115 static int hf_gprscdr_networkInitiation = -1;     /* NetworkInitiatedPDPContext */
116 static int hf_gprscdr_servedIMSI = -1;            /* IMSI */
117 static int hf_gprscdr_ggsnAddress = -1;           /* GSNAddress */
118 static int hf_gprscdr_chargingID = -1;            /* ChargingID */
119 static int hf_gprscdr_sgsnAddress = -1;           /* SEQUENCE_OF_GSNAddress */
120 static int hf_gprscdr_sgsnAddress_item = -1;      /* GSNAddress */
121 static int hf_gprscdr_accessPointNameNI = -1;     /* AccessPointNameNI */
122 static int hf_gprscdr_pdpType = -1;               /* PDPType */
123 static int hf_gprscdr_servedPDPAddress = -1;      /* PDPAddress */
124 static int hf_gprscdr_dynamicAddressFlag = -1;    /* DynamicAddressFlag */
125 static int hf_gprscdr_listOfTrafficVolumes = -1;  /* SEQUENCE_OF_ChangeOfCharConditionV651 */
126 static int hf_gprscdr_listOfTrafficVolumes_item = -1;  /* ChangeOfCharConditionV651 */
127 static int hf_gprscdr_recordOpeningTime = -1;     /* TimeStamp */
128 static int hf_gprscdr_duration = -1;              /* CallDuration */
129 static int hf_gprscdr_causeForRecClosing = -1;    /* CauseForRecClosingV651 */
130 static int hf_gprscdr_diagnostics = -1;           /* Diagnostics */
131 static int hf_gprscdr_recordSequenceNumber = -1;  /* INTEGER */
132 static int hf_gprscdr_nodeID = -1;                /* NodeID */
133 static int hf_gprscdr_recordExtensions = -1;      /* ManagementExtensions */
134 static int hf_gprscdr_localSequenceNumber = -1;   /* LocalSequenceNumber */
135 static int hf_gprscdr_apnSelectionMode = -1;      /* APNSelectionMode */
136 static int hf_gprscdr_servedMSISDN = -1;          /* MSISDN */
137 static int hf_gprscdr_chargingCharacteristics = -1;  /* ChargingCharacteristics */
138 static int hf_gprscdr_chChSelectionMode = -1;     /* ChChSelectionMode */
139 static int hf_gprscdr_iMSsignalingContext = -1;   /* NULL */
140 static int hf_gprscdr_externalChargingID = -1;    /* OCTET_STRING */
141 static int hf_gprscdr_sgsnPLMNIdentifier = -1;    /* PLMN_Id */
142 static int hf_gprscdr_servedIMEISV = -1;          /* IMEI */
143 static int hf_gprscdr_rATType = -1;               /* RATType */
144 static int hf_gprscdr_mSTimeZone = -1;            /* MSTimeZone */
145 static int hf_gprscdr_userLocationInformation = -1;  /* T_userLocationInformation */
146 static int hf_gprscdr_cAMELChargingInformation = -1;  /* OCTET_STRING */
147 static int hf_gprscdr_recordType_01 = -1;         /* RecordType */
148 static int hf_gprscdr_causeForRecClosing_01 = -1;  /* CauseForRecClosing */
149 static int hf_gprscdr_userLocationInformation_01 = -1;  /* T_userLocationInformation_01 */
150 static int hf_gprscdr_pSFurnishChargingInformation = -1;  /* PSFurnishChargingInformation */
151 static int hf_gprscdr_userLocationInformation_02 = -1;  /* T_userLocationInformation_02 */
152 static int hf_gprscdr_listOfServiceData = -1;     /* SEQUENCE_OF_ChangeOfServiceConditionV651 */
153 static int hf_gprscdr_listOfServiceData_item = -1;  /* ChangeOfServiceConditionV651 */
154 static int hf_gprscdr_userLocationInformation_03 = -1;  /* T_userLocationInformation_03 */
155 static int hf_gprscdr_listOfServiceData_01 = -1;  /* SEQUENCE_OF_ChangeOfServiceConditionV750 */
156 static int hf_gprscdr_listOfServiceData_item_01 = -1;  /* ChangeOfServiceConditionV750 */
157 static int hf_gprscdr_servedIMEI = -1;            /* IMEI */
158 static int hf_gprscdr_sgsnAddress_01 = -1;        /* GSNAddress */
159 static int hf_gprscdr_msNetworkCapability = -1;   /* MSNetworkCapability */
160 static int hf_gprscdr_routingArea = -1;           /* RoutingAreaCode */
161 static int hf_gprscdr_cellIdentifier = -1;        /* CellId */
162 static int hf_gprscdr_ggsnAddressUsed = -1;       /* GSNAddress */
163 static int hf_gprscdr_sgsnChange = -1;            /* SGSNChange */
164 static int hf_gprscdr_accessPointNameOI = -1;     /* AccessPointNameOI */
165 static int hf_gprscdr_cAMELInformationPDP = -1;   /* CAMELInformationPDP */
166 static int hf_gprscdr_rNCUnsentDownlinkVolume = -1;  /* DataVolumeGPRS */
167 static int hf_gprscdr_serviceCentre = -1;         /* AddressString */
168 static int hf_gprscdr_recordingEntity = -1;       /* RecordingEntity */
169 static int hf_gprscdr_locationArea = -1;          /* LocationAreaCode */
170 static int hf_gprscdr_messageReference = -1;      /* MessageReference */
171 static int hf_gprscdr_eventTimeStamp = -1;        /* TimeStamp */
172 static int hf_gprscdr_smsResult = -1;             /* SMSResult */
173 static int hf_gprscdr_destinationNumber = -1;     /* SmsTpDestinationNumber */
174 static int hf_gprscdr_cAMELInformationSMS = -1;   /* CAMELInformationSMS */
175 static int hf_gprscdr_qosRequested = -1;          /* QoSInformation */
176 static int hf_gprscdr_qosNegotiated = -1;         /* QoSInformation */
177 static int hf_gprscdr_dataVolumeGPRSUplink = -1;  /* DataVolumeGPRS */
178 static int hf_gprscdr_dataVolumeGPRSDownlink = -1;  /* DataVolumeGPRS */
179 static int hf_gprscdr_changeCondition = -1;       /* ChangeConditionV651 */
180 static int hf_gprscdr_changeTime = -1;            /* TimeStamp */
181 static int hf_gprscdr_failureHandlingContinue = -1;  /* FailureHandlingContinue */
182 static int hf_gprscdr_userLocationInformation_04 = -1;  /* T_userLocationInformation_04 */
183 static int hf_gprscdr_ratingGroup = -1;           /* RatingGroupId */
184 static int hf_gprscdr_chargingRuleBaseName = -1;  /* ChargingRuleBaseName */
185 static int hf_gprscdr_resultCode = -1;            /* ResultCode */
186 static int hf_gprscdr_timeOfFirstUsage = -1;      /* TimeStamp */
187 static int hf_gprscdr_timeOfLastUsage = -1;       /* TimeStamp */
188 static int hf_gprscdr_timeUsage = -1;             /* CallDuration */
189 static int hf_gprscdr_serviceConditionChange = -1;  /* ServiceConditionChangeV651 */
190 static int hf_gprscdr_qoSInformationNeg = -1;     /* QoSInformation */
191 static int hf_gprscdr_sgsn_Address = -1;          /* GSNAddress */
192 static int hf_gprscdr_sGSNPLMNIdentifier = -1;    /* PLMN_Id */
193 static int hf_gprscdr_datavolumeFBCUplink = -1;   /* DataVolumeGPRS */
194 static int hf_gprscdr_datavolumeFBCDownlink = -1;  /* DataVolumeGPRS */
195 static int hf_gprscdr_timeOfReport = -1;          /* TimeStamp */
196 static int hf_gprscdr_serviceIdentifier = -1;     /* ServiceIdentifier */
197 static int hf_gprscdr_serviceConditionChangeV750 = -1;  /* ServiceConditionChangeV750 */
198 static int hf_gprscdr_aFRecordInformation = -1;   /* SEQUENCE_OF_AFRecordInformation */
199 static int hf_gprscdr_aFRecordInformation_item = -1;  /* AFRecordInformation */
200 static int hf_gprscdr_userLocationInformation_05 = -1;  /* T_userLocationInformation_05 */
201 static int hf_gprscdr_eventBasedChargingInformation = -1;  /* EventBasedChargingInformation */
202 static int hf_gprscdr_timeQuotaMechanism = -1;    /* TimeQuotaMechanism */
203 static int hf_gprscdr_sgsnPDPRecord_01 = -1;      /* SGSNPDPRecord */
204 static int hf_gprscdr_ggsnPDPRecord_01 = -1;      /* GGSNPDPRecordV750 */
205 static int hf_gprscdr_sgsnSMORecord_01 = -1;      /* SGSNSMORecord */
206 static int hf_gprscdr_sgsnSMTRecord_01 = -1;      /* SGSNSMTRecord */
207 static int hf_gprscdr_sgsnMTLCSRecord = -1;       /* SGSNMTLCSRecord */
208 static int hf_gprscdr_sgsnMOLCSRecord = -1;       /* SGSNMOLCSRecord */
209 static int hf_gprscdr_sgsnNILCSRecord = -1;       /* SGSNNILCSRecord */
210 static int hf_gprscdr_egsnPDPRecord_01 = -1;      /* EGSNPDPRecordV750 */
211 static int hf_gprscdr_sgsnMBMSRecord = -1;        /* SGSNMBMSRecord */
212 static int hf_gprscdr_ggsnMBMSRecord = -1;        /* GGSNMBMSRecord */
213 static int hf_gprscdr_sGWRecord = -1;             /* SGWRecord */
214 static int hf_gprscdr_pGWRecord = -1;             /* PGWRecord */
215 static int hf_gprscdr_gwMBMSRecord = -1;          /* GWMBMSRecord */
216 static int hf_gprscdr_tDFRecord = -1;             /* TDFRecord */
217 static int hf_gprscdr_iPERecord = -1;             /* IPERecord */
218 static int hf_gprscdr_ePDGRecord = -1;            /* EPDGRecord */
219 static int hf_gprscdr_tWAGRecord = -1;            /* TWAGRecord */
220 static int hf_gprscdr_s_GWAddress = -1;           /* GSNAddress */
221 static int hf_gprscdr_servingNodeAddress = -1;    /* SEQUENCE_OF_GSNAddress */
222 static int hf_gprscdr_servingNodeAddress_item = -1;  /* GSNAddress */
223 static int hf_gprscdr_pdpPDNType = -1;            /* PDPType */
224 static int hf_gprscdr_servedPDPPDNAddress = -1;   /* PDPAddress */
225 static int hf_gprscdr_listOfTrafficVolumes_01 = -1;  /* SEQUENCE_OF_ChangeOfCharCondition */
226 static int hf_gprscdr_listOfTrafficVolumes_item_01 = -1;  /* ChangeOfCharCondition */
227 static int hf_gprscdr_servingNodePLMNIdentifier = -1;  /* PLMN_Id */
228 static int hf_gprscdr_userLocationInformation_06 = -1;  /* T_userLocationInformation_06 */
229 static int hf_gprscdr_sGWChange = -1;             /* SGWChange */
230 static int hf_gprscdr_servingNodeType = -1;       /* SEQUENCE_OF_ServingNodeType */
231 static int hf_gprscdr_servingNodeType_item = -1;  /* ServingNodeType */
232 static int hf_gprscdr_p_GWAddressUsed = -1;       /* GSNAddress */
233 static int hf_gprscdr_p_GWPLMNIdentifier = -1;    /* PLMN_Id */
234 static int hf_gprscdr_startTime = -1;             /* TimeStamp */
235 static int hf_gprscdr_stopTime = -1;              /* TimeStamp */
236 static int hf_gprscdr_pDNConnectionChargingID = -1;  /* ChargingID */
237 static int hf_gprscdr_iMSIunauthenticatedFlag = -1;  /* NULL */
238 static int hf_gprscdr_userCSGInformation = -1;    /* UserCSGInformation */
239 static int hf_gprscdr_servedPDPPDNAddressExt = -1;  /* PDPAddress */
240 static int hf_gprscdr_lowPriorityIndicator = -1;  /* NULL */
241 static int hf_gprscdr_dynamicAddressFlagExt = -1;  /* DynamicAddressFlag */
242 static int hf_gprscdr_s_GWiPv6Address = -1;       /* GSNAddress */
243 static int hf_gprscdr_servingNodeiPv6Address = -1;  /* SEQUENCE_OF_GSNAddress */
244 static int hf_gprscdr_servingNodeiPv6Address_item = -1;  /* GSNAddress */
245 static int hf_gprscdr_p_GWiPv6AddressUsed = -1;   /* GSNAddress */
246 static int hf_gprscdr_retransmission = -1;        /* NULL */
247 static int hf_gprscdr_userLocationInfoTime = -1;  /* TimeStamp */
248 static int hf_gprscdr_cNOperatorSelectionEnt = -1;  /* CNOperatorSelectionEntity */
249 static int hf_gprscdr_presenceReportingAreaInfo = -1;  /* PresenceReportingAreaInfo */
250 static int hf_gprscdr_lastUserLocationInformation = -1;  /* T_lastUserLocationInformation */
251 static int hf_gprscdr_lastMSTimeZone = -1;        /* MSTimeZone */
252 static int hf_gprscdr_enhancedDiagnostics = -1;   /* EnhancedDiagnostics */
253 static int hf_gprscdr_cPCIoTEPSOptimisationIndicator = -1;  /* CPCIoTEPSOptimisationIndicator */
254 static int hf_gprscdr_uNIPDUCPOnlyFlag = -1;      /* UNIPDUCPOnlyFlag */
255 static int hf_gprscdr_servingPLMNRateControl = -1;  /* ServingPLMNRateControl */
256 static int hf_gprscdr_pDPPDNTypeExtension = -1;   /* PDPPDNTypeExtension */
257 static int hf_gprscdr_mOExceptionDataCounter = -1;  /* MOExceptionDataCounter */
258 static int hf_gprscdr_listOfRANSecondaryRATUsageReports = -1;  /* SEQUENCE_OF_RANSecondaryRATUsageReport */
259 static int hf_gprscdr_listOfRANSecondaryRATUsageReports_item = -1;  /* RANSecondaryRATUsageReport */
260 static int hf_gprscdr_pSCellInformation = -1;     /* PSCellInformation */
261 static int hf_gprscdr_p_GWAddress = -1;           /* GSNAddress */
262 static int hf_gprscdr_userLocationInformation_07 = -1;  /* T_userLocationInformation_07 */
263 static int hf_gprscdr_listOfServiceData_02 = -1;  /* SEQUENCE_OF_ChangeOfServiceCondition */
264 static int hf_gprscdr_listOfServiceData_item_02 = -1;  /* ChangeOfServiceCondition */
265 static int hf_gprscdr_servedMNNAI = -1;           /* SubscriptionID */
266 static int hf_gprscdr_served3gpp2MEID = -1;       /* OCTET_STRING */
267 static int hf_gprscdr_threeGPP2UserLocationInformation = -1;  /* OCTET_STRING */
268 static int hf_gprscdr_tWANUserLocationInformation = -1;  /* TWANUserLocationInfo */
269 static int hf_gprscdr_ePCQoSInformation = -1;     /* EPCQoSInformation */
270 static int hf_gprscdr_lastUserLocationInformation_01 = -1;  /* T_lastUserLocationInformation_01 */
271 static int hf_gprscdr_nBIFOMMode = -1;            /* NBIFOMMode */
272 static int hf_gprscdr_nBIFOMSupport = -1;         /* NBIFOMSupport */
273 static int hf_gprscdr_uWANUserLocationInformation = -1;  /* UWANUserLocationInfo */
274 static int hf_gprscdr_sGiPtPTunnellingMethod = -1;  /* SGiPtPTunnellingMethod */
275 static int hf_gprscdr_aPNRateControl = -1;        /* APNRateControl */
276 static int hf_gprscdr_chargingPerIPCANSessionIndicator = -1;  /* ChargingPerIPCANSessionIndicator */
277 static int hf_gprscdr_threeGPPPSDataOffStatus = -1;  /* ThreeGPPPSDataOffStatus */
278 static int hf_gprscdr_sCSASAddress = -1;          /* SCSASAddress */
279 static int hf_gprscdr_userLocationInformation_08 = -1;  /* OCTET_STRING */
280 static int hf_gprscdr_tDFAddress = -1;            /* GSNAddress */
281 static int hf_gprscdr_tDFiPv6AddressUsed = -1;    /* GSNAddress */
282 static int hf_gprscdr_tDFPLMNIdentifier = -1;     /* PLMN_Id */
283 static int hf_gprscdr_servedFixedSubsID = -1;     /* FixedSubsID */
284 static int hf_gprscdr_accessLineIdentifier = -1;  /* AccessLineIdentifier */
285 static int hf_gprscdr_fixedUserLocationInformation = -1;  /* FixedUserLocationInformation */
286 static int hf_gprscdr_iPEdgeAddress = -1;         /* GSNAddress */
287 static int hf_gprscdr_iPCANsessionType = -1;      /* PDPType */
288 static int hf_gprscdr_servedIPCANsessionAddress = -1;  /* PDPAddress */
289 static int hf_gprscdr_iPEdgeOperatorIdentifier = -1;  /* PLMN_Id */
290 static int hf_gprscdr_servedIPCANsessionAddressExt = -1;  /* PDPAddress */
291 static int hf_gprscdr_iPEdgeiPv6AddressUsed = -1;  /* GSNAddress */
292 static int hf_gprscdr_ePDGAddressUsed = -1;       /* GSNAddress */
293 static int hf_gprscdr_ePDGiPv6AddressUsed = -1;   /* GSNAddress */
294 static int hf_gprscdr_tWAGAddressUsed = -1;       /* GSNAddress */
295 static int hf_gprscdr_tWAGiPv6AddressUsed = -1;   /* GSNAddress */
296 static int hf_gprscdr_changeLocation = -1;        /* SEQUENCE_OF_ChangeLocation */
297 static int hf_gprscdr_changeLocation_item = -1;   /* ChangeLocation */
298 static int hf_gprscdr_cAMELInformationMM = -1;    /* CAMELInformationMM */
299 static int hf_gprscdr_cellPLMNId = -1;            /* PLMN_Id */
300 static int hf_gprscdr_servingNodeType_01 = -1;    /* ServingNodeType */
301 static int hf_gprscdr_servingNodeAddress_01 = -1;  /* GSNAddress */
302 static int hf_gprscdr_servingNodeiPv6Address_01 = -1;  /* GSNAddress */
303 static int hf_gprscdr_mMEName = -1;               /* DiameterIdentity */
304 static int hf_gprscdr_mMERealm = -1;              /* DiameterIdentity */
305 static int hf_gprscdr_originatingAddress = -1;    /* AddressString */
306 static int hf_gprscdr_lcsClientType = -1;         /* LCSClientType */
307 static int hf_gprscdr_lcsClientIdentity = -1;     /* LCSClientIdentity */
308 static int hf_gprscdr_locationType = -1;          /* LocationType */
309 static int hf_gprscdr_lcsQos = -1;                /* LCSQoSInfo */
310 static int hf_gprscdr_lcsPriority = -1;           /* LCS_Priority */
311 static int hf_gprscdr_mlcNumber = -1;             /* ISDN_AddressString */
312 static int hf_gprscdr_measurementDuration = -1;   /* CallDuration */
313 static int hf_gprscdr_notificationToMSUser = -1;  /* NotificationToMSUser */
314 static int hf_gprscdr_privacyOverride = -1;       /* NULL */
315 static int hf_gprscdr_location = -1;              /* LocationAreaAndCell */
316 static int hf_gprscdr_locationEstimate = -1;      /* Ext_GeographicalInformation */
317 static int hf_gprscdr_positioningData = -1;       /* PositioningData */
318 static int hf_gprscdr_lcsCause = -1;              /* LCSCause */
319 static int hf_gprscdr_locationMethod = -1;        /* LocationMethod */
320 static int hf_gprscdr_listofRAs = -1;             /* SEQUENCE_OF_RAIdentity */
321 static int hf_gprscdr_listofRAs_item = -1;        /* RAIdentity */
322 static int hf_gprscdr_listOfTrafficVolumes_02 = -1;  /* SEQUENCE_OF_ChangeOfMBMSCondition */
323 static int hf_gprscdr_listOfTrafficVolumes_item_02 = -1;  /* ChangeOfMBMSCondition */
324 static int hf_gprscdr_numberofReceivingUE = -1;   /* INTEGER */
325 static int hf_gprscdr_mbmsInformation = -1;       /* MBMSInformation */
326 static int hf_gprscdr_listofDownstreamNodes = -1;  /* SEQUENCE_OF_GSNAddress */
327 static int hf_gprscdr_listofDownstreamNodes_item = -1;  /* GSNAddress */
328 static int hf_gprscdr_mbmsGWAddress = -1;         /* GSNAddress */
329 static int hf_gprscdr_commonTeid = -1;            /* CTEID */
330 static int hf_gprscdr_iPMulticastSourceAddress = -1;  /* PDPAddress */
331 static int hf_gprscdr_physicalAccessID = -1;      /* UTF8String */
332 static int hf_gprscdr_logicalAccessID = -1;       /* OCTET_STRING */
333 static int hf_gprscdr_aFChargingIdentifier = -1;  /* AFChargingIdentifier */
334 static int hf_gprscdr_flows = -1;                 /* Flows */
335 static int hf_gprscdr_aPNRateControlUplink = -1;  /* APNRateControlParameters */
336 static int hf_gprscdr_aPNRateControlDownlink = -1;  /* APNRateControlParameters */
337 static int hf_gprscdr_additionalExceptionReports = -1;  /* AdditionalExceptionReports */
338 static int hf_gprscdr_rateControlTimeUnit = -1;   /* RateControlTimeUnit */
339 static int hf_gprscdr_rateControlMaxRate = -1;    /* INTEGER */
340 static int hf_gprscdr_rateControlMaxMessageSize = -1;  /* DataVolumeGPRS */
341 static int hf_gprscdr_called_Party_Address = -1;  /* InvolvedParty */
342 static int hf_gprscdr_requested_Party_Address = -1;  /* InvolvedParty */
343 static int hf_gprscdr_list_Of_Called_Asserted_Identity = -1;  /* SEQUENCE_OF_InvolvedParty */
344 static int hf_gprscdr_list_Of_Called_Asserted_Identity_item = -1;  /* InvolvedParty */
345 static int hf_gprscdr_sCFAddress = -1;            /* SCFAddress */
346 static int hf_gprscdr_serviceKey = -1;            /* ServiceKey */
347 static int hf_gprscdr_defaultTransactionHandling = -1;  /* DefaultGPRS_Handling */
348 static int hf_gprscdr_numberOfDPEncountered = -1;  /* NumberOfDPEncountered */
349 static int hf_gprscdr_levelOfCAMELService = -1;   /* LevelOfCAMELService */
350 static int hf_gprscdr_freeFormatData = -1;        /* FreeFormatData */
351 static int hf_gprscdr_fFDAppendIndicator = -1;    /* FFDAppendIndicator */
352 static int hf_gprscdr_cAMELAccessPointNameNI = -1;  /* CAMELAccessPointNameNI */
353 static int hf_gprscdr_cAMELAccessPointNameOI = -1;  /* CAMELAccessPointNameOI */
354 static int hf_gprscdr_defaultSMSHandling = -1;    /* DefaultSMS_Handling */
355 static int hf_gprscdr_cAMELCallingPartyNumber = -1;  /* CallingNumber */
356 static int hf_gprscdr_cAMELDestinationSubscriberNumber = -1;  /* SmsTpDestinationNumber */
357 static int hf_gprscdr_cAMELSMSCAddress = -1;      /* AddressString */
358 static int hf_gprscdr_smsReferenceNumber = -1;    /* CallReferenceNumber */
359 static int hf_gprscdr_changeCondition_01 = -1;    /* ChangeCondition */
360 static int hf_gprscdr_userLocationInformation_09 = -1;  /* T_userLocationInformation_08 */
361 static int hf_gprscdr_presenceReportingAreaStatus = -1;  /* PresenceReportingAreaStatus */
362 static int hf_gprscdr_accessAvailabilityChangeReason = -1;  /* AccessAvailabilityChangeReason */
363 static int hf_gprscdr_relatedChangeOfCharCondition = -1;  /* RelatedChangeOfCharCondition */
364 static int hf_gprscdr_listOfPresenceReportingAreaInformation = -1;  /* SEQUENCE_OF_PresenceReportingAreaInfo */
365 static int hf_gprscdr_listOfPresenceReportingAreaInformation_item = -1;  /* PresenceReportingAreaInfo */
366 static int hf_gprscdr_dataVolumeMBMSUplink = -1;  /* DataVolumeMBMS */
367 static int hf_gprscdr_dataVolumeMBMSDownlink = -1;  /* DataVolumeMBMS */
368 static int hf_gprscdr_serviceConditionChange_01 = -1;  /* ServiceConditionChange */
369 static int hf_gprscdr_qoSInformationNeg_01 = -1;  /* EPCQoSInformation */
370 static int hf_gprscdr_userLocationInformation_10 = -1;  /* T_userLocationInformation_09 */
371 static int hf_gprscdr_serviceSpecificInfo = -1;   /* SEQUENCE_OF_ServiceSpecificInfo */
372 static int hf_gprscdr_serviceSpecificInfo_item = -1;  /* ServiceSpecificInfo */
373 static int hf_gprscdr_sponsorIdentity = -1;       /* OCTET_STRING */
374 static int hf_gprscdr_applicationServiceProviderIdentity = -1;  /* OCTET_STRING */
375 static int hf_gprscdr_aDCRuleBaseName = -1;       /* ADCRuleBaseName */
376 static int hf_gprscdr_relatedChangeOfServiceCondition = -1;  /* RelatedChangeOfServiceCondition */
377 static int hf_gprscdr_trafficSteeringPolicyIDDownlink = -1;  /* TrafficSteeringPolicyIDDownlink */
378 static int hf_gprscdr_trafficSteeringPolicyIDUplink = -1;  /* TrafficSteeringPolicyIDUplink */
379 static int hf_gprscdr_voLTEInformation = -1;      /* VoLTEInformation */
380 static int hf_gprscdr_routingAreaCode = -1;       /* RoutingAreaCode */
381 static int hf_gprscdr_mCC_MNC_01 = -1;            /* PLMN_Id */
382 static int hf_gprscdr_qCI = -1;                   /* INTEGER */
383 static int hf_gprscdr_maxRequestedBandwithUL = -1;  /* INTEGER */
384 static int hf_gprscdr_maxRequestedBandwithDL = -1;  /* INTEGER */
385 static int hf_gprscdr_guaranteedBitrateUL = -1;   /* INTEGER */
386 static int hf_gprscdr_guaranteedBitrateDL = -1;   /* INTEGER */
387 static int hf_gprscdr_aRP = -1;                   /* T_aRP */
388 static int hf_gprscdr_aPNAggregateMaxBitrateUL = -1;  /* INTEGER */
389 static int hf_gprscdr_aPNAggregateMaxBitrateDL = -1;  /* INTEGER */
390 static int hf_gprscdr_extendedMaxRequestedBWUL = -1;  /* INTEGER */
391 static int hf_gprscdr_extendedMaxRequestedBWDL = -1;  /* INTEGER */
392 static int hf_gprscdr_extendedGBRUL = -1;         /* INTEGER */
393 static int hf_gprscdr_extendedGBRDL = -1;         /* INTEGER */
394 static int hf_gprscdr_extendedAPNAMBRUL = -1;     /* INTEGER */
395 static int hf_gprscdr_extendedAPNAMBRDL = -1;     /* INTEGER */
396 static int hf_gprscdr_numberOfEvents = -1;        /* INTEGER */
397 static int hf_gprscdr_eventTimeStamps = -1;       /* SEQUENCE_OF_TimeStamp */
398 static int hf_gprscdr_eventTimeStamps_item = -1;  /* TimeStamp */
399 static int hf_gprscdr_sSID = -1;                  /* OCTET_STRING */
400 static int hf_gprscdr_bSSID = -1;                 /* OCTET_STRING */
401 static int hf_gprscdr_mediaComponentNumber = -1;  /* INTEGER */
402 static int hf_gprscdr_flowNumber = -1;            /* T_flowNumber */
403 static int hf_gprscdr_flowNumber_item = -1;       /* INTEGER */
404 static int hf_gprscdr_counterValue = -1;          /* INTEGER */
405 static int hf_gprscdr_counterTimestamp = -1;      /* TimeStamp */
406 static int hf_gprscdr_presenceReportingAreaIdentifier = -1;  /* OCTET_STRING */
407 static int hf_gprscdr_presenceReportingAreaElementsList = -1;  /* PresenceReportingAreaElementsList */
408 static int hf_gprscdr_presenceReportingAreaNode = -1;  /* PresenceReportingAreaNode */
409 static int hf_gprscdr_pSFreeFormatData = -1;      /* FreeFormatData */
410 static int hf_gprscdr_pSFFDAppendIndicator = -1;  /* FFDAppendIndicator */
411 static int hf_gprscdr_dataVolumeUplink = -1;      /* DataVolumeGPRS */
412 static int hf_gprscdr_dataVolumeDownlink = -1;    /* DataVolumeGPRS */
413 static int hf_gprscdr_rANStartTime = -1;          /* TimeStamp */
414 static int hf_gprscdr_rANEndTime = -1;            /* TimeStamp */
415 static int hf_gprscdr_secondaryRATType = -1;      /* SecondaryRATType */
416 static int hf_gprscdr_userLocationInformation_11 = -1;  /* T_userLocationInformation_10 */
417 static int hf_gprscdr_userLocationInformation_12 = -1;  /* T_userLocationInformation_11 */
418 static int hf_gprscdr_relatedServiceConditionChange = -1;  /* ServiceConditionChange */
419 static int hf_gprscdr_sPLMNDLRateControlValue = -1;  /* INTEGER */
420 static int hf_gprscdr_sPLMNULRateControlValue = -1;  /* INTEGER */
421 static int hf_gprscdr_timeQuotaType = -1;         /* TimeQuotaType */
422 static int hf_gprscdr_baseTimeInterval = -1;      /* INTEGER */
423 static int hf_gprscdr_civicAddressInformation = -1;  /* CivicAddressInformation */
424 static int hf_gprscdr_wLANOperatorId = -1;        /* WLANOperatorId */
425 static int hf_gprscdr_cSGId = -1;                 /* CSGId */
426 static int hf_gprscdr_cSGAccessMode = -1;         /* CSGAccessMode */
427 static int hf_gprscdr_cSGMembershipIndication = -1;  /* NULL */
428 static int hf_gprscdr_uELocalIPAddress = -1;      /* IPAddress */
429 static int hf_gprscdr_uDPSourcePort = -1;         /* OCTET_STRING_SIZE_2 */
430 static int hf_gprscdr_tCPSourcePort = -1;         /* OCTET_STRING_SIZE_2 */
431 static int hf_gprscdr_callerInformation = -1;     /* SEQUENCE_OF_InvolvedParty */
432 static int hf_gprscdr_callerInformation_item = -1;  /* InvolvedParty */
433 static int hf_gprscdr_calleeInformation = -1;     /* CalleePartyInformation */
434 static int hf_gprscdr_wLANOperatorName = -1;      /* OCTET_STRING */
435 static int hf_gprscdr_wLANPLMNId = -1;            /* PLMN_Id */
436 /* named bits */
437 static int hf_gprscdr_LevelOfCAMELService_basic = -1;
438 static int hf_gprscdr_LevelOfCAMELService_callDurationSupervision = -1;
439 static int hf_gprscdr_LevelOfCAMELService_onlineCharging = -1;
440 static int hf_gprscdr_ServiceConditionChangeV651_qoSChange = -1;
441 static int hf_gprscdr_ServiceConditionChangeV651_sGSNChange = -1;
442 static int hf_gprscdr_ServiceConditionChangeV651_sGSNPLMNIDChange = -1;
443 static int hf_gprscdr_ServiceConditionChangeV651_tariffTimeSwitch = -1;
444 static int hf_gprscdr_ServiceConditionChangeV651_pDPContextRelease = -1;
445 static int hf_gprscdr_ServiceConditionChangeV651_rATChange = -1;
446 static int hf_gprscdr_ServiceConditionChangeV651_serviceIdledOut = -1;
447 static int hf_gprscdr_ServiceConditionChangeV651_qCTExpiry = -1;
448 static int hf_gprscdr_ServiceConditionChangeV651_configurationChange = -1;
449 static int hf_gprscdr_ServiceConditionChangeV651_serviceStop = -1;
450 static int hf_gprscdr_ServiceConditionChangeV651_timeThresholdReached = -1;
451 static int hf_gprscdr_ServiceConditionChangeV651_volumeThresholdReached = -1;
452 static int hf_gprscdr_ServiceConditionChangeV651_spare_bit12 = -1;
453 static int hf_gprscdr_ServiceConditionChangeV651_timeExhausted = -1;
454 static int hf_gprscdr_ServiceConditionChangeV651_volumeExhausted = -1;
455 static int hf_gprscdr_ServiceConditionChangeV651_timeout = -1;
456 static int hf_gprscdr_ServiceConditionChangeV651_returnRequested = -1;
457 static int hf_gprscdr_ServiceConditionChangeV651_reauthorisationRequest = -1;
458 static int hf_gprscdr_ServiceConditionChangeV651_continueOngoingSession = -1;
459 static int hf_gprscdr_ServiceConditionChangeV651_retryAndTerminateOngoingSession = -1;
460 static int hf_gprscdr_ServiceConditionChangeV651_terminateOngoingSession = -1;
461 static int hf_gprscdr_ServiceConditionChangeV750_qoSChange = -1;
462 static int hf_gprscdr_ServiceConditionChangeV750_sGSNChange = -1;
463 static int hf_gprscdr_ServiceConditionChangeV750_sGSNPLMNIDChange = -1;
464 static int hf_gprscdr_ServiceConditionChangeV750_tariffTimeSwitch = -1;
465 static int hf_gprscdr_ServiceConditionChangeV750_pDPContextRelease = -1;
466 static int hf_gprscdr_ServiceConditionChangeV750_rATChange = -1;
467 static int hf_gprscdr_ServiceConditionChangeV750_serviceIdledOut = -1;
468 static int hf_gprscdr_ServiceConditionChangeV750_reserved = -1;
469 static int hf_gprscdr_ServiceConditionChangeV750_configurationChange = -1;
470 static int hf_gprscdr_ServiceConditionChangeV750_serviceStop = -1;
471 static int hf_gprscdr_ServiceConditionChangeV750_dCCATimeThresholdReached = -1;
472 static int hf_gprscdr_ServiceConditionChangeV750_dCCAVolumeThresholdReached = -1;
473 static int hf_gprscdr_ServiceConditionChangeV750_dCCAServiceSpecificUnitThresholdReached = -1;
474 static int hf_gprscdr_ServiceConditionChangeV750_dCCATimeExhausted = -1;
475 static int hf_gprscdr_ServiceConditionChangeV750_dCCAVolumeExhausted = -1;
476 static int hf_gprscdr_ServiceConditionChangeV750_dCCAValidityTimeout = -1;
477 static int hf_gprscdr_ServiceConditionChangeV750_reserved2 = -1;
478 static int hf_gprscdr_ServiceConditionChangeV750_dCCAReauthorisationRequest = -1;
479 static int hf_gprscdr_ServiceConditionChangeV750_dCCAContinueOngoingSession = -1;
480 static int hf_gprscdr_ServiceConditionChangeV750_dCCARetryAndTerminateOngoingSession = -1;
481 static int hf_gprscdr_ServiceConditionChangeV750_dCCATerminateOngoingSession = -1;
482 static int hf_gprscdr_ServiceConditionChangeV750_cGI_SAIChange = -1;
483 static int hf_gprscdr_ServiceConditionChangeV750_rAIChange = -1;
484 static int hf_gprscdr_ServiceConditionChangeV750_dCCAServiceSpecificUnitExhausted = -1;
485 static int hf_gprscdr_ServiceConditionChangeV750_recordClosure = -1;
486 static int hf_gprscdr_ServiceConditionChangeV750_timeLimit = -1;
487 static int hf_gprscdr_ServiceConditionChangeV750_volumeLimit = -1;
488 static int hf_gprscdr_ServiceConditionChangeV750_serviceSpecificUnitLimit = -1;
489 static int hf_gprscdr_ServiceConditionChangeV750_envelopeClosure = -1;
490 static int hf_gprscdr_PresenceReportingAreaNode_oCS = -1;
491 static int hf_gprscdr_PresenceReportingAreaNode_pCRF = -1;
492 static int hf_gprscdr_ServiceConditionChange_qoSChange = -1;
493 static int hf_gprscdr_ServiceConditionChange_sGSNChange = -1;
494 static int hf_gprscdr_ServiceConditionChange_sGSNPLMNIDChange = -1;
495 static int hf_gprscdr_ServiceConditionChange_tariffTimeSwitch = -1;
496 static int hf_gprscdr_ServiceConditionChange_pDPContextRelease = -1;
497 static int hf_gprscdr_ServiceConditionChange_rATChange = -1;
498 static int hf_gprscdr_ServiceConditionChange_serviceIdledOut = -1;
499 static int hf_gprscdr_ServiceConditionChange_reserved = -1;
500 static int hf_gprscdr_ServiceConditionChange_configurationChange = -1;
501 static int hf_gprscdr_ServiceConditionChange_serviceStop = -1;
502 static int hf_gprscdr_ServiceConditionChange_dCCATimeThresholdReached = -1;
503 static int hf_gprscdr_ServiceConditionChange_dCCAVolumeThresholdReached = -1;
504 static int hf_gprscdr_ServiceConditionChange_dCCAServiceSpecificUnitThresholdReached = -1;
505 static int hf_gprscdr_ServiceConditionChange_dCCATimeExhausted = -1;
506 static int hf_gprscdr_ServiceConditionChange_dCCAVolumeExhausted = -1;
507 static int hf_gprscdr_ServiceConditionChange_dCCAValidityTimeout = -1;
508 static int hf_gprscdr_ServiceConditionChange_reserved1 = -1;
509 static int hf_gprscdr_ServiceConditionChange_dCCAReauthorisationRequest = -1;
510 static int hf_gprscdr_ServiceConditionChange_dCCAContinueOngoingSession = -1;
511 static int hf_gprscdr_ServiceConditionChange_dCCARetryAndTerminateOngoingSession = -1;
512 static int hf_gprscdr_ServiceConditionChange_dCCATerminateOngoingSession = -1;
513 static int hf_gprscdr_ServiceConditionChange_cGI_SAIChange = -1;
514 static int hf_gprscdr_ServiceConditionChange_rAIChange = -1;
515 static int hf_gprscdr_ServiceConditionChange_dCCAServiceSpecificUnitExhausted = -1;
516 static int hf_gprscdr_ServiceConditionChange_recordClosure = -1;
517 static int hf_gprscdr_ServiceConditionChange_timeLimit = -1;
518 static int hf_gprscdr_ServiceConditionChange_volumeLimit = -1;
519 static int hf_gprscdr_ServiceConditionChange_serviceSpecificUnitLimit = -1;
520 static int hf_gprscdr_ServiceConditionChange_envelopeClosure = -1;
521 static int hf_gprscdr_ServiceConditionChange_eCGIChange = -1;
522 static int hf_gprscdr_ServiceConditionChange_tAIChange = -1;
523 static int hf_gprscdr_ServiceConditionChange_userLocationChange = -1;
524 static int hf_gprscdr_ServiceConditionChange_userCSGInformationChange = -1;
525 static int hf_gprscdr_ServiceConditionChange_presenceInPRAChange = -1;
526 static int hf_gprscdr_ServiceConditionChange_accessChangeOfSDF = -1;
527 static int hf_gprscdr_ServiceConditionChange_indirectServiceConditionChange = -1;
528 static int hf_gprscdr_ServiceConditionChange_servingPLMNRateControlChange = -1;
529 static int hf_gprscdr_ServiceConditionChange_aPNRateControlChange = -1;
530 
531 /*--- End of included file: packet-gprscdr-hf.c ---*/
532 #line 36 "./asn1/gprscdr/packet-gprscdr-template.c"
533 
534 static int ett_gprscdr = -1;
535 static int ett_gprscdr_timestamp = -1;
536 static int ett_gprscdr_plmn_id = -1;
537 static int ett_gprscdr_pdp_pdn_type = -1;
538 static int ett_gprscdr_eps_qos_arp = -1;
539 static int ett_gprscdr_managementextension_information = -1;
540 static int ett_gprscdr_userlocationinformation = -1;
541 
542 /*--- Included file: packet-gprscdr-ett.c ---*/
543 #line 1 "./asn1/gprscdr/packet-gprscdr-ett.c"
544 static gint ett_gprscdr_Diagnostics = -1;
545 static gint ett_gprscdr_Ecgi = -1;
546 static gint ett_gprscdr_EnhancedDiagnostics = -1;
547 static gint ett_gprscdr_SEQUENCE_OF_RANNASCause = -1;
548 static gint ett_gprscdr_InvolvedParty = -1;
549 static gint ett_gprscdr_IPAddress = -1;
550 static gint ett_gprscdr_IPBinaryAddress = -1;
551 static gint ett_gprscdr_IPBinV6AddressWithOrWithoutPrefixLength = -1;
552 static gint ett_gprscdr_IPBinV6AddressWithPrefixLength = -1;
553 static gint ett_gprscdr_IPTextRepresentedAddress = -1;
554 static gint ett_gprscdr_LCSClientIdentity = -1;
555 static gint ett_gprscdr_LevelOfCAMELService = -1;
556 static gint ett_gprscdr_LocationAreaAndCell = -1;
557 static gint ett_gprscdr_ManagementExtensions = -1;
558 static gint ett_gprscdr_MBMSInformation = -1;
559 static gint ett_gprscdr_Ncgi = -1;
560 static gint ett_gprscdr_PDPAddress = -1;
561 static gint ett_gprscdr_PSCellInformation = -1;
562 static gint ett_gprscdr_SCSASAddress = -1;
563 static gint ett_gprscdr_ServiceSpecificInfo = -1;
564 static gint ett_gprscdr_SubscriptionID = -1;
565 static gint ett_gprscdr_ManagementExtension = -1;
566 static gint ett_gprscdr_GPRSCallEventRecord = -1;
567 static gint ett_gprscdr_GGSNPDPRecord = -1;
568 static gint ett_gprscdr_SEQUENCE_OF_GSNAddress = -1;
569 static gint ett_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651 = -1;
570 static gint ett_gprscdr_GGSNPDPRecordV750 = -1;
571 static gint ett_gprscdr_EGSNPDPRecord = -1;
572 static gint ett_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV651 = -1;
573 static gint ett_gprscdr_EGSNPDPRecordV750 = -1;
574 static gint ett_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV750 = -1;
575 static gint ett_gprscdr_SGSNPDPRecordV651 = -1;
576 static gint ett_gprscdr_SGSNSMORecordV651 = -1;
577 static gint ett_gprscdr_SGSNSMTRecordV651 = -1;
578 static gint ett_gprscdr_ChangeOfCharConditionV651 = -1;
579 static gint ett_gprscdr_ChangeOfServiceConditionV651 = -1;
580 static gint ett_gprscdr_ChangeOfServiceConditionV750 = -1;
581 static gint ett_gprscdr_SEQUENCE_OF_AFRecordInformation = -1;
582 static gint ett_gprscdr_ServiceConditionChangeV651 = -1;
583 static gint ett_gprscdr_ServiceConditionChangeV750 = -1;
584 static gint ett_gprscdr_GPRSRecord = -1;
585 static gint ett_gprscdr_SGWRecord = -1;
586 static gint ett_gprscdr_SEQUENCE_OF_ChangeOfCharCondition = -1;
587 static gint ett_gprscdr_SEQUENCE_OF_ServingNodeType = -1;
588 static gint ett_gprscdr_SEQUENCE_OF_RANSecondaryRATUsageReport = -1;
589 static gint ett_gprscdr_PGWRecord = -1;
590 static gint ett_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition = -1;
591 static gint ett_gprscdr_TDFRecord = -1;
592 static gint ett_gprscdr_IPERecord = -1;
593 static gint ett_gprscdr_EPDGRecord = -1;
594 static gint ett_gprscdr_TWAGRecord = -1;
595 static gint ett_gprscdr_SGSNMMRecord = -1;
596 static gint ett_gprscdr_SEQUENCE_OF_ChangeLocation = -1;
597 static gint ett_gprscdr_SGSNPDPRecord = -1;
598 static gint ett_gprscdr_SGSNSMORecord = -1;
599 static gint ett_gprscdr_SGSNSMTRecord = -1;
600 static gint ett_gprscdr_SGSNMTLCSRecord = -1;
601 static gint ett_gprscdr_SGSNMOLCSRecord = -1;
602 static gint ett_gprscdr_SGSNNILCSRecord = -1;
603 static gint ett_gprscdr_SGSNMBMSRecord = -1;
604 static gint ett_gprscdr_SEQUENCE_OF_RAIdentity = -1;
605 static gint ett_gprscdr_SEQUENCE_OF_ChangeOfMBMSCondition = -1;
606 static gint ett_gprscdr_GGSNMBMSRecord = -1;
607 static gint ett_gprscdr_GWMBMSRecord = -1;
608 static gint ett_gprscdr_AccessLineIdentifier = -1;
609 static gint ett_gprscdr_AFRecordInformation = -1;
610 static gint ett_gprscdr_APNRateControl = -1;
611 static gint ett_gprscdr_APNRateControlParameters = -1;
612 static gint ett_gprscdr_CalleePartyInformation = -1;
613 static gint ett_gprscdr_SEQUENCE_OF_InvolvedParty = -1;
614 static gint ett_gprscdr_CAMELInformationMM = -1;
615 static gint ett_gprscdr_CAMELInformationPDP = -1;
616 static gint ett_gprscdr_CAMELInformationSMS = -1;
617 static gint ett_gprscdr_ChangeOfCharCondition = -1;
618 static gint ett_gprscdr_SEQUENCE_OF_PresenceReportingAreaInfo = -1;
619 static gint ett_gprscdr_ChangeOfMBMSCondition = -1;
620 static gint ett_gprscdr_ChangeOfServiceCondition = -1;
621 static gint ett_gprscdr_SEQUENCE_OF_ServiceSpecificInfo = -1;
622 static gint ett_gprscdr_ChangeLocation = -1;
623 static gint ett_gprscdr_EPCQoSInformation = -1;
624 static gint ett_gprscdr_EventBasedChargingInformation = -1;
625 static gint ett_gprscdr_SEQUENCE_OF_TimeStamp = -1;
626 static gint ett_gprscdr_FixedUserLocationInformation = -1;
627 static gint ett_gprscdr_Flows = -1;
628 static gint ett_gprscdr_T_flowNumber = -1;
629 static gint ett_gprscdr_MOExceptionDataCounter = -1;
630 static gint ett_gprscdr_PresenceReportingAreaInfo = -1;
631 static gint ett_gprscdr_PresenceReportingAreaNode = -1;
632 static gint ett_gprscdr_PSFurnishChargingInformation = -1;
633 static gint ett_gprscdr_RANSecondaryRATUsageReport = -1;
634 static gint ett_gprscdr_RelatedChangeOfCharCondition = -1;
635 static gint ett_gprscdr_RelatedChangeOfServiceCondition = -1;
636 static gint ett_gprscdr_ServiceConditionChange = -1;
637 static gint ett_gprscdr_ServingPLMNRateControl = -1;
638 static gint ett_gprscdr_TimeQuotaMechanism = -1;
639 static gint ett_gprscdr_TWANUserLocationInfo = -1;
640 static gint ett_gprscdr_UserCSGInformation = -1;
641 static gint ett_gprscdr_UWANUserLocationInfo = -1;
642 static gint ett_gprscdr_VoLTEInformation = -1;
643 static gint ett_gprscdr_WLANOperatorId = -1;
644 
645 /*--- End of included file: packet-gprscdr-ett.c ---*/
646 #line 45 "./asn1/gprscdr/packet-gprscdr-template.c"
647 
648 static expert_field ei_gprscdr_not_dissected = EI_INIT;
649 static expert_field ei_gprscdr_choice_not_found = EI_INIT;
650 
651 /* Global variables */
652 static const char *obj_id = NULL;
653 
654 static const value_string gprscdr_daylight_saving_time_vals[] = {
655     {0, "No adjustment"},
656     {1, "+1 hour adjustment for Daylight Saving Time"},
657     {2, "+2 hours adjustment for Daylight Saving Time"},
658     {3, "Reserved"},
659     {0, NULL}
660 };
661 
662 /* 3GPP-RAT-Type
663 *  3GPP TS 29.061
664 */
665 static const value_string gprscdr_rat_type_vals[] = {
666     {0, "Reserved"},
667     {1, "UTRAN"},
668     {2, "GERAN"},
669     {3, "WLAN"},
670     {4, "GAN"},
671     {5, "HSPA Evolution"},
672     {6, "EUTRAN"},
673     {7, "Virtual"},
674     {8, "EUTRAN-NB-IoT"},
675     {9, "LTE-M"},
676     {10, "NR"},
677     /* 11-100 Spare for future use TS 29.061 */
678     {101, "IEEE 802.16e"},
679     {102, "3GPP2 eHRPD"},
680     {103, "3GPP2 HRPD"},
681     /* 104-255 Spare for future use TS 29.061 */
682     {0, NULL}
683 };
684 
685 static int
dissect_gprscdr_uli(tvbuff_t * tvb _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int type)686 dissect_gprscdr_uli(tvbuff_t *tvb _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int type) {
687   proto_tree *ext_tree_uli;
688   guint       length;
689 
690   length = tvb_reported_length(tvb);
691   ext_tree_uli = proto_tree_add_subtree(tree, tvb, 0, length, ett_gprscdr_userlocationinformation, NULL, "UserLocationInformation");
692 
693   switch (type) {
694   case 1:
695       /* For GGSN/EGGSN-CDR,
696        * this octet string is a 1:1 copy of the contents (i.e. starting with octet 4) of the
697        * User Location Information (ULI) information element specified in 29.060, ch7.7.51.
698        */
699       dissect_gtp_uli(tvb, 0, actx->pinfo, ext_tree_uli, NULL);
700       break;
701   case 2:
702       /* For SGW/PGW-CDR,
703        * this octet string is a 1:1 copy of the contents (i.e. starting with octet 5) of the
704        * User Location Information (ULI) information element specified in 29.274, ch8.21.
705        */
706       dissect_gtpv2_uli(tvb, actx->pinfo, ext_tree_uli, NULL, length, 0, 0, NULL);
707       break;
708   default:
709       proto_tree_add_expert(ext_tree_uli, actx->pinfo, &ei_gprscdr_not_dissected, tvb, 0, length);
710       break;
711   }
712 
713   return length;
714 }
715 
716 
717 /*--- Included file: packet-gprscdr-fn.c ---*/
718 #line 1 "./asn1/gprscdr/packet-gprscdr-fn.c"
719 
720 
721 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_)722 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_) {
723   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
724                                        NULL);
725 
726   return offset;
727 }
728 
729 
730 
731 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_)732 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_) {
733   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
734                                                 NULL);
735 
736   return offset;
737 }
738 
739 
740 static const value_string gprscdr_CallEventRecordType_vals[] = {
741   {   0, "moCallRecord" },
742   {   1, "mtCallRecord" },
743   {   2, "roamingRecord" },
744   {   3, "incGatewayRecord" },
745   {   4, "outGatewayRecord" },
746   {   5, "transitCallRecord" },
747   {   6, "moSMSRecord" },
748   {   7, "mtSMSRecord" },
749   {   8, "moSMSIWRecord" },
750   {   9, "mtSMSGWRecord" },
751   {  10, "ssActionRecord" },
752   {  11, "hlrIntRecord" },
753   {  12, "locUpdateHLRRecord" },
754   {  13, "locUpdateVLRRecord" },
755   {  14, "commonEquipRecord" },
756   {  15, "moTraceRecord" },
757   {  16, "mtTraceRecord" },
758   {  17, "termCAMELRecord" },
759   {  18, "sgsnPDPRecord" },
760   {  19, "ggsnPDPRecord" },
761   {  20, "sgsnMMRecord" },
762   {  21, "sgsnSMORecord" },
763   {  22, "sgsnSMTRecord" },
764   {  23, "mtLCSRecord" },
765   {  24, "moLCSRecord" },
766   {  25, "niLCSRecord" },
767   {  26, "sgsnMtLCSRecord" },
768   {  27, "sgsnMoLCSRecord" },
769   {  28, "sgsnNiLCSRecord" },
770   {  29, "mmO1SRecord" },
771   {  30, "mmO4FRqRecord" },
772   {  31, "mmO4FRsRecord" },
773   {  32, "mmO4DRecord" },
774   {  33, "mmO1DRecord" },
775   {  34, "mmO4RRecord" },
776   {  35, "mmO1RRecord" },
777   {  36, "mmOMDRecord" },
778   {  37, "mmR4FRecord" },
779   {  38, "mmR1NRqRecord" },
780   {  39, "mmR1NRsRecord" },
781   {  40, "mmR1RtRecord" },
782   {  42, "mmR1AFRecord" },
783   {  43, "mmR4DRqRecord" },
784   {  44, "mmR4DRsRecord" },
785   {  45, "mmR1RRRecord" },
786   {  46, "mmR4RRqRecord" },
787   {  47, "mmR4RRsRecord" },
788   {  48, "mmRMDRecord" },
789   {  49, "mmFRecord" },
790   {  50, "mmBx1SRecord" },
791   {  51, "mmBx1VRecord" },
792   {  52, "mmBx1URecord" },
793   {  53, "mmBx1DRecord" },
794   {  54, "mM7SRecord" },
795   {  55, "mM7DRqRecord" },
796   {  56, "mM7DRsRecord" },
797   {  57, "mM7CRecord" },
798   {  58, "mM7RRecord" },
799   {  59, "mM7DRRqRecord" },
800   {  60, "mM7DRRsRecord" },
801   {  61, "mM7RRqRecord" },
802   {  62, "mM7RRsRecord" },
803   {  63, "s-CSCFRecord" },
804   {  64, "p-CSCFRecord" },
805   {  65, "i-CSCFRecord" },
806   {  66, "mRFCRecord" },
807   {  67, "mGCFRecord" },
808   {  68, "bGCFRecord" },
809   {  69, "aSRecord" },
810   {  70, "egsnPDPRecord" },
811   {  71, "lCSGMORecord" },
812   {  72, "lCSRGMTRecord" },
813   {  73, "lCSHGMTRecord" },
814   {  74, "lCSVGMTRecord" },
815   {  75, "lCSGNIRecord" },
816   {  76, "sgsnMBMSRecord" },
817   {  77, "ggsnMBMSRecord" },
818   {  78, "subBMSCRecord" },
819   {  79, "contentBMSCRecord" },
820   {  80, "pPFRecord" },
821   {  81, "cPFRecord" },
822   { 0, NULL }
823 };
824 
825 
826 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_)827 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_) {
828   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
829                                                 NULL);
830 
831   return offset;
832 }
833 
834 
835 
836 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_)837 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_) {
838   offset = dissect_gprscdr_BCDDirectoryNumber(implicit_tag, tvb, offset, actx, tree, hf_index);
839 
840   return offset;
841 }
842 
843 
844 
845 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_)846 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_) {
847   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
848                                        NULL);
849 
850   return offset;
851 }
852 
853 
854 static const value_string gprscdr_CauseForRecClosing_vals[] = {
855   {   0, "normalRelease" },
856   {   1, "partialRecord" },
857   {   4, "abnormalRelease" },
858   {   5, "cAMELInitCallRelease" },
859   {  16, "volumeLimit" },
860   {  17, "timeLimit" },
861   {  18, "servingNodeChange" },
862   {  19, "maxChangeCond" },
863   {  20, "managementIntervention" },
864   {  21, "intraSGSNIntersystemChange" },
865   {  22, "rATChange" },
866   {  23, "mSTimeZoneChange" },
867   {  24, "sGSNPLMNIDChange" },
868   {  25, "sGWChange" },
869   {  26, "aPNAMBRChange" },
870   {  27, "mOExceptionDataCounterReceipt" },
871   {  52, "unauthorizedRequestingNetwork" },
872   {  53, "unauthorizedLCSClient" },
873   {  54, "positionMethodFailure" },
874   {  58, "unknownOrUnreachableLCSClient" },
875   {  59, "listofDownstreamNodeChange" },
876   { 0, NULL }
877 };
878 
879 
880 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_)881 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_) {
882   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
883                                                 NULL);
884 
885   return offset;
886 }
887 
888 
889 
890 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_)891 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_) {
892   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
893                                                 NULL);
894 
895   return offset;
896 }
897 
898 
899 
900 static int
dissect_gprscdr_CivicAddressInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)901 dissect_gprscdr_CivicAddressInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
902   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
903                                        NULL);
904 
905   return offset;
906 }
907 
908 
909 static const value_string gprscdr_CNIPMulticastDistribution_vals[] = {
910   {   0, "nO-IP-MULTICAST" },
911   {   1, "iP-MULTICAST" },
912   { 0, NULL }
913 };
914 
915 
916 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_)917 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_) {
918   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
919                                   NULL);
920 
921   return offset;
922 }
923 
924 
925 
926 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_)927 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_) {
928   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
929 
930   return offset;
931 }
932 
933 
934 
935 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_)936 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_) {
937   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
938                                                 NULL);
939 
940   return offset;
941 }
942 
943 
944 
945 static int
dissect_gprscdr_T_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_)946 dissect_gprscdr_T_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_) {
947   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &obj_id);
948 
949   return offset;
950 }
951 
952 
953 
954 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_)955 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_) {
956   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
957 
958   return offset;
959 }
960 
961 
962 
963 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_)964 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_) {
965 #line 54 "./asn1/gprscdr/gprscdr.cnf"
966 
967   proto_tree *ext_tree;
968   ext_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_gprscdr_managementextension_information, NULL, "Information");
969   if (obj_id){
970     offset=call_ber_oid_callback(obj_id, tvb, offset, actx->pinfo, ext_tree, NULL);
971   }else{
972     proto_tree_add_expert(ext_tree, actx->pinfo, &ei_gprscdr_not_dissected, tvb, offset, -1);
973   }
974 
975 
976 
977   return offset;
978 }
979 
980 
981 static const ber_sequence_t ManagementExtension_sequence[] = {
982   { &hf_gprscdr_identifier  , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_gprscdr_T_identifier },
983   { &hf_gprscdr_significance, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_BOOLEAN },
984   { &hf_gprscdr_information , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_T_information },
985   { NULL, 0, 0, 0, NULL }
986 };
987 
988 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_)989 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_) {
990   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
991                                    ManagementExtension_sequence, hf_index, ett_gprscdr_ManagementExtension);
992 
993   return offset;
994 }
995 
996 
997 static const value_string gprscdr_Diagnostics_vals[] = {
998   {   0, "gsm0408Cause" },
999   {   1, "gsm0902MapErrorValue" },
1000   {   2, "itu-tQ767Cause" },
1001   {   3, "networkSpecificCause" },
1002   {   4, "manufacturerSpecificCause" },
1003   {   5, "positionMethodFailureCause" },
1004   {   6, "unauthorizedLCSClientCause" },
1005   {   7, "diameterResultCodeAndExperimentalResult" },
1006   { 0, NULL }
1007 };
1008 
1009 static const ber_choice_t Diagnostics_choice[] = {
1010   {   0, &hf_gprscdr_gsm0408Cause, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
1011   {   1, &hf_gprscdr_gsm0902MapErrorValue, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
1012   {   2, &hf_gprscdr_itu_tQ767Cause, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
1013   {   3, &hf_gprscdr_networkSpecificCause, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtension },
1014   {   4, &hf_gprscdr_manufacturerSpecificCause, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtension },
1015   {   5, &hf_gprscdr_positionMethodFailureCause, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gsm_map_er_PositionMethodFailure_Diagnostic },
1016   {   6, &hf_gprscdr_unauthorizedLCSClientCause, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gsm_map_er_UnauthorizedLCSClient_Diagnostic },
1017   {   7, &hf_gprscdr_diameterResultCodeAndExperimentalResult, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
1018   { 0, NULL, 0, 0, 0, NULL }
1019 };
1020 
1021 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_)1022 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_) {
1023   offset = dissect_ber_choice(actx, tree, tvb, offset,
1024                                  Diagnostics_choice, hf_index, ett_gprscdr_Diagnostics,
1025                                  NULL);
1026 
1027   return offset;
1028 }
1029 
1030 
1031 
1032 static int
dissect_gprscdr_DiameterIdentity(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1033 dissect_gprscdr_DiameterIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1034   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1035                                        NULL);
1036 
1037   return offset;
1038 }
1039 
1040 
1041 
1042 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_)1043 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_) {
1044 #line 130 "./asn1/gprscdr/gprscdr.cnf"
1045   tvbuff_t *parameter_tvb;
1046   proto_tree *subtree;
1047 
1048   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1049                                        &parameter_tvb);
1050 
1051 
1052   if (!parameter_tvb)
1053     return offset;
1054 
1055   subtree = proto_item_add_subtree(actx->created_item, ett_gprscdr_plmn_id);
1056   dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, E212_NONE, TRUE);
1057 
1058 
1059 
1060   return offset;
1061 }
1062 
1063 
1064 
1065 static int
dissect_gprscdr_EutraCellId(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1066 dissect_gprscdr_EutraCellId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1067   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String,
1068                                             actx, tree, tvb, offset, hf_index,
1069                                             NULL);
1070 
1071   return offset;
1072 }
1073 
1074 
1075 
1076 static int
dissect_gprscdr_Nid(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1077 dissect_gprscdr_Nid(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1078   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String,
1079                                             actx, tree, tvb, offset, hf_index,
1080                                             NULL);
1081 
1082   return offset;
1083 }
1084 
1085 
1086 static const ber_sequence_t Ecgi_sequence[] = {
1087   { &hf_gprscdr_plmnId      , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
1088   { &hf_gprscdr_eutraCellId , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_EutraCellId },
1089   { &hf_gprscdr_nid         , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_Nid },
1090   { NULL, 0, 0, 0, NULL }
1091 };
1092 
1093 static int
dissect_gprscdr_Ecgi(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1094 dissect_gprscdr_Ecgi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1095   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1096                                    Ecgi_sequence, hf_index, ett_gprscdr_Ecgi);
1097 
1098   return offset;
1099 }
1100 
1101 
1102 
1103 static int
dissect_gprscdr_RANNASCause(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1104 dissect_gprscdr_RANNASCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1105   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1106                                        NULL);
1107 
1108   return offset;
1109 }
1110 
1111 
1112 static const ber_sequence_t SEQUENCE_OF_RANNASCause_sequence_of[1] = {
1113   { &hf_gprscdr_rANNASCause_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gprscdr_RANNASCause },
1114 };
1115 
1116 static int
dissect_gprscdr_SEQUENCE_OF_RANNASCause(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1117 dissect_gprscdr_SEQUENCE_OF_RANNASCause(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1118   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1119                                       SEQUENCE_OF_RANNASCause_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_RANNASCause);
1120 
1121   return offset;
1122 }
1123 
1124 
1125 static const ber_sequence_t EnhancedDiagnostics_sequence[] = {
1126   { &hf_gprscdr_rANNASCause , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_RANNASCause },
1127   { NULL, 0, 0, 0, NULL }
1128 };
1129 
1130 static int
dissect_gprscdr_EnhancedDiagnostics(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1131 dissect_gprscdr_EnhancedDiagnostics(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1132   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1133                                    EnhancedDiagnostics_sequence, hf_index, ett_gprscdr_EnhancedDiagnostics);
1134 
1135   return offset;
1136 }
1137 
1138 
1139 
1140 static int
dissect_gprscdr_IPBinV4Address(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1141 dissect_gprscdr_IPBinV4Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1142   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1143                                        NULL);
1144 
1145   return offset;
1146 }
1147 
1148 
1149 
1150 static int
dissect_gprscdr_IPBinV6Address(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1151 dissect_gprscdr_IPBinV6Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1152   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1153                                        NULL);
1154 
1155   return offset;
1156 }
1157 
1158 
1159 
1160 static int
dissect_gprscdr_PDPAddressPrefixLength(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1161 dissect_gprscdr_PDPAddressPrefixLength(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1162   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1163                                                 NULL);
1164 
1165   return offset;
1166 }
1167 
1168 
1169 static const ber_sequence_t IPBinV6AddressWithPrefixLength_sequence[] = {
1170   { &hf_gprscdr_iPBinV6Address, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gprscdr_IPBinV6Address },
1171   { &hf_gprscdr_pDPAddressPrefixLength, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_gprscdr_PDPAddressPrefixLength },
1172   { NULL, 0, 0, 0, NULL }
1173 };
1174 
1175 static int
dissect_gprscdr_IPBinV6AddressWithPrefixLength(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1176 dissect_gprscdr_IPBinV6AddressWithPrefixLength(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1177   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1178                                    IPBinV6AddressWithPrefixLength_sequence, hf_index, ett_gprscdr_IPBinV6AddressWithPrefixLength);
1179 
1180   return offset;
1181 }
1182 
1183 
1184 static const value_string gprscdr_IPBinV6AddressWithOrWithoutPrefixLength_vals[] = {
1185   {   1, "iPBinV6Address" },
1186   {   4, "iPBinV6AddressWithPrefix" },
1187   { 0, NULL }
1188 };
1189 
1190 static const ber_choice_t IPBinV6AddressWithOrWithoutPrefixLength_choice[] = {
1191   {   1, &hf_gprscdr_iPBinV6Address, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_IPBinV6Address },
1192   {   4, &hf_gprscdr_iPBinV6AddressWithPrefix, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gprscdr_IPBinV6AddressWithPrefixLength },
1193   { 0, NULL, 0, 0, 0, NULL }
1194 };
1195 
1196 static int
dissect_gprscdr_IPBinV6AddressWithOrWithoutPrefixLength(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1197 dissect_gprscdr_IPBinV6AddressWithOrWithoutPrefixLength(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1198   offset = dissect_ber_choice(actx, tree, tvb, offset,
1199                                  IPBinV6AddressWithOrWithoutPrefixLength_choice, hf_index, ett_gprscdr_IPBinV6AddressWithOrWithoutPrefixLength,
1200                                  NULL);
1201 
1202   return offset;
1203 }
1204 
1205 
1206 static const value_string gprscdr_IPBinaryAddress_vals[] = {
1207   {   0, "iPBinV4Address" },
1208   {   1, "iPBinV6Address" },
1209   { 0, NULL }
1210 };
1211 
1212 static const ber_choice_t IPBinaryAddress_choice[] = {
1213   {   0, &hf_gprscdr_iPBinV4Address, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_IPBinV4Address },
1214   {   1, &hf_gprscdr_iPBinV6Address_choice, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gprscdr_IPBinV6AddressWithOrWithoutPrefixLength },
1215   { 0, NULL, 0, 0, 0, NULL }
1216 };
1217 
1218 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_)1219 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_) {
1220   offset = dissect_ber_choice(actx, tree, tvb, offset,
1221                                  IPBinaryAddress_choice, hf_index, ett_gprscdr_IPBinaryAddress,
1222                                  NULL);
1223 
1224   return offset;
1225 }
1226 
1227 
1228 
1229 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_)1230 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_) {
1231   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
1232                                             actx, tree, tvb, offset, hf_index,
1233                                             NULL);
1234 
1235   return offset;
1236 }
1237 
1238 
1239 
1240 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_)1241 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_) {
1242   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
1243                                             actx, tree, tvb, offset, hf_index,
1244                                             NULL);
1245 
1246   return offset;
1247 }
1248 
1249 
1250 static const value_string gprscdr_IPTextRepresentedAddress_vals[] = {
1251   {   2, "iPTextV4Address" },
1252   {   3, "iPTextV6Address" },
1253   { 0, NULL }
1254 };
1255 
1256 static const ber_choice_t IPTextRepresentedAddress_choice[] = {
1257   {   2, &hf_gprscdr_iPTextV4Address, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_IA5String_SIZE_7_15 },
1258   {   3, &hf_gprscdr_iPTextV6Address, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_IA5String_SIZE_15_45 },
1259   { 0, NULL, 0, 0, 0, NULL }
1260 };
1261 
1262 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_)1263 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_) {
1264   offset = dissect_ber_choice(actx, tree, tvb, offset,
1265                                  IPTextRepresentedAddress_choice, hf_index, ett_gprscdr_IPTextRepresentedAddress,
1266                                  NULL);
1267 
1268   return offset;
1269 }
1270 
1271 
1272 static const value_string gprscdr_IPAddress_vals[] = {
1273   { -1/*choice*/, "iPBinaryAddress" },
1274   { -1/*choice*/, "iPTextRepresentedAddress" },
1275   { 0, NULL }
1276 };
1277 
1278 static const ber_choice_t IPAddress_choice[] = {
1279   { -1/*choice*/, &hf_gprscdr_iPBinaryAddress, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gprscdr_IPBinaryAddress },
1280   { -1/*choice*/, &hf_gprscdr_iPTextRepresentedAddress, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_gprscdr_IPTextRepresentedAddress },
1281   { 0, NULL, 0, 0, 0, NULL }
1282 };
1283 
1284 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_)1285 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_) {
1286   offset = dissect_ber_choice(actx, tree, tvb, offset,
1287                                  IPAddress_choice, hf_index, ett_gprscdr_IPAddress,
1288                                  NULL);
1289 
1290   return offset;
1291 }
1292 
1293 
1294 
1295 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_)1296 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_) {
1297   offset = dissect_gprscdr_IPAddress(implicit_tag, tvb, offset, actx, tree, hf_index);
1298 
1299   return offset;
1300 }
1301 
1302 
1303 
1304 static int
dissect_gprscdr_GraphicString(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1305 dissect_gprscdr_GraphicString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1306   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
1307                                             actx, tree, tvb, offset, hf_index,
1308                                             NULL);
1309 
1310   return offset;
1311 }
1312 
1313 
1314 
1315 static int
dissect_gprscdr_UTF8String(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1316 dissect_gprscdr_UTF8String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1317   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String,
1318                                             actx, tree, tvb, offset, hf_index,
1319                                             NULL);
1320 
1321   return offset;
1322 }
1323 
1324 
1325 static const value_string gprscdr_InvolvedParty_vals[] = {
1326   {   0, "sIP-URI" },
1327   {   1, "tEL-URI" },
1328   {   2, "uRN" },
1329   {   3, "iSDN-E164" },
1330   {   4, "externalId" },
1331   { 0, NULL }
1332 };
1333 
1334 static const ber_choice_t InvolvedParty_choice[] = {
1335   {   0, &hf_gprscdr_sIP_URI     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_GraphicString },
1336   {   1, &hf_gprscdr_tEL_URI     , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_GraphicString },
1337   {   2, &hf_gprscdr_uRN         , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_GraphicString },
1338   {   3, &hf_gprscdr_iSDN_E164   , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_GraphicString },
1339   {   4, &hf_gprscdr_externalId  , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gprscdr_UTF8String },
1340   { 0, NULL, 0, 0, 0, NULL }
1341 };
1342 
1343 static int
dissect_gprscdr_InvolvedParty(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1344 dissect_gprscdr_InvolvedParty(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1345   offset = dissect_ber_choice(actx, tree, tvb, offset,
1346                                  InvolvedParty_choice, hf_index, ett_gprscdr_InvolvedParty,
1347                                  NULL);
1348 
1349   return offset;
1350 }
1351 
1352 
1353 
1354 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_)1355 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_) {
1356   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1357                                        NULL);
1358 
1359   return offset;
1360 }
1361 
1362 
1363 static const ber_sequence_t LCSClientIdentity_sequence[] = {
1364   { &hf_gprscdr_lcsClientExternalID, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientExternalID },
1365   { &hf_gprscdr_lcsClientDialedByMS, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
1366   { &hf_gprscdr_lcsClientInternalID, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_LCSClientInternalID },
1367   { NULL, 0, 0, 0, NULL }
1368 };
1369 
1370 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_)1371 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_) {
1372   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1373                                    LCSClientIdentity_sequence, hf_index, ett_gprscdr_LCSClientIdentity);
1374 
1375   return offset;
1376 }
1377 
1378 
1379 
1380 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_)1381 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_) {
1382   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1383                                        NULL);
1384 
1385   return offset;
1386 }
1387 
1388 
1389 static int * const LevelOfCAMELService_bits[] = {
1390   &hf_gprscdr_LevelOfCAMELService_basic,
1391   &hf_gprscdr_LevelOfCAMELService_callDurationSupervision,
1392   &hf_gprscdr_LevelOfCAMELService_onlineCharging,
1393   NULL
1394 };
1395 
1396 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_)1397 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_) {
1398   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1399                                     LevelOfCAMELService_bits, 3, hf_index, ett_gprscdr_LevelOfCAMELService,
1400                                     NULL);
1401 
1402   return offset;
1403 }
1404 
1405 
1406 
1407 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_)1408 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_) {
1409   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1410                                                 NULL);
1411 
1412   return offset;
1413 }
1414 
1415 
1416 
1417 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_)1418 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_) {
1419   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1420                                        NULL);
1421 
1422   return offset;
1423 }
1424 
1425 
1426 
1427 static int
dissect_gprscdr_MCC_MNC(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1428 dissect_gprscdr_MCC_MNC(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1429   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1430                                        NULL);
1431 
1432   return offset;
1433 }
1434 
1435 
1436 static const ber_sequence_t LocationAreaAndCell_sequence[] = {
1437   { &hf_gprscdr_locationAreaCode, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode },
1438   { &hf_gprscdr_cellId      , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId },
1439   { &hf_gprscdr_mCC_MNC     , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MCC_MNC },
1440   { NULL, 0, 0, 0, NULL }
1441 };
1442 
1443 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_)1444 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_) {
1445   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1446                                    LocationAreaAndCell_sequence, hf_index, ett_gprscdr_LocationAreaAndCell);
1447 
1448   return offset;
1449 }
1450 
1451 
1452 static const ber_sequence_t ManagementExtensions_set_of[1] = {
1453   { &hf_gprscdr_ManagementExtensions_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ManagementExtension },
1454 };
1455 
1456 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_)1457 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_) {
1458   offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1459                                  ManagementExtensions_set_of, hf_index, ett_gprscdr_ManagementExtensions);
1460 
1461   return offset;
1462 }
1463 
1464 
1465 static const value_string gprscdr_MBMS2G3GIndicator_vals[] = {
1466   {   0, "twoG" },
1467   {   1, "threeG" },
1468   {   2, "twoG-AND-threeG" },
1469   { 0, NULL }
1470 };
1471 
1472 
1473 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_)1474 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_) {
1475   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1476                                   NULL);
1477 
1478   return offset;
1479 }
1480 
1481 
1482 
1483 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_)1484 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_) {
1485   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1486                                        NULL);
1487 
1488   return offset;
1489 }
1490 
1491 
1492 
1493 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_)1494 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_) {
1495   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1496                                        NULL);
1497 
1498   return offset;
1499 }
1500 
1501 
1502 static const value_string gprscdr_MBMSServiceType_vals[] = {
1503   {   0, "mULTICAST" },
1504   {   1, "bROADCAST" },
1505   { 0, NULL }
1506 };
1507 
1508 
1509 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_)1510 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_) {
1511   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1512                                   NULL);
1513 
1514   return offset;
1515 }
1516 
1517 
1518 static const value_string gprscdr_MBMSUserServiceType_vals[] = {
1519   {   0, "dOWNLOAD" },
1520   {   1, "sTREAMING" },
1521   { 0, NULL }
1522 };
1523 
1524 
1525 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_)1526 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_) {
1527   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1528                                   NULL);
1529 
1530   return offset;
1531 }
1532 
1533 
1534 
1535 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_)1536 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_) {
1537   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1538                                        NULL);
1539 
1540   return offset;
1541 }
1542 
1543 
1544 
1545 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_)1546 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_) {
1547   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1548                                        NULL);
1549 
1550   return offset;
1551 }
1552 
1553 
1554 
1555 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_)1556 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_) {
1557   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1558                                        NULL);
1559 
1560   return offset;
1561 }
1562 
1563 
1564 
1565 static int
dissect_gprscdr_MBMSTime(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1566 dissect_gprscdr_MBMSTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1567   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1568                                        NULL);
1569 
1570   return offset;
1571 }
1572 
1573 
1574 static const ber_sequence_t MBMSInformation_set[] = {
1575   { &hf_gprscdr_tMGI        , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TMGI },
1576   { &hf_gprscdr_mBMSSessionIdentity, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSSessionIdentity },
1577   { &hf_gprscdr_mBMSServiceType, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSServiceType },
1578   { &hf_gprscdr_mBMSUserServiceType, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSUserServiceType },
1579   { &hf_gprscdr_mBMS2G3GIndicator, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMS2G3GIndicator },
1580   { &hf_gprscdr_fileRepairSupported, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_BOOLEAN },
1581   { &hf_gprscdr_rAI         , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
1582   { &hf_gprscdr_mBMSServiceArea, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSServiceArea },
1583   { &hf_gprscdr_requiredMBMSBearerCaps, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RequiredMBMSBearerCapabilities },
1584   { &hf_gprscdr_mBMSGWAddress, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
1585   { &hf_gprscdr_cNIPMulticastDistribution, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNIPMulticastDistribution },
1586   { &hf_gprscdr_mBMSDataTransferStart, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSTime },
1587   { &hf_gprscdr_mBMSDataTransferStop, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSTime },
1588   { NULL, 0, 0, 0, NULL }
1589 };
1590 
1591 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_)1592 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_) {
1593   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1594                               MBMSInformation_set, hf_index, ett_gprscdr_MBMSInformation);
1595 
1596   return offset;
1597 }
1598 
1599 
1600 
1601 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_)1602 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_) {
1603   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1604                                        NULL);
1605 
1606   return offset;
1607 }
1608 
1609 
1610 
1611 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_)1612 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_) {
1613   offset = dissect_gsm_map_ISDN_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
1614 
1615   return offset;
1616 }
1617 
1618 
1619 
1620 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_)1621 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_) {
1622 #line 103 "./asn1/gprscdr/gprscdr.cnf"
1623 /*
1624  *
1625  * 1.Octet: Time Zone and 2. Octet: Daylight saving time, see TS 29.060 [75]
1626  */
1627   tvbuff_t *parameter_tvb;
1628   guint8 data, data2;
1629   char sign;
1630 
1631   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1632                                        &parameter_tvb);
1633 
1634 
1635   if (!parameter_tvb)
1636     return offset;
1637 
1638   data = tvb_get_guint8(parameter_tvb, 0);
1639   sign = (data & 0x08) ? '-' : '+';
1640   data = (data >> 4) + (data & 0x07) * 10;
1641 
1642   data2 = tvb_get_guint8(tvb, 1) & 0x3;
1643 
1644   proto_item_append_text(actx->created_item, " (GMT %c %d hours %d minutes %s)",
1645                          sign,
1646                          data / 4,
1647                          data % 4 * 15,
1648                          val_to_str_const(data2, gprscdr_daylight_saving_time_vals, "Unknown")
1649                         );
1650 
1651 
1652 
1653   return offset;
1654 }
1655 
1656 
1657 
1658 static int
dissect_gprscdr_NrCellId(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1659 dissect_gprscdr_NrCellId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1660   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTF8String,
1661                                             actx, tree, tvb, offset, hf_index,
1662                                             NULL);
1663 
1664   return offset;
1665 }
1666 
1667 
1668 static const ber_sequence_t Ncgi_sequence[] = {
1669   { &hf_gprscdr_plmnId      , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
1670   { &hf_gprscdr_nrCellId    , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_NrCellId },
1671   { &hf_gprscdr_nid         , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_Nid },
1672   { NULL, 0, 0, 0, NULL }
1673 };
1674 
1675 static int
dissect_gprscdr_Ncgi(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1676 dissect_gprscdr_Ncgi(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1677   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1678                                    Ncgi_sequence, hf_index, ett_gprscdr_Ncgi);
1679 
1680   return offset;
1681 }
1682 
1683 
1684 
1685 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_)1686 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_) {
1687   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
1688                                             actx, tree, tvb, offset, hf_index,
1689                                             NULL);
1690 
1691   return offset;
1692 }
1693 
1694 
1695 static const value_string gprscdr_PDPAddress_vals[] = {
1696   {   0, "iPAddress" },
1697   { 0, NULL }
1698 };
1699 
1700 static const ber_choice_t PDPAddress_choice[] = {
1701   {   0, &hf_gprscdr_iPAddress   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_IPAddress },
1702   { 0, NULL, 0, 0, 0, NULL }
1703 };
1704 
1705 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_)1706 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_) {
1707   offset = dissect_ber_choice(actx, tree, tvb, offset,
1708                                  PDPAddress_choice, hf_index, ett_gprscdr_PDPAddress,
1709                                  NULL);
1710 
1711   return offset;
1712 }
1713 
1714 
1715 
1716 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_)1717 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_) {
1718   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1719                                        NULL);
1720 
1721   return offset;
1722 }
1723 
1724 
1725 static const ber_sequence_t PSCellInformation_sequence[] = {
1726   { &hf_gprscdr_nRcgi       , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_Ncgi },
1727   { &hf_gprscdr_ecgi        , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_Ecgi },
1728   { NULL, 0, 0, 0, NULL }
1729 };
1730 
1731 static int
dissect_gprscdr_PSCellInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1732 dissect_gprscdr_PSCellInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1733   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1734                                    PSCellInformation_sequence, hf_index, ett_gprscdr_PSCellInformation);
1735 
1736   return offset;
1737 }
1738 
1739 
1740 
1741 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_)1742 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_) {
1743   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1744                                                 NULL);
1745 
1746   return offset;
1747 }
1748 
1749 
1750 
1751 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_)1752 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_) {
1753   offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
1754 
1755   return offset;
1756 }
1757 
1758 
1759 static const value_string gprscdr_RecordType_vals[] = {
1760   {   0, "moCallRecord" },
1761   {   1, "mtCallRecord" },
1762   {   2, "roamingRecord" },
1763   {   3, "incGatewayRecord" },
1764   {   4, "outGatewayRecord" },
1765   {   5, "transitCallRecord" },
1766   {   6, "moSMSRecord" },
1767   {   7, "mtSMSRecord" },
1768   {   8, "moSMSIWRecord" },
1769   {   9, "mtSMSGWRecord" },
1770   {  10, "ssActionRecord" },
1771   {  11, "hlrIntRecord" },
1772   {  12, "locUpdateHLRRecord" },
1773   {  13, "locUpdateVLRRecord" },
1774   {  14, "commonEquipRecord" },
1775   {  15, "moTraceRecord" },
1776   {  16, "mtTraceRecord" },
1777   {  17, "termCAMELRecord" },
1778   {  18, "sgsnPDPRecord" },
1779   {  20, "sgsnMMRecord" },
1780   {  21, "sgsnSMORecord" },
1781   {  22, "sgsnSMTRecord" },
1782   {  23, "mtLCSRecord" },
1783   {  24, "moLCSRecord" },
1784   {  25, "niLCSRecord" },
1785   {  26, "sgsnMTLCSRecord" },
1786   {  27, "sgsnMOLCSRecord" },
1787   {  28, "sgsnNILCSRecord" },
1788   {  30, "mMO1SRecord" },
1789   {  31, "mMO4FRqRecord" },
1790   {  32, "mMO4FRsRecord" },
1791   {  33, "mMO4DRecord" },
1792   {  34, "mMO1DRecord" },
1793   {  35, "mMO4RRecord" },
1794   {  36, "mMO1RRecord" },
1795   {  37, "mMOMDRecord" },
1796   {  38, "mMR4FRecord" },
1797   {  39, "mMR1NRqRecord" },
1798   {  40, "mMR1NRsRecord" },
1799   {  41, "mMR1RtRecord" },
1800   {  42, "mMR1AFRecord" },
1801   {  43, "mMR4DRqRecord" },
1802   {  44, "mMR4DRsRecord" },
1803   {  45, "mMR1RRRecord" },
1804   {  46, "mMR4RRqRecord" },
1805   {  47, "mMR4RRsRecord" },
1806   {  48, "mMRMDRecord" },
1807   {  49, "mMFRecord" },
1808   {  50, "mMBx1SRecord" },
1809   {  51, "mMBx1VRecord" },
1810   {  52, "mMBx1URecord" },
1811   {  53, "mMBx1DRecord" },
1812   {  54, "mM7SRecord" },
1813   {  55, "mM7DRqRecord" },
1814   {  56, "mM7DRsRecord" },
1815   {  57, "mM7CRecord" },
1816   {  58, "mM7RRecord" },
1817   {  59, "mM7DRRqRecord" },
1818   {  60, "mM7DRRsRecord" },
1819   {  61, "mM7RRqRecord" },
1820   {  62, "mM7RRsRecord" },
1821   {  63, "sCSCFRecord" },
1822   {  64, "pCSCFRecord" },
1823   {  65, "iCSCFRecord" },
1824   {  66, "mRFCRecord" },
1825   {  67, "mGCFRecord" },
1826   {  68, "bGCFRecord" },
1827   {  69, "aSRecord" },
1828   {  70, "eCSCFRecord" },
1829   {  82, "iBCFRecord" },
1830   {  89, "tRFRecord" },
1831   {  90, "tFRecord" },
1832   {  91, "aTCFRecord" },
1833   {  71, "lCSGMORecord" },
1834   {  72, "lCSRGMTRecord" },
1835   {  73, "lCSHGMTRecord" },
1836   {  74, "lCSVGMTRecord" },
1837   {  75, "lCSGNIRecord" },
1838   {  76, "sgsnMBMSRecord" },
1839   {  77, "ggsnMBMSRecord" },
1840   {  86, "gwMBMSRecord" },
1841   {  78, "sUBBMSCRecord" },
1842   {  79, "cONTENTBMSCRecord" },
1843   {  80, "pPFRecord" },
1844   {  81, "cPFRecord" },
1845   {  84, "sGWRecord" },
1846   {  85, "pGWRecord" },
1847   {  92, "tDFRecord" },
1848   {  95, "iPERecord" },
1849   {  96, "ePDGRecord" },
1850   {  97, "tWAGRecord" },
1851   {  83, "mMTelRecord" },
1852   {  87, "mSCsRVCCRecord" },
1853   {  88, "mMTRFRecord" },
1854   {  99, "iCSRegisterRecord" },
1855   {  93, "sCSMORecord" },
1856   {  94, "sCSMTRecord" },
1857   { 100, "pFDDRecord" },
1858   { 101, "pFEDRecord" },
1859   { 102, "pFDCRecord" },
1860   { 103, "mECORecord" },
1861   { 104, "mERERecord" },
1862   { 105, "cPDTSCERecord" },
1863   { 106, "cPDTSNNRecord" },
1864   { 110, "sCDVTT4Record" },
1865   { 111, "sCSMOT4Record" },
1866   { 112, "iSMSMORecord" },
1867   { 113, "iSMSMTRecord" },
1868   { 120, "eASCERecord" },
1869   { 200, "chargingFunctionRecord" },
1870   { 0, NULL }
1871 };
1872 
1873 
1874 static int
dissect_gprscdr_RecordType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1875 dissect_gprscdr_RecordType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1876   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1877                                                 NULL);
1878 
1879   return offset;
1880 }
1881 
1882 
1883 static const ber_sequence_t SCSASAddress_set[] = {
1884   { &hf_gprscdr_sCSAddress  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_IPAddress },
1885   { &hf_gprscdr_sCSRealm    , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_DiameterIdentity },
1886   { NULL, 0, 0, 0, NULL }
1887 };
1888 
1889 static int
dissect_gprscdr_SCSASAddress(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1890 dissect_gprscdr_SCSASAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1891   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1892                               SCSASAddress_set, hf_index, ett_gprscdr_SCSASAddress);
1893 
1894   return offset;
1895 }
1896 
1897 
1898 static const ber_sequence_t ServiceSpecificInfo_sequence[] = {
1899   { &hf_gprscdr_serviceSpecificData, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_GraphicString },
1900   { &hf_gprscdr_serviceSpecificType, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
1901   { NULL, 0, 0, 0, NULL }
1902 };
1903 
1904 static int
dissect_gprscdr_ServiceSpecificInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1905 dissect_gprscdr_ServiceSpecificInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1906   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1907                                    ServiceSpecificInfo_sequence, hf_index, ett_gprscdr_ServiceSpecificInfo);
1908 
1909   return offset;
1910 }
1911 
1912 
1913 
1914 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_)1915 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_) {
1916   offset = dissect_gprscdr_Diagnostics(implicit_tag, tvb, offset, actx, tree, hf_index);
1917 
1918   return offset;
1919 }
1920 
1921 
1922 
1923 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_)1924 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_) {
1925   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1926                                        NULL);
1927 
1928   return offset;
1929 }
1930 
1931 
1932 static const value_string gprscdr_SubscriptionIDType_vals[] = {
1933   {   0, "eND-USER-E164" },
1934   {   1, "eND-USER-IMSI" },
1935   {   2, "eND-USER-SIP-URI" },
1936   {   3, "eND-USER-NAI" },
1937   {   4, "eND-USER-PRIVATE" },
1938   { 0, NULL }
1939 };
1940 
1941 
1942 static int
dissect_gprscdr_SubscriptionIDType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1943 dissect_gprscdr_SubscriptionIDType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1944   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1945                                   NULL);
1946 
1947   return offset;
1948 }
1949 
1950 
1951 static const ber_sequence_t SubscriptionID_set[] = {
1952   { &hf_gprscdr_subscriptionIDType, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_SubscriptionIDType },
1953   { &hf_gprscdr_subscriptionIDData, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_UTF8String },
1954   { NULL, 0, 0, 0, NULL }
1955 };
1956 
1957 static int
dissect_gprscdr_SubscriptionID(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1958 dissect_gprscdr_SubscriptionID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1959   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1960                               SubscriptionID_set, hf_index, ett_gprscdr_SubscriptionID);
1961 
1962   return offset;
1963 }
1964 
1965 
1966 static const value_string gprscdr_ThreeGPPPSDataOffStatus_vals[] = {
1967   {   0, "active" },
1968   {   1, "inactive" },
1969   { 0, NULL }
1970 };
1971 
1972 
1973 static int
dissect_gprscdr_ThreeGPPPSDataOffStatus(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)1974 dissect_gprscdr_ThreeGPPPSDataOffStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1975   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1976                                   NULL);
1977 
1978   return offset;
1979 }
1980 
1981 
1982 
1983 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_)1984 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_) {
1985 #line 64 "./asn1/gprscdr/gprscdr.cnf"
1986 /*
1987  *
1988  * The contents of this field are a compact form of the UTCTime format
1989  * containing local time plus an offset to universal time. Binary coded
1990  * decimal encoding is employed for the digits to reduce the storage and
1991  * transmission overhead
1992  * e.g. YYMMDDhhmmssShhmm
1993  * where
1994  * YY   =       Year 00 to 99           BCD encoded
1995  * MM   =       Month 01 to 12          BCD encoded
1996  * DD   =       Day 01 to 31            BCD encoded
1997  * hh   =       hour 00 to 23           BCD encoded
1998  * mm   =       minute 00 to 59         BCD encoded
1999  * ss   =       second 00 to 59         BCD encoded
2000  * S    =       Sign 0 = "+", "-"       ASCII encoded
2001  * hh   =       hour 00 to 23           BCD encoded
2002  * mm   =       minute 00 to 59         BCD encoded
2003  */
2004 
2005  tvbuff_t *parameter_tvb;
2006 
2007   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2008                                        &parameter_tvb);
2009 
2010 
2011   if (!parameter_tvb)
2012     return offset;
2013 
2014   proto_item_append_text(actx->created_item, " (UTC %x-%x-%x %x:%x:%x %s%x:%x)",
2015                          tvb_get_guint8(parameter_tvb,0),                        /* Year */
2016                          tvb_get_guint8(parameter_tvb,1),                        /* Month */
2017                          tvb_get_guint8(parameter_tvb,2),                        /* Day */
2018                          tvb_get_guint8(parameter_tvb,3),                        /* Hour */
2019                          tvb_get_guint8(parameter_tvb,4),                        /* Minute */
2020                          tvb_get_guint8(parameter_tvb,5),                        /* Second */
2021                          tvb_get_string_enc(actx->pinfo->pool, parameter_tvb,6,1,ENC_ASCII|ENC_NA), /* Sign */
2022                          tvb_get_guint8(parameter_tvb,7),                        /* Hour */
2023                          tvb_get_guint8(parameter_tvb,8)                         /* Minute */
2024                         );
2025 
2026 
2027 
2028   return offset;
2029 }
2030 
2031 
2032 
2033 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_)2034 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_) {
2035   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2036 
2037   return offset;
2038 }
2039 
2040 
2041 
2042 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_)2043 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_) {
2044   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2045                                        NULL);
2046 
2047   return offset;
2048 }
2049 
2050 
2051 
2052 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_)2053 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_) {
2054   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
2055                                             actx, tree, tvb, offset, hf_index,
2056                                             NULL);
2057 
2058   return offset;
2059 }
2060 
2061 
2062 
2063 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_)2064 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_) {
2065 #line 227 "./asn1/gprscdr/gprscdr.cnf"
2066   proto_tree *ext_tree_pdp_pdn_type;
2067   guint length;
2068 
2069   length = tvb_reported_length(tvb);
2070 
2071   if(length == 1) {
2072     /*
2073      * PDN/EPS Bearer
2074      * TS 29.274
2075      * 8.34 PDN Type
2076      */
2077     ext_tree_pdp_pdn_type = proto_tree_add_subtree(tree, tvb, 0, length, ett_gprscdr_pdp_pdn_type, NULL, "pDNType");
2078     dissect_gtpv2_pdn_type(tvb, actx->pinfo, ext_tree_pdp_pdn_type, NULL, length, 0, 0, NULL);
2079     offset = length;
2080   }
2081   else {
2082     /* PDP context
2083      * TS 29.060
2084      * 7.7.27 End User Address
2085      * Octet 4-5
2086      */
2087     ext_tree_pdp_pdn_type = proto_tree_add_subtree(tree, tvb, 0, length, ett_gprscdr_pdp_pdn_type, NULL, "pDPType");
2088     offset = de_sm_pdp_addr(tvb, ext_tree_pdp_pdn_type, actx->pinfo, 0, length, NULL, 0);
2089   }
2090 
2091 
2092 
2093 
2094   return offset;
2095 }
2096 
2097 
2098 
2099 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_)2100 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_) {
2101 #line 142 "./asn1/gprscdr/gprscdr.cnf"
2102 
2103   /* This octet string is a 1:1 copy of the contents (i.e. starting with octet 4) of the
2104    * Quality of Service (QoS) Profile information element specified in 29.060, ch7.7.34.
2105    *
2106    */
2107 
2108   header_field_info *hfi;
2109   hfi = proto_registrar_get_nth(hf_index);
2110 
2111   offset = decode_qos_umts(tvb, 0, actx->pinfo, tree, hfi->name, 0);
2112 
2113 
2114 
2115   return offset;
2116 }
2117 
2118 
2119 
2120 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_)2121 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_) {
2122   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2123                                                 NULL);
2124 
2125   return offset;
2126 }
2127 
2128 
2129 static const value_string gprscdr_ChangeConditionV651_vals[] = {
2130   {   0, "qoSChange" },
2131   {   1, "tariffTime" },
2132   {   2, "recordClosure" },
2133   {   3, "failureHandlingContinueOngoing" },
2134   {   4, "failureHandlingRetryandTerminateOngoing" },
2135   {   5, "failureHandlingTerminateOngoing" },
2136   {   6, "cGI-SAICHange" },
2137   {   7, "rAIChange" },
2138   {   8, "dT-Establishment" },
2139   {   9, "dT-Removal" },
2140   { 0, NULL }
2141 };
2142 
2143 
2144 static int
dissect_gprscdr_ChangeConditionV651(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2145 dissect_gprscdr_ChangeConditionV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2146   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2147                                   NULL);
2148 
2149   return offset;
2150 }
2151 
2152 
2153 
2154 static int
dissect_gprscdr_FailureHandlingContinue(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2155 dissect_gprscdr_FailureHandlingContinue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2156   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2157 
2158   return offset;
2159 }
2160 
2161 
2162 
2163 static int
dissect_gprscdr_T_userLocationInformation_04(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2164 dissect_gprscdr_T_userLocationInformation_04(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2165 #line 187 "./asn1/gprscdr/gprscdr.cnf"
2166 
2167   offset = dissect_gprscdr_uli(tvb, actx, tree, 1);
2168 
2169 
2170 
2171   return offset;
2172 }
2173 
2174 
2175 static const ber_sequence_t ChangeOfCharConditionV651_sequence[] = {
2176   { &hf_gprscdr_qosRequested, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation },
2177   { &hf_gprscdr_qosNegotiated, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation },
2178   { &hf_gprscdr_dataVolumeGPRSUplink, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
2179   { &hf_gprscdr_dataVolumeGPRSDownlink, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
2180   { &hf_gprscdr_changeCondition, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChangeConditionV651 },
2181   { &hf_gprscdr_changeTime  , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
2182   { &hf_gprscdr_failureHandlingContinue, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FailureHandlingContinue },
2183   { &hf_gprscdr_userLocationInformation_04, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_04 },
2184   { NULL, 0, 0, 0, NULL }
2185 };
2186 
2187 static int
dissect_gprscdr_ChangeOfCharConditionV651(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2188 dissect_gprscdr_ChangeOfCharConditionV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2189   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2190                                    ChangeOfCharConditionV651_sequence, hf_index, ett_gprscdr_ChangeOfCharConditionV651);
2191 
2192   return offset;
2193 }
2194 
2195 
2196 static const ber_sequence_t SEQUENCE_OF_ChangeOfCharConditionV651_sequence_of[1] = {
2197   { &hf_gprscdr_listOfTrafficVolumes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeOfCharConditionV651 },
2198 };
2199 
2200 static int
dissect_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2201 dissect_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2202   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2203                                       SEQUENCE_OF_ChangeOfCharConditionV651_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651);
2204 
2205   return offset;
2206 }
2207 
2208 
2209 
2210 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_)2211 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_) {
2212   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2213 
2214   return offset;
2215 }
2216 
2217 
2218 static const value_string gprscdr_CauseForRecClosingV651_vals[] = {
2219   {   0, "normalRelease" },
2220   {   4, "abnormalRelease" },
2221   {   5, "cAMELInitCallRelease" },
2222   {  16, "volumeLimit" },
2223   {  17, "timeLimit" },
2224   {  18, "sGSNChange" },
2225   {  19, "maxChangeCond" },
2226   {  20, "managementIntervention" },
2227   {  21, "intraSGSNIntersystemChange" },
2228   {  22, "rATChange" },
2229   {  23, "mSTimeZoneChange" },
2230   {  24, "sGSNPLMNIDChange" },
2231   {  52, "unauthorizedRequestingNetwork" },
2232   {  53, "unauthorizedLCSClient" },
2233   {  54, "positionMethodFailure" },
2234   {  58, "unknownOrUnreachableLCSClient" },
2235   {  59, "listofDownstreamNodeChange" },
2236   { 0, NULL }
2237 };
2238 
2239 
2240 static int
dissect_gprscdr_CauseForRecClosingV651(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2241 dissect_gprscdr_CauseForRecClosingV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2242   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2243                                                 NULL);
2244 
2245   return offset;
2246 }
2247 
2248 
2249 static const value_string gprscdr_APNSelectionMode_vals[] = {
2250   {   0, "mSorNetworkProvidedSubscriptionVerified" },
2251   {   1, "mSProvidedSubscriptionNotVerified" },
2252   {   2, "networkProvidedSubscriptionNotVerified" },
2253   { 0, NULL }
2254 };
2255 
2256 
2257 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_)2258 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_) {
2259   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2260                                   NULL);
2261 
2262   return offset;
2263 }
2264 
2265 
2266 
2267 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_)2268 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_) {
2269   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
2270                                             actx, tree, tvb, offset, hf_index,
2271                                             NULL);
2272 
2273   return offset;
2274 }
2275 
2276 
2277 
2278 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_)2279 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_) {
2280   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2281                                        NULL);
2282 
2283   return offset;
2284 }
2285 
2286 
2287 
2288 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_)2289 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_) {
2290   offset = dissect_gsm_map_AddressString(implicit_tag, tvb, offset, actx, tree, hf_index);
2291 
2292   return offset;
2293 }
2294 
2295 
2296 
2297 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_)2298 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_) {
2299   offset = dissect_gprscdr_AccessPointNameNI(implicit_tag, tvb, offset, actx, tree, hf_index);
2300 
2301   return offset;
2302 }
2303 
2304 
2305 
2306 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_)2307 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_) {
2308   offset = dissect_gprscdr_AccessPointNameOI(implicit_tag, tvb, offset, actx, tree, hf_index);
2309 
2310   return offset;
2311 }
2312 
2313 
2314 
2315 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_)2316 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_) {
2317   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2318                                                 NULL);
2319 
2320   return offset;
2321 }
2322 
2323 
2324 
2325 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_)2326 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_) {
2327   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2328                                        NULL);
2329 
2330   return offset;
2331 }
2332 
2333 
2334 
2335 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_)2336 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_) {
2337   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2338 
2339   return offset;
2340 }
2341 
2342 
2343 static const ber_sequence_t CAMELInformationPDP_set[] = {
2344   { &hf_gprscdr_sCFAddress  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SCFAddress },
2345   { &hf_gprscdr_serviceKey  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServiceKey },
2346   { &hf_gprscdr_defaultTransactionHandling, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultGPRS_Handling },
2347   { &hf_gprscdr_cAMELAccessPointNameNI, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELAccessPointNameNI },
2348   { &hf_gprscdr_cAMELAccessPointNameOI, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELAccessPointNameOI },
2349   { &hf_gprscdr_numberOfDPEncountered, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NumberOfDPEncountered },
2350   { &hf_gprscdr_levelOfCAMELService, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LevelOfCAMELService },
2351   { &hf_gprscdr_freeFormatData, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FreeFormatData },
2352   { &hf_gprscdr_fFDAppendIndicator, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FFDAppendIndicator },
2353   { NULL, 0, 0, 0, NULL }
2354 };
2355 
2356 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_)2357 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_) {
2358   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2359                               CAMELInformationPDP_set, hf_index, ett_gprscdr_CAMELInformationPDP);
2360 
2361   return offset;
2362 }
2363 
2364 
2365 static const value_string gprscdr_ChChSelectionMode_vals[] = {
2366   {   0, "servingNodeSupplied" },
2367   {   1, "subscriptionSpecific" },
2368   {   2, "aPNSpecific" },
2369   {   3, "homeDefault" },
2370   {   4, "roamingDefault" },
2371   {   5, "visitingDefault" },
2372   {   6, "fixedDefault" },
2373   { 0, NULL }
2374 };
2375 
2376 
2377 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_)2378 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_) {
2379   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2380                                   NULL);
2381 
2382   return offset;
2383 }
2384 
2385 
2386 static const ber_sequence_t SGSNPDPRecordV651_set[] = {
2387   { &hf_gprscdr_recordType  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType },
2388   { &hf_gprscdr_networkInitiation, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NetworkInitiatedPDPContext },
2389   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
2390   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
2391   { &hf_gprscdr_sgsnAddress_01, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
2392   { &hf_gprscdr_msNetworkCapability, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSNetworkCapability },
2393   { &hf_gprscdr_routingArea , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
2394   { &hf_gprscdr_locationAreaCode, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode },
2395   { &hf_gprscdr_cellIdentifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId },
2396   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
2397   { &hf_gprscdr_ggsnAddressUsed, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
2398   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
2399   { &hf_gprscdr_pdpType     , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
2400   { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
2401   { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651 },
2402   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
2403   { &hf_gprscdr_duration    , BER_CLASS_CON, 17, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
2404   { &hf_gprscdr_sgsnChange  , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNChange },
2405   { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 19, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosingV651 },
2406   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
2407   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
2408   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
2409   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
2410   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
2411   { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode },
2412   { &hf_gprscdr_accessPointNameOI, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameOI },
2413   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
2414   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
2415   { &hf_gprscdr_rATType     , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
2416   { &hf_gprscdr_cAMELInformationPDP, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELInformationPDP },
2417   { &hf_gprscdr_rNCUnsentDownlinkVolume, BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
2418   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
2419   { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
2420   { NULL, 0, 0, 0, NULL }
2421 };
2422 
2423 static int
dissect_gprscdr_SGSNPDPRecordV651(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2424 dissect_gprscdr_SGSNPDPRecordV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2425   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2426                               SGSNPDPRecordV651_set, hf_index, ett_gprscdr_SGSNPDPRecordV651);
2427 
2428   return offset;
2429 }
2430 
2431 
2432 static const ber_sequence_t SEQUENCE_OF_GSNAddress_sequence_of[1] = {
2433   { &hf_gprscdr_sgsnAddress_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
2434 };
2435 
2436 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_)2437 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_) {
2438   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2439                                       SEQUENCE_OF_GSNAddress_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_GSNAddress);
2440 
2441   return offset;
2442 }
2443 
2444 
2445 
2446 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_)2447 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_) {
2448   offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
2449 
2450   return offset;
2451 }
2452 
2453 
2454 
2455 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_)2456 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_) {
2457   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2458                                        NULL);
2459 
2460   return offset;
2461 }
2462 
2463 
2464 
2465 static int
dissect_gprscdr_T_userLocationInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2466 dissect_gprscdr_T_userLocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2467 #line 171 "./asn1/gprscdr/gprscdr.cnf"
2468 
2469   offset = dissect_gprscdr_uli(tvb, actx, tree, 1);
2470 
2471 
2472 
2473   return offset;
2474 }
2475 
2476 
2477 static const ber_sequence_t GGSNPDPRecord_set[] = {
2478   { &hf_gprscdr_recordType  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType },
2479   { &hf_gprscdr_networkInitiation, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NetworkInitiatedPDPContext },
2480   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
2481   { &hf_gprscdr_ggsnAddress , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
2482   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
2483   { &hf_gprscdr_sgsnAddress , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
2484   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
2485   { &hf_gprscdr_pdpType     , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
2486   { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
2487   { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
2488   { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651 },
2489   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
2490   { &hf_gprscdr_duration    , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
2491   { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosingV651 },
2492   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
2493   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
2494   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
2495   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
2496   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
2497   { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode },
2498   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
2499   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
2500   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
2501   { &hf_gprscdr_iMSsignalingContext, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
2502   { &hf_gprscdr_externalChargingID, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
2503   { &hf_gprscdr_sgsnPLMNIdentifier, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
2504   { &hf_gprscdr_servedIMEISV, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
2505   { &hf_gprscdr_rATType     , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
2506   { &hf_gprscdr_mSTimeZone  , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone },
2507   { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation },
2508   { &hf_gprscdr_cAMELChargingInformation, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
2509   { NULL, 0, 0, 0, NULL }
2510 };
2511 
2512 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_)2513 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_) {
2514   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2515                               GGSNPDPRecord_set, hf_index, ett_gprscdr_GGSNPDPRecord);
2516 
2517   return offset;
2518 }
2519 
2520 
2521 static const ber_sequence_t ChangeLocation_sequence[] = {
2522   { &hf_gprscdr_locationAreaCode, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode },
2523   { &hf_gprscdr_routingAreaCode, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
2524   { &hf_gprscdr_cellId      , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId },
2525   { &hf_gprscdr_changeTime  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
2526   { &hf_gprscdr_mCC_MNC_01  , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
2527   { NULL, 0, 0, 0, NULL }
2528 };
2529 
2530 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_)2531 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_) {
2532   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2533                                    ChangeLocation_sequence, hf_index, ett_gprscdr_ChangeLocation);
2534 
2535   return offset;
2536 }
2537 
2538 
2539 static const ber_sequence_t SEQUENCE_OF_ChangeLocation_sequence_of[1] = {
2540   { &hf_gprscdr_changeLocation_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeLocation },
2541 };
2542 
2543 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_)2544 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_) {
2545   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2546                                       SEQUENCE_OF_ChangeLocation_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeLocation);
2547 
2548   return offset;
2549 }
2550 
2551 
2552 static const ber_sequence_t CAMELInformationMM_set[] = {
2553   { &hf_gprscdr_sCFAddress  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SCFAddress },
2554   { &hf_gprscdr_serviceKey  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServiceKey },
2555   { &hf_gprscdr_defaultTransactionHandling, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultGPRS_Handling },
2556   { &hf_gprscdr_numberOfDPEncountered, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NumberOfDPEncountered },
2557   { &hf_gprscdr_levelOfCAMELService, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LevelOfCAMELService },
2558   { &hf_gprscdr_freeFormatData, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FreeFormatData },
2559   { &hf_gprscdr_fFDAppendIndicator, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FFDAppendIndicator },
2560   { NULL, 0, 0, 0, NULL }
2561 };
2562 
2563 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_)2564 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_) {
2565   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2566                               CAMELInformationMM_set, hf_index, ett_gprscdr_CAMELInformationMM);
2567 
2568   return offset;
2569 }
2570 
2571 
2572 static const value_string gprscdr_CNOperatorSelectionEntity_vals[] = {
2573   {   0, "servCNSelectedbyUE" },
2574   {   1, "servCNSelectedbyNtw" },
2575   { 0, NULL }
2576 };
2577 
2578 
2579 static int
dissect_gprscdr_CNOperatorSelectionEntity(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2580 dissect_gprscdr_CNOperatorSelectionEntity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2581   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2582                                   NULL);
2583 
2584   return offset;
2585 }
2586 
2587 
2588 static const ber_sequence_t SGSNMMRecord_set[] = {
2589   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
2590   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
2591   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
2592   { &hf_gprscdr_sgsnAddress_01, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
2593   { &hf_gprscdr_msNetworkCapability, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSNetworkCapability },
2594   { &hf_gprscdr_routingArea , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
2595   { &hf_gprscdr_locationAreaCode, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode },
2596   { &hf_gprscdr_cellIdentifier, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId },
2597   { &hf_gprscdr_changeLocation, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeLocation },
2598   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
2599   { &hf_gprscdr_duration    , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
2600   { &hf_gprscdr_sgsnChange  , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNChange },
2601   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 12, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
2602   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
2603   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
2604   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
2605   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
2606   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
2607   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
2608   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 19, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
2609   { &hf_gprscdr_cAMELInformationMM, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELInformationMM },
2610   { &hf_gprscdr_rATType     , BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
2611   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
2612   { &hf_gprscdr_cellPLMNId  , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
2613   { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
2614   { &hf_gprscdr_cNOperatorSelectionEnt, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNOperatorSelectionEntity },
2615   { NULL, 0, 0, 0, NULL }
2616 };
2617 
2618 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_)2619 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_) {
2620   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2621                               SGSNMMRecord_set, hf_index, ett_gprscdr_SGSNMMRecord);
2622 
2623   return offset;
2624 }
2625 
2626 
2627 static const ber_sequence_t CAMELInformationSMS_set[] = {
2628   { &hf_gprscdr_sCFAddress  , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SCFAddress },
2629   { &hf_gprscdr_serviceKey  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_ServiceKey },
2630   { &hf_gprscdr_defaultSMSHandling, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_DefaultSMS_Handling },
2631   { &hf_gprscdr_cAMELCallingPartyNumber, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallingNumber },
2632   { &hf_gprscdr_cAMELDestinationSubscriberNumber, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SmsTpDestinationNumber },
2633   { &hf_gprscdr_cAMELSMSCAddress, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
2634   { &hf_gprscdr_freeFormatData, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FreeFormatData },
2635   { &hf_gprscdr_smsReferenceNumber, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ch_CallReferenceNumber },
2636   { NULL, 0, 0, 0, NULL }
2637 };
2638 
2639 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_)2640 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_) {
2641   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2642                               CAMELInformationSMS_set, hf_index, ett_gprscdr_CAMELInformationSMS);
2643 
2644   return offset;
2645 }
2646 
2647 
2648 static const ber_sequence_t SGSNSMORecordV651_set[] = {
2649   { &hf_gprscdr_recordType  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType },
2650   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
2651   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
2652   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
2653   { &hf_gprscdr_msNetworkCapability, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSNetworkCapability },
2654   { &hf_gprscdr_serviceCentre, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
2655   { &hf_gprscdr_recordingEntity, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordingEntity },
2656   { &hf_gprscdr_locationArea, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode },
2657   { &hf_gprscdr_routingArea , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
2658   { &hf_gprscdr_cellIdentifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId },
2659   { &hf_gprscdr_messageReference, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gprscdr_MessageReference },
2660   { &hf_gprscdr_eventTimeStamp, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
2661   { &hf_gprscdr_smsResult   , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_SMSResult },
2662   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
2663   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
2664   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
2665   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
2666   { &hf_gprscdr_rATType     , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
2667   { &hf_gprscdr_destinationNumber, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SmsTpDestinationNumber },
2668   { &hf_gprscdr_cAMELInformationSMS, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELInformationSMS },
2669   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
2670   { NULL, 0, 0, 0, NULL }
2671 };
2672 
2673 static int
dissect_gprscdr_SGSNSMORecordV651(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2674 dissect_gprscdr_SGSNSMORecordV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2675   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2676                               SGSNSMORecordV651_set, hf_index, ett_gprscdr_SGSNSMORecordV651);
2677 
2678   return offset;
2679 }
2680 
2681 
2682 static const ber_sequence_t SGSNSMTRecordV651_set[] = {
2683   { &hf_gprscdr_recordType  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType },
2684   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
2685   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
2686   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
2687   { &hf_gprscdr_msNetworkCapability, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSNetworkCapability },
2688   { &hf_gprscdr_serviceCentre, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
2689   { &hf_gprscdr_recordingEntity, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordingEntity },
2690   { &hf_gprscdr_locationArea, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode },
2691   { &hf_gprscdr_routingArea , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
2692   { &hf_gprscdr_cellIdentifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId },
2693   { &hf_gprscdr_eventTimeStamp, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
2694   { &hf_gprscdr_smsResult   , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_SMSResult },
2695   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
2696   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
2697   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
2698   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
2699   { &hf_gprscdr_rATType     , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
2700   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
2701   { &hf_gprscdr_cAMELInformationSMS, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELInformationSMS },
2702   { NULL, 0, 0, 0, NULL }
2703 };
2704 
2705 static int
dissect_gprscdr_SGSNSMTRecordV651(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2706 dissect_gprscdr_SGSNSMTRecordV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2707   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2708                               SGSNSMTRecordV651_set, hf_index, ett_gprscdr_SGSNSMTRecordV651);
2709 
2710   return offset;
2711 }
2712 
2713 
2714 static const ber_sequence_t PSFurnishChargingInformation_sequence[] = {
2715   { &hf_gprscdr_pSFreeFormatData, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_FreeFormatData },
2716   { &hf_gprscdr_pSFFDAppendIndicator, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FFDAppendIndicator },
2717   { NULL, 0, 0, 0, NULL }
2718 };
2719 
2720 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_)2721 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_) {
2722   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2723                                    PSFurnishChargingInformation_sequence, hf_index, ett_gprscdr_PSFurnishChargingInformation);
2724 
2725   return offset;
2726 }
2727 
2728 
2729 
2730 static int
dissect_gprscdr_T_userLocationInformation_02(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2731 dissect_gprscdr_T_userLocationInformation_02(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2732 #line 179 "./asn1/gprscdr/gprscdr.cnf"
2733 
2734   offset = dissect_gprscdr_uli(tvb, actx, tree, 1);
2735 
2736 
2737 
2738   return offset;
2739 }
2740 
2741 
2742 
2743 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_)2744 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_) {
2745   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2746                                                 NULL);
2747 
2748   return offset;
2749 }
2750 
2751 
2752 
2753 static int
dissect_gprscdr_ChargingRuleBaseName(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2754 dissect_gprscdr_ChargingRuleBaseName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2755   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
2756                                             actx, tree, tvb, offset, hf_index,
2757                                             NULL);
2758 
2759   return offset;
2760 }
2761 
2762 
2763 
2764 static int
dissect_gprscdr_ResultCode(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2765 dissect_gprscdr_ResultCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2766   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2767                                                 NULL);
2768 
2769   return offset;
2770 }
2771 
2772 
2773 static int * const ServiceConditionChangeV651_bits[] = {
2774   &hf_gprscdr_ServiceConditionChangeV651_qoSChange,
2775   &hf_gprscdr_ServiceConditionChangeV651_sGSNChange,
2776   &hf_gprscdr_ServiceConditionChangeV651_sGSNPLMNIDChange,
2777   &hf_gprscdr_ServiceConditionChangeV651_tariffTimeSwitch,
2778   &hf_gprscdr_ServiceConditionChangeV651_pDPContextRelease,
2779   &hf_gprscdr_ServiceConditionChangeV651_rATChange,
2780   &hf_gprscdr_ServiceConditionChangeV651_serviceIdledOut,
2781   &hf_gprscdr_ServiceConditionChangeV651_qCTExpiry,
2782   &hf_gprscdr_ServiceConditionChangeV651_configurationChange,
2783   &hf_gprscdr_ServiceConditionChangeV651_serviceStop,
2784   &hf_gprscdr_ServiceConditionChangeV651_timeThresholdReached,
2785   &hf_gprscdr_ServiceConditionChangeV651_volumeThresholdReached,
2786   &hf_gprscdr_ServiceConditionChangeV651_spare_bit12,
2787   &hf_gprscdr_ServiceConditionChangeV651_timeExhausted,
2788   &hf_gprscdr_ServiceConditionChangeV651_volumeExhausted,
2789   &hf_gprscdr_ServiceConditionChangeV651_timeout,
2790   &hf_gprscdr_ServiceConditionChangeV651_returnRequested,
2791   &hf_gprscdr_ServiceConditionChangeV651_reauthorisationRequest,
2792   &hf_gprscdr_ServiceConditionChangeV651_continueOngoingSession,
2793   &hf_gprscdr_ServiceConditionChangeV651_retryAndTerminateOngoingSession,
2794   &hf_gprscdr_ServiceConditionChangeV651_terminateOngoingSession,
2795   NULL
2796 };
2797 
2798 static int
dissect_gprscdr_ServiceConditionChangeV651(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2799 dissect_gprscdr_ServiceConditionChangeV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2800   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
2801                                     ServiceConditionChangeV651_bits, 21, hf_index, ett_gprscdr_ServiceConditionChangeV651,
2802                                     NULL);
2803 
2804   return offset;
2805 }
2806 
2807 
2808 
2809 static int
dissect_gprscdr_ServiceIdentifier(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2810 dissect_gprscdr_ServiceIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2811   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2812                                                 NULL);
2813 
2814   return offset;
2815 }
2816 
2817 
2818 static const ber_sequence_t ChangeOfServiceConditionV651_sequence[] = {
2819   { &hf_gprscdr_ratingGroup , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RatingGroupId },
2820   { &hf_gprscdr_chargingRuleBaseName, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingRuleBaseName },
2821   { &hf_gprscdr_resultCode  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ResultCode },
2822   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
2823   { &hf_gprscdr_timeOfFirstUsage, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
2824   { &hf_gprscdr_timeOfLastUsage, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
2825   { &hf_gprscdr_timeUsage   , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
2826   { &hf_gprscdr_serviceConditionChange, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceConditionChangeV651 },
2827   { &hf_gprscdr_qoSInformationNeg, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation },
2828   { &hf_gprscdr_sgsn_Address, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
2829   { &hf_gprscdr_sGSNPLMNIdentifier, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
2830   { &hf_gprscdr_datavolumeFBCUplink, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
2831   { &hf_gprscdr_datavolumeFBCDownlink, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
2832   { &hf_gprscdr_timeOfReport, BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
2833   { &hf_gprscdr_rATType     , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
2834   { &hf_gprscdr_failureHandlingContinue, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FailureHandlingContinue },
2835   { &hf_gprscdr_serviceIdentifier, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceIdentifier },
2836   { &hf_gprscdr_pSFurnishChargingInformation, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSFurnishChargingInformation },
2837   { NULL, 0, 0, 0, NULL }
2838 };
2839 
2840 static int
dissect_gprscdr_ChangeOfServiceConditionV651(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2841 dissect_gprscdr_ChangeOfServiceConditionV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2842   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2843                                    ChangeOfServiceConditionV651_sequence, hf_index, ett_gprscdr_ChangeOfServiceConditionV651);
2844 
2845   return offset;
2846 }
2847 
2848 
2849 static const ber_sequence_t SEQUENCE_OF_ChangeOfServiceConditionV651_sequence_of[1] = {
2850   { &hf_gprscdr_listOfServiceData_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeOfServiceConditionV651 },
2851 };
2852 
2853 static int
dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV651(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2854 dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV651(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2855   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2856                                       SEQUENCE_OF_ChangeOfServiceConditionV651_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV651);
2857 
2858   return offset;
2859 }
2860 
2861 
2862 static const ber_sequence_t EGSNPDPRecord_set[] = {
2863   { &hf_gprscdr_recordType  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType },
2864   { &hf_gprscdr_networkInitiation, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NetworkInitiatedPDPContext },
2865   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
2866   { &hf_gprscdr_ggsnAddress , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
2867   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
2868   { &hf_gprscdr_sgsnAddress , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
2869   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
2870   { &hf_gprscdr_pdpType     , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
2871   { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
2872   { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
2873   { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651 },
2874   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
2875   { &hf_gprscdr_duration    , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
2876   { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosingV651 },
2877   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
2878   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
2879   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
2880   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
2881   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
2882   { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode },
2883   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
2884   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
2885   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
2886   { &hf_gprscdr_iMSsignalingContext, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
2887   { &hf_gprscdr_externalChargingID, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
2888   { &hf_gprscdr_sgsnPLMNIdentifier, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
2889   { &hf_gprscdr_pSFurnishChargingInformation, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSFurnishChargingInformation },
2890   { &hf_gprscdr_servedIMEISV, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
2891   { &hf_gprscdr_rATType     , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
2892   { &hf_gprscdr_mSTimeZone  , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone },
2893   { &hf_gprscdr_userLocationInformation_02, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_02 },
2894   { &hf_gprscdr_cAMELChargingInformation, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
2895   { &hf_gprscdr_listOfServiceData, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV651 },
2896   { NULL, 0, 0, 0, NULL }
2897 };
2898 
2899 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_)2900 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_) {
2901   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2902                               EGSNPDPRecord_set, hf_index, ett_gprscdr_EGSNPDPRecord);
2903 
2904   return offset;
2905 }
2906 
2907 
2908 const value_string gprscdr_GPRSCallEventRecord_vals[] = {
2909   {  20, "sgsnPDPRecord" },
2910   {  21, "ggsnPDPRecord" },
2911   {  22, "sgsnMMRecord" },
2912   {  23, "sgsnSMORecord" },
2913   {  24, "sgsnSMTRecord" },
2914   {  28, "egsnPDPRecord" },
2915   { 0, NULL }
2916 };
2917 
2918 static const ber_choice_t GPRSCallEventRecord_choice[] = {
2919   {  20, &hf_gprscdr_sgsnPDPRecord, BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNPDPRecordV651 },
2920   {  21, &hf_gprscdr_ggsnPDPRecord, BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_gprscdr_GGSNPDPRecord },
2921   {  22, &hf_gprscdr_sgsnMMRecord, BER_CLASS_CON, 22, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNMMRecord },
2922   {  23, &hf_gprscdr_sgsnSMORecord, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNSMORecordV651 },
2923   {  24, &hf_gprscdr_sgsnSMTRecord, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNSMTRecordV651 },
2924   {  28, &hf_gprscdr_egsnPDPRecord, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_gprscdr_EGSNPDPRecord },
2925   { 0, NULL, 0, 0, 0, NULL }
2926 };
2927 
2928 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_)2929 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_) {
2930   offset = dissect_ber_choice(actx, tree, tvb, offset,
2931                                  GPRSCallEventRecord_choice, hf_index, ett_gprscdr_GPRSCallEventRecord,
2932                                  NULL);
2933 
2934   return offset;
2935 }
2936 
2937 
2938 
2939 static int
dissect_gprscdr_T_userLocationInformation_01(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2940 dissect_gprscdr_T_userLocationInformation_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2941 #line 175 "./asn1/gprscdr/gprscdr.cnf"
2942 
2943   offset = dissect_gprscdr_uli(tvb, actx, tree, 1);
2944 
2945 
2946 
2947   return offset;
2948 }
2949 
2950 
2951 static const ber_sequence_t GGSNPDPRecordV750_set[] = {
2952   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
2953   { &hf_gprscdr_networkInitiation, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NetworkInitiatedPDPContext },
2954   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
2955   { &hf_gprscdr_ggsnAddress , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
2956   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
2957   { &hf_gprscdr_sgsnAddress , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
2958   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
2959   { &hf_gprscdr_pdpType     , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
2960   { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
2961   { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
2962   { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651 },
2963   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
2964   { &hf_gprscdr_duration    , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
2965   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
2966   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
2967   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
2968   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
2969   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
2970   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
2971   { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode },
2972   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
2973   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
2974   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
2975   { &hf_gprscdr_iMSsignalingContext, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
2976   { &hf_gprscdr_externalChargingID, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
2977   { &hf_gprscdr_sgsnPLMNIdentifier, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
2978   { &hf_gprscdr_servedIMEISV, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
2979   { &hf_gprscdr_rATType     , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
2980   { &hf_gprscdr_mSTimeZone  , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone },
2981   { &hf_gprscdr_userLocationInformation_01, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_01 },
2982   { &hf_gprscdr_cAMELChargingInformation, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
2983   { NULL, 0, 0, 0, NULL }
2984 };
2985 
2986 static int
dissect_gprscdr_GGSNPDPRecordV750(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2987 dissect_gprscdr_GGSNPDPRecordV750(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2988   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2989                               GGSNPDPRecordV750_set, hf_index, ett_gprscdr_GGSNPDPRecordV750);
2990 
2991   return offset;
2992 }
2993 
2994 
2995 
2996 static int
dissect_gprscdr_T_userLocationInformation_03(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)2997 dissect_gprscdr_T_userLocationInformation_03(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2998 #line 183 "./asn1/gprscdr/gprscdr.cnf"
2999 
3000   offset = dissect_gprscdr_uli(tvb, actx, tree, 1);
3001 
3002 
3003 
3004   return offset;
3005 }
3006 
3007 
3008 static int * const ServiceConditionChangeV750_bits[] = {
3009   &hf_gprscdr_ServiceConditionChangeV750_qoSChange,
3010   &hf_gprscdr_ServiceConditionChangeV750_sGSNChange,
3011   &hf_gprscdr_ServiceConditionChangeV750_sGSNPLMNIDChange,
3012   &hf_gprscdr_ServiceConditionChangeV750_tariffTimeSwitch,
3013   &hf_gprscdr_ServiceConditionChangeV750_pDPContextRelease,
3014   &hf_gprscdr_ServiceConditionChangeV750_rATChange,
3015   &hf_gprscdr_ServiceConditionChangeV750_serviceIdledOut,
3016   &hf_gprscdr_ServiceConditionChangeV750_reserved,
3017   &hf_gprscdr_ServiceConditionChangeV750_configurationChange,
3018   &hf_gprscdr_ServiceConditionChangeV750_serviceStop,
3019   &hf_gprscdr_ServiceConditionChangeV750_dCCATimeThresholdReached,
3020   &hf_gprscdr_ServiceConditionChangeV750_dCCAVolumeThresholdReached,
3021   &hf_gprscdr_ServiceConditionChangeV750_dCCAServiceSpecificUnitThresholdReached,
3022   &hf_gprscdr_ServiceConditionChangeV750_dCCATimeExhausted,
3023   &hf_gprscdr_ServiceConditionChangeV750_dCCAVolumeExhausted,
3024   &hf_gprscdr_ServiceConditionChangeV750_dCCAValidityTimeout,
3025   &hf_gprscdr_ServiceConditionChangeV750_reserved2,
3026   &hf_gprscdr_ServiceConditionChangeV750_dCCAReauthorisationRequest,
3027   &hf_gprscdr_ServiceConditionChangeV750_dCCAContinueOngoingSession,
3028   &hf_gprscdr_ServiceConditionChangeV750_dCCARetryAndTerminateOngoingSession,
3029   &hf_gprscdr_ServiceConditionChangeV750_dCCATerminateOngoingSession,
3030   &hf_gprscdr_ServiceConditionChangeV750_cGI_SAIChange,
3031   &hf_gprscdr_ServiceConditionChangeV750_rAIChange,
3032   &hf_gprscdr_ServiceConditionChangeV750_dCCAServiceSpecificUnitExhausted,
3033   &hf_gprscdr_ServiceConditionChangeV750_recordClosure,
3034   &hf_gprscdr_ServiceConditionChangeV750_timeLimit,
3035   &hf_gprscdr_ServiceConditionChangeV750_volumeLimit,
3036   &hf_gprscdr_ServiceConditionChangeV750_serviceSpecificUnitLimit,
3037   &hf_gprscdr_ServiceConditionChangeV750_envelopeClosure,
3038   NULL
3039 };
3040 
3041 static int
dissect_gprscdr_ServiceConditionChangeV750(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3042 dissect_gprscdr_ServiceConditionChangeV750(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3043   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
3044                                     ServiceConditionChangeV750_bits, 29, hf_index, ett_gprscdr_ServiceConditionChangeV750,
3045                                     NULL);
3046 
3047   return offset;
3048 }
3049 
3050 
3051 
3052 static int
dissect_gprscdr_AFChargingIdentifier(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3053 dissect_gprscdr_AFChargingIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3054   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
3055                                        NULL);
3056 
3057   return offset;
3058 }
3059 
3060 
3061 static const ber_sequence_t T_flowNumber_sequence_of[1] = {
3062   { &hf_gprscdr_flowNumber_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_gprscdr_INTEGER },
3063 };
3064 
3065 static int
dissect_gprscdr_T_flowNumber(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3066 dissect_gprscdr_T_flowNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3067   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3068                                       T_flowNumber_sequence_of, hf_index, ett_gprscdr_T_flowNumber);
3069 
3070   return offset;
3071 }
3072 
3073 
3074 static const ber_sequence_t Flows_sequence[] = {
3075   { &hf_gprscdr_mediaComponentNumber, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3076   { &hf_gprscdr_flowNumber  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_flowNumber },
3077   { NULL, 0, 0, 0, NULL }
3078 };
3079 
3080 static int
dissect_gprscdr_Flows(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3081 dissect_gprscdr_Flows(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3082   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3083                                    Flows_sequence, hf_index, ett_gprscdr_Flows);
3084 
3085   return offset;
3086 }
3087 
3088 
3089 static const ber_sequence_t AFRecordInformation_sequence[] = {
3090   { &hf_gprscdr_aFChargingIdentifier, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_AFChargingIdentifier },
3091   { &hf_gprscdr_flows       , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_Flows },
3092   { NULL, 0, 0, 0, NULL }
3093 };
3094 
3095 static int
dissect_gprscdr_AFRecordInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3096 dissect_gprscdr_AFRecordInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3097   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3098                                    AFRecordInformation_sequence, hf_index, ett_gprscdr_AFRecordInformation);
3099 
3100   return offset;
3101 }
3102 
3103 
3104 static const ber_sequence_t SEQUENCE_OF_AFRecordInformation_sequence_of[1] = {
3105   { &hf_gprscdr_aFRecordInformation_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_AFRecordInformation },
3106 };
3107 
3108 static int
dissect_gprscdr_SEQUENCE_OF_AFRecordInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3109 dissect_gprscdr_SEQUENCE_OF_AFRecordInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3110   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3111                                       SEQUENCE_OF_AFRecordInformation_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_AFRecordInformation);
3112 
3113   return offset;
3114 }
3115 
3116 
3117 
3118 static int
dissect_gprscdr_T_userLocationInformation_05(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3119 dissect_gprscdr_T_userLocationInformation_05(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3120 #line 191 "./asn1/gprscdr/gprscdr.cnf"
3121 
3122   offset = dissect_gprscdr_uli(tvb, actx, tree, 1);
3123 
3124 
3125 
3126   return offset;
3127 }
3128 
3129 
3130 static const ber_sequence_t SEQUENCE_OF_TimeStamp_sequence_of[1] = {
3131   { &hf_gprscdr_eventTimeStamps_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gprscdr_TimeStamp },
3132 };
3133 
3134 static int
dissect_gprscdr_SEQUENCE_OF_TimeStamp(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3135 dissect_gprscdr_SEQUENCE_OF_TimeStamp(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3136   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3137                                       SEQUENCE_OF_TimeStamp_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_TimeStamp);
3138 
3139   return offset;
3140 }
3141 
3142 
3143 static const ber_sequence_t EventBasedChargingInformation_sequence[] = {
3144   { &hf_gprscdr_numberOfEvents, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3145   { &hf_gprscdr_eventTimeStamps, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_TimeStamp },
3146   { NULL, 0, 0, 0, NULL }
3147 };
3148 
3149 static int
dissect_gprscdr_EventBasedChargingInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3150 dissect_gprscdr_EventBasedChargingInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3151   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3152                                    EventBasedChargingInformation_sequence, hf_index, ett_gprscdr_EventBasedChargingInformation);
3153 
3154   return offset;
3155 }
3156 
3157 
3158 static const value_string gprscdr_TimeQuotaType_vals[] = {
3159   {   0, "dISCRETETIMEPERIOD" },
3160   {   1, "cONTINUOUSTIMEPERIOD" },
3161   { 0, NULL }
3162 };
3163 
3164 
3165 static int
dissect_gprscdr_TimeQuotaType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3166 dissect_gprscdr_TimeQuotaType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3167   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3168                                   NULL);
3169 
3170   return offset;
3171 }
3172 
3173 
3174 static const ber_sequence_t TimeQuotaMechanism_sequence[] = {
3175   { &hf_gprscdr_timeQuotaType, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeQuotaType },
3176   { &hf_gprscdr_baseTimeInterval, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3177   { NULL, 0, 0, 0, NULL }
3178 };
3179 
3180 static int
dissect_gprscdr_TimeQuotaMechanism(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3181 dissect_gprscdr_TimeQuotaMechanism(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3182   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3183                                    TimeQuotaMechanism_sequence, hf_index, ett_gprscdr_TimeQuotaMechanism);
3184 
3185   return offset;
3186 }
3187 
3188 
3189 static const ber_sequence_t ChangeOfServiceConditionV750_sequence[] = {
3190   { &hf_gprscdr_ratingGroup , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RatingGroupId },
3191   { &hf_gprscdr_chargingRuleBaseName, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingRuleBaseName },
3192   { &hf_gprscdr_resultCode  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ResultCode },
3193   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
3194   { &hf_gprscdr_timeOfFirstUsage, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3195   { &hf_gprscdr_timeOfLastUsage, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3196   { &hf_gprscdr_timeUsage   , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
3197   { &hf_gprscdr_serviceConditionChangeV750, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceConditionChangeV750 },
3198   { &hf_gprscdr_qoSInformationNeg, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation },
3199   { &hf_gprscdr_sgsn_Address, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
3200   { &hf_gprscdr_sGSNPLMNIdentifier, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
3201   { &hf_gprscdr_datavolumeFBCUplink, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
3202   { &hf_gprscdr_datavolumeFBCDownlink, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
3203   { &hf_gprscdr_timeOfReport, BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3204   { &hf_gprscdr_rATType     , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
3205   { &hf_gprscdr_failureHandlingContinue, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FailureHandlingContinue },
3206   { &hf_gprscdr_serviceIdentifier, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceIdentifier },
3207   { &hf_gprscdr_pSFurnishChargingInformation, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSFurnishChargingInformation },
3208   { &hf_gprscdr_aFRecordInformation, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_AFRecordInformation },
3209   { &hf_gprscdr_userLocationInformation_05, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_05 },
3210   { &hf_gprscdr_eventBasedChargingInformation, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EventBasedChargingInformation },
3211   { &hf_gprscdr_timeQuotaMechanism, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeQuotaMechanism },
3212   { NULL, 0, 0, 0, NULL }
3213 };
3214 
3215 static int
dissect_gprscdr_ChangeOfServiceConditionV750(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3216 dissect_gprscdr_ChangeOfServiceConditionV750(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3217   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3218                                    ChangeOfServiceConditionV750_sequence, hf_index, ett_gprscdr_ChangeOfServiceConditionV750);
3219 
3220   return offset;
3221 }
3222 
3223 
3224 static const ber_sequence_t SEQUENCE_OF_ChangeOfServiceConditionV750_sequence_of[1] = {
3225   { &hf_gprscdr_listOfServiceData_item_01, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeOfServiceConditionV750 },
3226 };
3227 
3228 static int
dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV750(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3229 dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV750(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3230   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3231                                       SEQUENCE_OF_ChangeOfServiceConditionV750_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV750);
3232 
3233   return offset;
3234 }
3235 
3236 
3237 static const ber_sequence_t EGSNPDPRecordV750_set[] = {
3238   { &hf_gprscdr_recordType  , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType },
3239   { &hf_gprscdr_networkInitiation, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NetworkInitiatedPDPContext },
3240   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
3241   { &hf_gprscdr_ggsnAddress , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
3242   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
3243   { &hf_gprscdr_sgsnAddress , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
3244   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
3245   { &hf_gprscdr_pdpType     , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
3246   { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
3247   { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
3248   { &hf_gprscdr_listOfTrafficVolumes, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651 },
3249   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3250   { &hf_gprscdr_duration    , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
3251   { &hf_gprscdr_causeForRecClosing, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosingV651 },
3252   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
3253   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3254   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
3255   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
3256   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
3257   { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode },
3258   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
3259   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
3260   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
3261   { &hf_gprscdr_iMSsignalingContext, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
3262   { &hf_gprscdr_externalChargingID, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
3263   { &hf_gprscdr_sgsnPLMNIdentifier, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
3264   { &hf_gprscdr_pSFurnishChargingInformation, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSFurnishChargingInformation },
3265   { &hf_gprscdr_servedIMEISV, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
3266   { &hf_gprscdr_rATType     , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
3267   { &hf_gprscdr_mSTimeZone  , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone },
3268   { &hf_gprscdr_userLocationInformation_03, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_03 },
3269   { &hf_gprscdr_cAMELChargingInformation, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
3270   { &hf_gprscdr_listOfServiceData_01, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV750 },
3271   { NULL, 0, 0, 0, NULL }
3272 };
3273 
3274 static int
dissect_gprscdr_EGSNPDPRecordV750(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3275 dissect_gprscdr_EGSNPDPRecordV750(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3276   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3277                               EGSNPDPRecordV750_set, hf_index, ett_gprscdr_EGSNPDPRecordV750);
3278 
3279   return offset;
3280 }
3281 
3282 
3283 static const value_string gprscdr_ChangeCondition_vals[] = {
3284   {   0, "qoSChange" },
3285   {   1, "tariffTime" },
3286   {   2, "recordClosure" },
3287   {   3, "failureHandlingContinueOngoing" },
3288   {   4, "failureHandlingRetryandTerminateOngoing" },
3289   {   5, "failureHandlingTerminateOngoing" },
3290   {   6, "cGI-SAICHange" },
3291   {   7, "rAIChange" },
3292   {   8, "dT-Establishment" },
3293   {   9, "dT-Removal" },
3294   {  10, "eCGIChange" },
3295   {  11, "tAIChange" },
3296   {  12, "userLocationChange" },
3297   {  13, "userCSGInformationChange" },
3298   {  14, "presenceInPRAChange" },
3299   {  15, "removalOfAccess" },
3300   {  16, "unusabilityOfAccess" },
3301   {  17, "indirectChangeCondition" },
3302   {  18, "userPlaneToUEChange" },
3303   {  19, "servingPLMNRateControlChange" },
3304   {  20, "threeGPPPSDataOffStatusChange" },
3305   {  21, "aPNRateControlChange" },
3306   { 0, NULL }
3307 };
3308 
3309 
3310 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_)3311 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_) {
3312   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3313                                   NULL);
3314 
3315   return offset;
3316 }
3317 
3318 
3319 
3320 static int
dissect_gprscdr_T_userLocationInformation_08(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3321 dissect_gprscdr_T_userLocationInformation_08(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3322 #line 211 "./asn1/gprscdr/gprscdr.cnf"
3323 
3324   offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
3325 
3326 
3327 
3328   return offset;
3329 }
3330 
3331 
3332 
3333 static int
dissect_gprscdr_T_aRP(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3334 dissect_gprscdr_T_aRP(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3335 #line 154 "./asn1/gprscdr/gprscdr.cnf"
3336   proto_tree *ext_tree_arp;
3337   guint length;
3338 
3339   /*
3340    * 8.86 Allocation/Retention Priority (ARP)
3341    * 3GPP TS 29.274
3342    */
3343 
3344   length = tvb_reported_length(tvb);
3345   ext_tree_arp = proto_tree_add_subtree(tree, tvb, 0, length, ett_gprscdr_eps_qos_arp, NULL, "aRP");
3346 
3347   dissect_gtpv2_arp(tvb, actx->pinfo, ext_tree_arp, NULL, length, 0, 0, NULL);
3348 
3349   offset = length;
3350 
3351 
3352 
3353 
3354   return offset;
3355 }
3356 
3357 
3358 static const ber_sequence_t EPCQoSInformation_sequence[] = {
3359   { &hf_gprscdr_qCI         , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3360   { &hf_gprscdr_maxRequestedBandwithUL, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3361   { &hf_gprscdr_maxRequestedBandwithDL, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3362   { &hf_gprscdr_guaranteedBitrateUL, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3363   { &hf_gprscdr_guaranteedBitrateDL, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3364   { &hf_gprscdr_aRP         , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_aRP },
3365   { &hf_gprscdr_aPNAggregateMaxBitrateUL, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3366   { &hf_gprscdr_aPNAggregateMaxBitrateDL, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3367   { &hf_gprscdr_extendedMaxRequestedBWUL, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3368   { &hf_gprscdr_extendedMaxRequestedBWDL, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3369   { &hf_gprscdr_extendedGBRUL, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3370   { &hf_gprscdr_extendedGBRDL, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3371   { &hf_gprscdr_extendedAPNAMBRUL, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3372   { &hf_gprscdr_extendedAPNAMBRDL, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3373   { NULL, 0, 0, 0, NULL }
3374 };
3375 
3376 static int
dissect_gprscdr_EPCQoSInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3377 dissect_gprscdr_EPCQoSInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3378   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3379                                    EPCQoSInformation_sequence, hf_index, ett_gprscdr_EPCQoSInformation);
3380 
3381   return offset;
3382 }
3383 
3384 
3385 static const value_string gprscdr_PresenceReportingAreaStatus_vals[] = {
3386   {   0, "insideArea" },
3387   {   1, "outsideArea" },
3388   {   2, "inactive" },
3389   {   3, "unknown" },
3390   { 0, NULL }
3391 };
3392 
3393 
3394 static int
dissect_gprscdr_PresenceReportingAreaStatus(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3395 dissect_gprscdr_PresenceReportingAreaStatus(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3396   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3397                                   NULL);
3398 
3399   return offset;
3400 }
3401 
3402 
3403 
3404 static int
dissect_gprscdr_CSGId(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3405 dissect_gprscdr_CSGId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3406   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
3407                                        NULL);
3408 
3409   return offset;
3410 }
3411 
3412 
3413 static const value_string gprscdr_CSGAccessMode_vals[] = {
3414   {   0, "closedMode" },
3415   {   1, "hybridMode" },
3416   { 0, NULL }
3417 };
3418 
3419 
3420 static int
dissect_gprscdr_CSGAccessMode(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3421 dissect_gprscdr_CSGAccessMode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3422   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3423                                   NULL);
3424 
3425   return offset;
3426 }
3427 
3428 
3429 static const ber_sequence_t UserCSGInformation_sequence[] = {
3430   { &hf_gprscdr_cSGId       , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CSGId },
3431   { &hf_gprscdr_cSGAccessMode, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_CSGAccessMode },
3432   { &hf_gprscdr_cSGMembershipIndication, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
3433   { NULL, 0, 0, 0, NULL }
3434 };
3435 
3436 static int
dissect_gprscdr_UserCSGInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3437 dissect_gprscdr_UserCSGInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3438   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3439                                    UserCSGInformation_sequence, hf_index, ett_gprscdr_UserCSGInformation);
3440 
3441   return offset;
3442 }
3443 
3444 
3445 
3446 static int
dissect_gprscdr_AccessAvailabilityChangeReason(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3447 dissect_gprscdr_AccessAvailabilityChangeReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3448   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3449                                                 NULL);
3450 
3451   return offset;
3452 }
3453 
3454 
3455 
3456 static int
dissect_gprscdr_OCTET_STRING_SIZE_2(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3457 dissect_gprscdr_OCTET_STRING_SIZE_2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3458   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
3459                                        NULL);
3460 
3461   return offset;
3462 }
3463 
3464 
3465 static const ber_sequence_t WLANOperatorId_sequence[] = {
3466   { &hf_gprscdr_wLANOperatorName, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
3467   { &hf_gprscdr_wLANPLMNId  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
3468   { NULL, 0, 0, 0, NULL }
3469 };
3470 
3471 static int
dissect_gprscdr_WLANOperatorId(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3472 dissect_gprscdr_WLANOperatorId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3473   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3474                                    WLANOperatorId_sequence, hf_index, ett_gprscdr_WLANOperatorId);
3475 
3476   return offset;
3477 }
3478 
3479 
3480 static const ber_sequence_t UWANUserLocationInfo_sequence[] = {
3481   { &hf_gprscdr_uELocalIPAddress, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_IPAddress },
3482   { &hf_gprscdr_uDPSourcePort, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING_SIZE_2 },
3483   { &hf_gprscdr_sSID        , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
3484   { &hf_gprscdr_bSSID       , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
3485   { &hf_gprscdr_tCPSourcePort, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING_SIZE_2 },
3486   { &hf_gprscdr_civicAddressInformation, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CivicAddressInformation },
3487   { &hf_gprscdr_wLANOperatorId, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_WLANOperatorId },
3488   { &hf_gprscdr_logicalAccessID, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
3489   { NULL, 0, 0, 0, NULL }
3490 };
3491 
3492 static int
dissect_gprscdr_UWANUserLocationInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3493 dissect_gprscdr_UWANUserLocationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3494   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3495                                    UWANUserLocationInfo_sequence, hf_index, ett_gprscdr_UWANUserLocationInfo);
3496 
3497   return offset;
3498 }
3499 
3500 
3501 
3502 static int
dissect_gprscdr_T_userLocationInformation_10(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3503 dissect_gprscdr_T_userLocationInformation_10(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3504 #line 219 "./asn1/gprscdr/gprscdr.cnf"
3505 
3506   offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
3507 
3508 
3509 
3510   return offset;
3511 }
3512 
3513 
3514 static const ber_sequence_t RelatedChangeOfCharCondition_sequence[] = {
3515   { &hf_gprscdr_changeCondition_01, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChangeCondition },
3516   { &hf_gprscdr_changeTime  , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3517   { &hf_gprscdr_userLocationInformation_11, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_10 },
3518   { &hf_gprscdr_presenceReportingAreaStatus, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaStatus },
3519   { &hf_gprscdr_userCSGInformation, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UserCSGInformation },
3520   { &hf_gprscdr_rATType     , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
3521   { &hf_gprscdr_uWANUserLocationInformation, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UWANUserLocationInfo },
3522   { NULL, 0, 0, 0, NULL }
3523 };
3524 
3525 static int
dissect_gprscdr_RelatedChangeOfCharCondition(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3526 dissect_gprscdr_RelatedChangeOfCharCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3527   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3528                                    RelatedChangeOfCharCondition_sequence, hf_index, ett_gprscdr_RelatedChangeOfCharCondition);
3529 
3530   return offset;
3531 }
3532 
3533 
3534 
3535 static int
dissect_gprscdr_CPCIoTEPSOptimisationIndicator(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3536 dissect_gprscdr_CPCIoTEPSOptimisationIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3537   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
3538 
3539   return offset;
3540 }
3541 
3542 
3543 static const ber_sequence_t ServingPLMNRateControl_sequence[] = {
3544   { &hf_gprscdr_sPLMNDLRateControlValue, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3545   { &hf_gprscdr_sPLMNULRateControlValue, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3546   { NULL, 0, 0, 0, NULL }
3547 };
3548 
3549 static int
dissect_gprscdr_ServingPLMNRateControl(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3550 dissect_gprscdr_ServingPLMNRateControl(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3551   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3552                                    ServingPLMNRateControl_sequence, hf_index, ett_gprscdr_ServingPLMNRateControl);
3553 
3554   return offset;
3555 }
3556 
3557 
3558 
3559 static int
dissect_gprscdr_PresenceReportingAreaElementsList(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3560 dissect_gprscdr_PresenceReportingAreaElementsList(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3561   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
3562                                        NULL);
3563 
3564   return offset;
3565 }
3566 
3567 
3568 static int * const PresenceReportingAreaNode_bits[] = {
3569   &hf_gprscdr_PresenceReportingAreaNode_oCS,
3570   &hf_gprscdr_PresenceReportingAreaNode_pCRF,
3571   NULL
3572 };
3573 
3574 static int
dissect_gprscdr_PresenceReportingAreaNode(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3575 dissect_gprscdr_PresenceReportingAreaNode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3576   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
3577                                     PresenceReportingAreaNode_bits, 2, hf_index, ett_gprscdr_PresenceReportingAreaNode,
3578                                     NULL);
3579 
3580   return offset;
3581 }
3582 
3583 
3584 static const ber_sequence_t PresenceReportingAreaInfo_sequence[] = {
3585   { &hf_gprscdr_presenceReportingAreaIdentifier, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
3586   { &hf_gprscdr_presenceReportingAreaStatus, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaStatus },
3587   { &hf_gprscdr_presenceReportingAreaElementsList, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaElementsList },
3588   { &hf_gprscdr_presenceReportingAreaNode, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaNode },
3589   { NULL, 0, 0, 0, NULL }
3590 };
3591 
3592 static int
dissect_gprscdr_PresenceReportingAreaInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3593 dissect_gprscdr_PresenceReportingAreaInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3594   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3595                                    PresenceReportingAreaInfo_sequence, hf_index, ett_gprscdr_PresenceReportingAreaInfo);
3596 
3597   return offset;
3598 }
3599 
3600 
3601 static const ber_sequence_t SEQUENCE_OF_PresenceReportingAreaInfo_sequence_of[1] = {
3602   { &hf_gprscdr_listOfPresenceReportingAreaInformation_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_PresenceReportingAreaInfo },
3603 };
3604 
3605 static int
dissect_gprscdr_SEQUENCE_OF_PresenceReportingAreaInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3606 dissect_gprscdr_SEQUENCE_OF_PresenceReportingAreaInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3607   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3608                                       SEQUENCE_OF_PresenceReportingAreaInfo_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_PresenceReportingAreaInfo);
3609 
3610   return offset;
3611 }
3612 
3613 
3614 static const value_string gprscdr_AdditionalExceptionReports_vals[] = {
3615   {   0, "notAllowed" },
3616   {   1, "allowed" },
3617   { 0, NULL }
3618 };
3619 
3620 
3621 static int
dissect_gprscdr_AdditionalExceptionReports(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3622 dissect_gprscdr_AdditionalExceptionReports(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3623   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3624                                   NULL);
3625 
3626   return offset;
3627 }
3628 
3629 
3630 static const value_string gprscdr_RateControlTimeUnit_vals[] = {
3631   {   0, "unrestricted" },
3632   {   1, "minute" },
3633   {   2, "hour" },
3634   {   3, "day" },
3635   {   4, "week" },
3636   { 0, NULL }
3637 };
3638 
3639 
3640 static int
dissect_gprscdr_RateControlTimeUnit(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3641 dissect_gprscdr_RateControlTimeUnit(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3642   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3643                                                 NULL);
3644 
3645   return offset;
3646 }
3647 
3648 
3649 static const ber_sequence_t APNRateControlParameters_sequence[] = {
3650   { &hf_gprscdr_additionalExceptionReports, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AdditionalExceptionReports },
3651   { &hf_gprscdr_rateControlTimeUnit, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RateControlTimeUnit },
3652   { &hf_gprscdr_rateControlMaxRate, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3653   { &hf_gprscdr_rateControlMaxMessageSize, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
3654   { NULL, 0, 0, 0, NULL }
3655 };
3656 
3657 static int
dissect_gprscdr_APNRateControlParameters(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3658 dissect_gprscdr_APNRateControlParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3659   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3660                                    APNRateControlParameters_sequence, hf_index, ett_gprscdr_APNRateControlParameters);
3661 
3662   return offset;
3663 }
3664 
3665 
3666 static const ber_sequence_t APNRateControl_sequence[] = {
3667   { &hf_gprscdr_aPNRateControlUplink, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNRateControlParameters },
3668   { &hf_gprscdr_aPNRateControlDownlink, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNRateControlParameters },
3669   { NULL, 0, 0, 0, NULL }
3670 };
3671 
3672 static int
dissect_gprscdr_APNRateControl(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3673 dissect_gprscdr_APNRateControl(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3674   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3675                                    APNRateControl_sequence, hf_index, ett_gprscdr_APNRateControl);
3676 
3677   return offset;
3678 }
3679 
3680 
3681 static const ber_sequence_t ChangeOfCharCondition_sequence[] = {
3682   { &hf_gprscdr_qosRequested, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation },
3683   { &hf_gprscdr_qosNegotiated, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation },
3684   { &hf_gprscdr_dataVolumeGPRSUplink, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
3685   { &hf_gprscdr_dataVolumeGPRSDownlink, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
3686   { &hf_gprscdr_changeCondition_01, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChangeCondition },
3687   { &hf_gprscdr_changeTime  , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3688   { &hf_gprscdr_userLocationInformation_09, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_08 },
3689   { &hf_gprscdr_ePCQoSInformation, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EPCQoSInformation },
3690   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
3691   { &hf_gprscdr_presenceReportingAreaStatus, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaStatus },
3692   { &hf_gprscdr_userCSGInformation, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UserCSGInformation },
3693   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
3694   { &hf_gprscdr_enhancedDiagnostics, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EnhancedDiagnostics },
3695   { &hf_gprscdr_rATType     , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
3696   { &hf_gprscdr_accessAvailabilityChangeReason, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessAvailabilityChangeReason },
3697   { &hf_gprscdr_uWANUserLocationInformation, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UWANUserLocationInfo },
3698   { &hf_gprscdr_relatedChangeOfCharCondition, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RelatedChangeOfCharCondition },
3699   { &hf_gprscdr_cPCIoTEPSOptimisationIndicator, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CPCIoTEPSOptimisationIndicator },
3700   { &hf_gprscdr_servingPLMNRateControl, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ServingPLMNRateControl },
3701   { &hf_gprscdr_threeGPPPSDataOffStatus, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ThreeGPPPSDataOffStatus },
3702   { &hf_gprscdr_listOfPresenceReportingAreaInformation, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_PresenceReportingAreaInfo },
3703   { &hf_gprscdr_aPNRateControl, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNRateControl },
3704   { NULL, 0, 0, 0, NULL }
3705 };
3706 
3707 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_)3708 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_) {
3709   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3710                                    ChangeOfCharCondition_sequence, hf_index, ett_gprscdr_ChangeOfCharCondition);
3711 
3712   return offset;
3713 }
3714 
3715 
3716 static const ber_sequence_t SEQUENCE_OF_ChangeOfCharCondition_sequence_of[1] = {
3717   { &hf_gprscdr_listOfTrafficVolumes_item_01, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeOfCharCondition },
3718 };
3719 
3720 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_)3721 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_) {
3722   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3723                                       SEQUENCE_OF_ChangeOfCharCondition_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeOfCharCondition);
3724 
3725   return offset;
3726 }
3727 
3728 
3729 static const ber_sequence_t SGSNPDPRecord_set[] = {
3730   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
3731   { &hf_gprscdr_networkInitiation, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NetworkInitiatedPDPContext },
3732   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
3733   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
3734   { &hf_gprscdr_sgsnAddress_01, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
3735   { &hf_gprscdr_msNetworkCapability, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSNetworkCapability },
3736   { &hf_gprscdr_routingArea , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
3737   { &hf_gprscdr_locationAreaCode, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode },
3738   { &hf_gprscdr_cellIdentifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId },
3739   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
3740   { &hf_gprscdr_ggsnAddressUsed, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
3741   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
3742   { &hf_gprscdr_pdpType     , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
3743   { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
3744   { &hf_gprscdr_listOfTrafficVolumes_01, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition },
3745   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3746   { &hf_gprscdr_duration    , BER_CLASS_CON, 17, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
3747   { &hf_gprscdr_sgsnChange  , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNChange },
3748   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 19, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
3749   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
3750   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
3751   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
3752   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
3753   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
3754   { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode },
3755   { &hf_gprscdr_accessPointNameOI, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameOI },
3756   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
3757   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 28, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
3758   { &hf_gprscdr_rATType     , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
3759   { &hf_gprscdr_cAMELInformationPDP, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELInformationPDP },
3760   { &hf_gprscdr_rNCUnsentDownlinkVolume, BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
3761   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
3762   { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
3763   { &hf_gprscdr_iMSIunauthenticatedFlag, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
3764   { &hf_gprscdr_userCSGInformation, BER_CLASS_CON, 35, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UserCSGInformation },
3765   { &hf_gprscdr_servedPDPPDNAddressExt, BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
3766   { &hf_gprscdr_lowPriorityIndicator, BER_CLASS_CON, 37, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
3767   { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 38, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
3768   { &hf_gprscdr_cNOperatorSelectionEnt, BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNOperatorSelectionEntity },
3769   { NULL, 0, 0, 0, NULL }
3770 };
3771 
3772 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_)3773 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_) {
3774   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3775                               SGSNPDPRecord_set, hf_index, ett_gprscdr_SGSNPDPRecord);
3776 
3777   return offset;
3778 }
3779 
3780 
3781 static const value_string gprscdr_ServingNodeType_vals[] = {
3782   {   0, "sGSN" },
3783   {   1, "pMIPSGW" },
3784   {   2, "gTPSGW" },
3785   {   3, "ePDG" },
3786   {   4, "hSGW" },
3787   {   5, "mME" },
3788   {   6, "tWAN" },
3789   { 0, NULL }
3790 };
3791 
3792 
3793 static int
dissect_gprscdr_ServingNodeType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)3794 dissect_gprscdr_ServingNodeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3795   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3796                                   NULL);
3797 
3798   return offset;
3799 }
3800 
3801 
3802 static const ber_sequence_t SGSNSMORecord_set[] = {
3803   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
3804   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
3805   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
3806   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
3807   { &hf_gprscdr_msNetworkCapability, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSNetworkCapability },
3808   { &hf_gprscdr_serviceCentre, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
3809   { &hf_gprscdr_recordingEntity, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordingEntity },
3810   { &hf_gprscdr_locationArea, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode },
3811   { &hf_gprscdr_routingArea , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
3812   { &hf_gprscdr_cellIdentifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId },
3813   { &hf_gprscdr_messageReference, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gprscdr_MessageReference },
3814   { &hf_gprscdr_eventTimeStamp, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3815   { &hf_gprscdr_smsResult   , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_SMSResult },
3816   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
3817   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
3818   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
3819   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 16, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
3820   { &hf_gprscdr_rATType     , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
3821   { &hf_gprscdr_destinationNumber, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SmsTpDestinationNumber },
3822   { &hf_gprscdr_cAMELInformationSMS, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELInformationSMS },
3823   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
3824   { &hf_gprscdr_servingNodeType_01, BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_gprscdr_ServingNodeType },
3825   { &hf_gprscdr_servingNodeAddress_01, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
3826   { &hf_gprscdr_servingNodeiPv6Address_01, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
3827   { &hf_gprscdr_mMEName     , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DiameterIdentity },
3828   { &hf_gprscdr_mMERealm    , BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DiameterIdentity },
3829   { &hf_gprscdr_userLocationInformation_08, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
3830   { &hf_gprscdr_retransmission, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
3831   { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
3832   { &hf_gprscdr_userLocationInfoTime, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3833   { &hf_gprscdr_cNOperatorSelectionEnt, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNOperatorSelectionEntity },
3834   { NULL, 0, 0, 0, NULL }
3835 };
3836 
3837 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_)3838 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_) {
3839   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3840                               SGSNSMORecord_set, hf_index, ett_gprscdr_SGSNSMORecord);
3841 
3842   return offset;
3843 }
3844 
3845 
3846 static const ber_sequence_t SGSNSMTRecord_set[] = {
3847   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
3848   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
3849   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
3850   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
3851   { &hf_gprscdr_msNetworkCapability, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSNetworkCapability },
3852   { &hf_gprscdr_serviceCentre, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
3853   { &hf_gprscdr_recordingEntity, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordingEntity },
3854   { &hf_gprscdr_locationArea, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaCode },
3855   { &hf_gprscdr_routingArea , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
3856   { &hf_gprscdr_cellIdentifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CellId },
3857   { &hf_gprscdr_eventTimeStamp, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3858   { &hf_gprscdr_smsResult   , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_SMSResult },
3859   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
3860   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
3861   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
3862   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
3863   { &hf_gprscdr_rATType     , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
3864   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
3865   { &hf_gprscdr_cAMELInformationSMS, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CAMELInformationSMS },
3866   { &hf_gprscdr_originatingAddress, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_AddressString },
3867   { &hf_gprscdr_servingNodeType_01, BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_gprscdr_ServingNodeType },
3868   { &hf_gprscdr_servingNodeAddress_01, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
3869   { &hf_gprscdr_servingNodeiPv6Address_01, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
3870   { &hf_gprscdr_mMEName     , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DiameterIdentity },
3871   { &hf_gprscdr_mMERealm    , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DiameterIdentity },
3872   { &hf_gprscdr_userLocationInformation_08, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
3873   { &hf_gprscdr_retransmission, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
3874   { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
3875   { &hf_gprscdr_userLocationInfoTime, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3876   { &hf_gprscdr_cNOperatorSelectionEnt, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNOperatorSelectionEntity },
3877   { NULL, 0, 0, 0, NULL }
3878 };
3879 
3880 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_)3881 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_) {
3882   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3883                               SGSNSMTRecord_set, hf_index, ett_gprscdr_SGSNSMTRecord);
3884 
3885   return offset;
3886 }
3887 
3888 
3889 static const ber_sequence_t SGSNMTLCSRecord_set[] = {
3890   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
3891   { &hf_gprscdr_recordingEntity, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordingEntity },
3892   { &hf_gprscdr_lcsClientType, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSClientType },
3893   { &hf_gprscdr_lcsClientIdentity, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSClientIdentity },
3894   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
3895   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
3896   { &hf_gprscdr_sgsnAddress_01, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
3897   { &hf_gprscdr_locationType, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LocationType },
3898   { &hf_gprscdr_lcsQos      , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSQoSInfo },
3899   { &hf_gprscdr_lcsPriority , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_Priority },
3900   { &hf_gprscdr_mlcNumber   , BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
3901   { &hf_gprscdr_eventTimeStamp, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3902   { &hf_gprscdr_measurementDuration, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
3903   { &hf_gprscdr_notificationToMSUser, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ms_NotificationToMSUser },
3904   { &hf_gprscdr_privacyOverride, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
3905   { &hf_gprscdr_location    , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaAndCell },
3906   { &hf_gprscdr_routingArea , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
3907   { &hf_gprscdr_locationEstimate, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation },
3908   { &hf_gprscdr_positioningData, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PositioningData },
3909   { &hf_gprscdr_lcsCause    , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSCause },
3910   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
3911   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
3912   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
3913   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
3914   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
3915   { &hf_gprscdr_rATType     , BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
3916   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
3917   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 27, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
3918   { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
3919   { &hf_gprscdr_cNOperatorSelectionEnt, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNOperatorSelectionEntity },
3920   { NULL, 0, 0, 0, NULL }
3921 };
3922 
3923 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_)3924 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_) {
3925   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3926                               SGSNMTLCSRecord_set, hf_index, ett_gprscdr_SGSNMTLCSRecord);
3927 
3928   return offset;
3929 }
3930 
3931 
3932 static const ber_sequence_t SGSNMOLCSRecord_set[] = {
3933   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
3934   { &hf_gprscdr_recordingEntity, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordingEntity },
3935   { &hf_gprscdr_lcsClientType, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSClientType },
3936   { &hf_gprscdr_lcsClientIdentity, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSClientIdentity },
3937   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
3938   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
3939   { &hf_gprscdr_sgsnAddress_01, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
3940   { &hf_gprscdr_locationMethod, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gsm_ss_LocationMethod },
3941   { &hf_gprscdr_lcsQos      , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSQoSInfo },
3942   { &hf_gprscdr_lcsPriority , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_Priority },
3943   { &hf_gprscdr_mlcNumber   , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
3944   { &hf_gprscdr_eventTimeStamp, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3945   { &hf_gprscdr_measurementDuration, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
3946   { &hf_gprscdr_location    , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaAndCell },
3947   { &hf_gprscdr_routingArea , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
3948   { &hf_gprscdr_locationEstimate, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation },
3949   { &hf_gprscdr_positioningData, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PositioningData },
3950   { &hf_gprscdr_lcsCause    , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSCause },
3951   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
3952   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
3953   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
3954   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
3955   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
3956   { &hf_gprscdr_rATType     , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
3957   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
3958   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
3959   { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
3960   { &hf_gprscdr_cNOperatorSelectionEnt, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNOperatorSelectionEntity },
3961   { NULL, 0, 0, 0, NULL }
3962 };
3963 
3964 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_)3965 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_) {
3966   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3967                               SGSNMOLCSRecord_set, hf_index, ett_gprscdr_SGSNMOLCSRecord);
3968 
3969   return offset;
3970 }
3971 
3972 
3973 static const ber_sequence_t SGSNNILCSRecord_set[] = {
3974   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
3975   { &hf_gprscdr_recordingEntity, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordingEntity },
3976   { &hf_gprscdr_lcsClientType, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCSClientType },
3977   { &hf_gprscdr_lcsClientIdentity, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSClientIdentity },
3978   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
3979   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
3980   { &hf_gprscdr_sgsnAddress_01, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
3981   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
3982   { &hf_gprscdr_lcsQos      , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSQoSInfo },
3983   { &hf_gprscdr_lcsPriority , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_LCS_Priority },
3984   { &hf_gprscdr_mlcNumber   , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_ISDN_AddressString },
3985   { &hf_gprscdr_eventTimeStamp, BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
3986   { &hf_gprscdr_measurementDuration, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
3987   { &hf_gprscdr_location    , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocationAreaAndCell },
3988   { &hf_gprscdr_routingArea , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RoutingAreaCode },
3989   { &hf_gprscdr_locationEstimate, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_lcs_Ext_GeographicalInformation },
3990   { &hf_gprscdr_positioningData, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PositioningData },
3991   { &hf_gprscdr_lcsCause    , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LCSCause },
3992   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
3993   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
3994   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
3995   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
3996   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
3997   { &hf_gprscdr_rATType     , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
3998   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
3999   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
4000   { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
4001   { &hf_gprscdr_cNOperatorSelectionEnt, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNOperatorSelectionEntity },
4002   { NULL, 0, 0, 0, NULL }
4003 };
4004 
4005 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_)4006 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_) {
4007   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
4008                               SGSNNILCSRecord_set, hf_index, ett_gprscdr_SGSNNILCSRecord);
4009 
4010   return offset;
4011 }
4012 
4013 
4014 static const ber_sequence_t SEQUENCE_OF_RAIdentity_sequence_of[1] = {
4015   { &hf_gprscdr_listofRAs_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gsm_map_RAIdentity },
4016 };
4017 
4018 static int
dissect_gprscdr_SEQUENCE_OF_RAIdentity(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4019 dissect_gprscdr_SEQUENCE_OF_RAIdentity(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4020   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4021                                       SEQUENCE_OF_RAIdentity_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_RAIdentity);
4022 
4023   return offset;
4024 }
4025 
4026 
4027 
4028 static int
dissect_gprscdr_DataVolumeMBMS(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4029 dissect_gprscdr_DataVolumeMBMS(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4030   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4031                                                 NULL);
4032 
4033   return offset;
4034 }
4035 
4036 
4037 static const ber_sequence_t ChangeOfMBMSCondition_sequence[] = {
4038   { &hf_gprscdr_qosRequested, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation },
4039   { &hf_gprscdr_qosNegotiated, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation },
4040   { &hf_gprscdr_dataVolumeMBMSUplink, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeMBMS },
4041   { &hf_gprscdr_dataVolumeMBMSDownlink, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeMBMS },
4042   { &hf_gprscdr_changeCondition_01, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChangeCondition },
4043   { &hf_gprscdr_changeTime  , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4044   { &hf_gprscdr_failureHandlingContinue, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FailureHandlingContinue },
4045   { NULL, 0, 0, 0, NULL }
4046 };
4047 
4048 static int
dissect_gprscdr_ChangeOfMBMSCondition(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4049 dissect_gprscdr_ChangeOfMBMSCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4050   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4051                                    ChangeOfMBMSCondition_sequence, hf_index, ett_gprscdr_ChangeOfMBMSCondition);
4052 
4053   return offset;
4054 }
4055 
4056 
4057 static const ber_sequence_t SEQUENCE_OF_ChangeOfMBMSCondition_sequence_of[1] = {
4058   { &hf_gprscdr_listOfTrafficVolumes_item_02, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeOfMBMSCondition },
4059 };
4060 
4061 static int
dissect_gprscdr_SEQUENCE_OF_ChangeOfMBMSCondition(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4062 dissect_gprscdr_SEQUENCE_OF_ChangeOfMBMSCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4063   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4064                                       SEQUENCE_OF_ChangeOfMBMSCondition_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeOfMBMSCondition);
4065 
4066   return offset;
4067 }
4068 
4069 
4070 static const ber_sequence_t SGSNMBMSRecord_set[] = {
4071   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
4072   { &hf_gprscdr_ggsnAddress , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4073   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
4074   { &hf_gprscdr_listofRAs   , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_RAIdentity },
4075   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
4076   { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4077   { &hf_gprscdr_listOfTrafficVolumes_02, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfMBMSCondition },
4078   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4079   { &hf_gprscdr_duration    , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
4080   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
4081   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
4082   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
4083   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
4084   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
4085   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
4086   { &hf_gprscdr_sgsnPLMNIdentifier, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
4087   { &hf_gprscdr_numberofReceivingUE, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
4088   { &hf_gprscdr_mbmsInformation, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSInformation },
4089   { NULL, 0, 0, 0, NULL }
4090 };
4091 
4092 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_)4093 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_) {
4094   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
4095                               SGSNMBMSRecord_set, hf_index, ett_gprscdr_SGSNMBMSRecord);
4096 
4097   return offset;
4098 }
4099 
4100 
4101 static const ber_sequence_t GGSNMBMSRecord_set[] = {
4102   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
4103   { &hf_gprscdr_ggsnAddress , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4104   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
4105   { &hf_gprscdr_listofDownstreamNodes, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
4106   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
4107   { &hf_gprscdr_servedPDPAddress, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4108   { &hf_gprscdr_listOfTrafficVolumes_02, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfMBMSCondition },
4109   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4110   { &hf_gprscdr_duration    , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
4111   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
4112   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
4113   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
4114   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
4115   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
4116   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
4117   { &hf_gprscdr_mbmsInformation, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSInformation },
4118   { NULL, 0, 0, 0, NULL }
4119 };
4120 
4121 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_)4122 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_) {
4123   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
4124                               GGSNMBMSRecord_set, hf_index, ett_gprscdr_GGSNMBMSRecord);
4125 
4126   return offset;
4127 }
4128 
4129 
4130 
4131 static int
dissect_gprscdr_T_userLocationInformation_06(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4132 dissect_gprscdr_T_userLocationInformation_06(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4133 #line 195 "./asn1/gprscdr/gprscdr.cnf"
4134 
4135   offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
4136 
4137 
4138 
4139   return offset;
4140 }
4141 
4142 
4143 
4144 static int
dissect_gprscdr_SGWChange(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4145 dissect_gprscdr_SGWChange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4146   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
4147 
4148   return offset;
4149 }
4150 
4151 
4152 static const ber_sequence_t SEQUENCE_OF_ServingNodeType_sequence_of[1] = {
4153   { &hf_gprscdr_servingNodeType_item, BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ServingNodeType },
4154 };
4155 
4156 static int
dissect_gprscdr_SEQUENCE_OF_ServingNodeType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4157 dissect_gprscdr_SEQUENCE_OF_ServingNodeType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4158   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4159                                       SEQUENCE_OF_ServingNodeType_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ServingNodeType);
4160 
4161   return offset;
4162 }
4163 
4164 
4165 
4166 static int
dissect_gprscdr_T_lastUserLocationInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4167 dissect_gprscdr_T_lastUserLocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4168 #line 199 "./asn1/gprscdr/gprscdr.cnf"
4169 
4170   offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
4171 
4172 
4173 
4174   return offset;
4175 }
4176 
4177 
4178 
4179 static int
dissect_gprscdr_UNIPDUCPOnlyFlag(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4180 dissect_gprscdr_UNIPDUCPOnlyFlag(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4181   offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
4182 
4183   return offset;
4184 }
4185 
4186 
4187 
4188 static int
dissect_gprscdr_PDPPDNTypeExtension(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4189 dissect_gprscdr_PDPPDNTypeExtension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4190   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4191                                                 NULL);
4192 
4193   return offset;
4194 }
4195 
4196 
4197 static const ber_sequence_t MOExceptionDataCounter_sequence[] = {
4198   { &hf_gprscdr_counterValue, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
4199   { &hf_gprscdr_counterTimestamp, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4200   { NULL, 0, 0, 0, NULL }
4201 };
4202 
4203 static int
dissect_gprscdr_MOExceptionDataCounter(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4204 dissect_gprscdr_MOExceptionDataCounter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4205   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4206                                    MOExceptionDataCounter_sequence, hf_index, ett_gprscdr_MOExceptionDataCounter);
4207 
4208   return offset;
4209 }
4210 
4211 
4212 static const value_string gprscdr_SecondaryRATType_vals[] = {
4213   {   0, "nR" },
4214   { 0, NULL }
4215 };
4216 
4217 
4218 static int
dissect_gprscdr_SecondaryRATType(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4219 dissect_gprscdr_SecondaryRATType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4220   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4221                                                 NULL);
4222 
4223   return offset;
4224 }
4225 
4226 
4227 static const ber_sequence_t RANSecondaryRATUsageReport_sequence[] = {
4228   { &hf_gprscdr_dataVolumeUplink, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
4229   { &hf_gprscdr_dataVolumeDownlink, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
4230   { &hf_gprscdr_rANStartTime, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4231   { &hf_gprscdr_rANEndTime  , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4232   { &hf_gprscdr_secondaryRATType, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SecondaryRATType },
4233   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
4234   { NULL, 0, 0, 0, NULL }
4235 };
4236 
4237 static int
dissect_gprscdr_RANSecondaryRATUsageReport(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4238 dissect_gprscdr_RANSecondaryRATUsageReport(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4239   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4240                                    RANSecondaryRATUsageReport_sequence, hf_index, ett_gprscdr_RANSecondaryRATUsageReport);
4241 
4242   return offset;
4243 }
4244 
4245 
4246 static const ber_sequence_t SEQUENCE_OF_RANSecondaryRATUsageReport_sequence_of[1] = {
4247   { &hf_gprscdr_listOfRANSecondaryRATUsageReports_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_RANSecondaryRATUsageReport },
4248 };
4249 
4250 static int
dissect_gprscdr_SEQUENCE_OF_RANSecondaryRATUsageReport(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4251 dissect_gprscdr_SEQUENCE_OF_RANSecondaryRATUsageReport(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4252   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4253                                       SEQUENCE_OF_RANSecondaryRATUsageReport_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_RANSecondaryRATUsageReport);
4254 
4255   return offset;
4256 }
4257 
4258 
4259 static const ber_sequence_t SGWRecord_set[] = {
4260   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
4261   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
4262   { &hf_gprscdr_s_GWAddress , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4263   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
4264   { &hf_gprscdr_servingNodeAddress, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
4265   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
4266   { &hf_gprscdr_pdpPDNType  , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
4267   { &hf_gprscdr_servedPDPPDNAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4268   { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
4269   { &hf_gprscdr_listOfTrafficVolumes_01, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition },
4270   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4271   { &hf_gprscdr_duration    , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
4272   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
4273   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
4274   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
4275   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
4276   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
4277   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
4278   { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode },
4279   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
4280   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
4281   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
4282   { &hf_gprscdr_iMSsignalingContext, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4283   { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
4284   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
4285   { &hf_gprscdr_rATType     , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
4286   { &hf_gprscdr_mSTimeZone  , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone },
4287   { &hf_gprscdr_userLocationInformation_06, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_06 },
4288   { &hf_gprscdr_sGWChange   , BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGWChange },
4289   { &hf_gprscdr_servingNodeType, BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ServingNodeType },
4290   { &hf_gprscdr_p_GWAddressUsed, BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4291   { &hf_gprscdr_p_GWPLMNIdentifier, BER_CLASS_CON, 37, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
4292   { &hf_gprscdr_startTime   , BER_CLASS_CON, 38, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4293   { &hf_gprscdr_stopTime    , BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4294   { &hf_gprscdr_pDNConnectionChargingID, BER_CLASS_CON, 40, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
4295   { &hf_gprscdr_iMSIunauthenticatedFlag, BER_CLASS_CON, 41, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4296   { &hf_gprscdr_userCSGInformation, BER_CLASS_CON, 42, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UserCSGInformation },
4297   { &hf_gprscdr_servedPDPPDNAddressExt, BER_CLASS_CON, 43, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4298   { &hf_gprscdr_lowPriorityIndicator, BER_CLASS_CON, 44, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4299   { &hf_gprscdr_dynamicAddressFlagExt, BER_CLASS_CON, 47, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
4300   { &hf_gprscdr_s_GWiPv6Address, BER_CLASS_CON, 48, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4301   { &hf_gprscdr_servingNodeiPv6Address, BER_CLASS_CON, 49, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
4302   { &hf_gprscdr_p_GWiPv6AddressUsed, BER_CLASS_CON, 50, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4303   { &hf_gprscdr_retransmission, BER_CLASS_CON, 51, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4304   { &hf_gprscdr_userLocationInfoTime, BER_CLASS_CON, 52, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4305   { &hf_gprscdr_cNOperatorSelectionEnt, BER_CLASS_CON, 53, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNOperatorSelectionEntity },
4306   { &hf_gprscdr_presenceReportingAreaInfo, BER_CLASS_CON, 54, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaInfo },
4307   { &hf_gprscdr_lastUserLocationInformation, BER_CLASS_CON, 55, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_lastUserLocationInformation },
4308   { &hf_gprscdr_lastMSTimeZone, BER_CLASS_CON, 56, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone },
4309   { &hf_gprscdr_enhancedDiagnostics, BER_CLASS_CON, 57, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EnhancedDiagnostics },
4310   { &hf_gprscdr_cPCIoTEPSOptimisationIndicator, BER_CLASS_CON, 59, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CPCIoTEPSOptimisationIndicator },
4311   { &hf_gprscdr_uNIPDUCPOnlyFlag, BER_CLASS_CON, 60, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UNIPDUCPOnlyFlag },
4312   { &hf_gprscdr_servingPLMNRateControl, BER_CLASS_CON, 61, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ServingPLMNRateControl },
4313   { &hf_gprscdr_pDPPDNTypeExtension, BER_CLASS_CON, 62, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPPDNTypeExtension },
4314   { &hf_gprscdr_mOExceptionDataCounter, BER_CLASS_CON, 63, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MOExceptionDataCounter },
4315   { &hf_gprscdr_listOfRANSecondaryRATUsageReports, BER_CLASS_CON, 64, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_RANSecondaryRATUsageReport },
4316   { &hf_gprscdr_pSCellInformation, BER_CLASS_CON, 65, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSCellInformation },
4317   { NULL, 0, 0, 0, NULL }
4318 };
4319 
4320 static int
dissect_gprscdr_SGWRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4321 dissect_gprscdr_SGWRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4322   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
4323                               SGWRecord_set, hf_index, ett_gprscdr_SGWRecord);
4324 
4325   return offset;
4326 }
4327 
4328 
4329 
4330 static int
dissect_gprscdr_T_userLocationInformation_07(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4331 dissect_gprscdr_T_userLocationInformation_07(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4332 #line 203 "./asn1/gprscdr/gprscdr.cnf"
4333 
4334   offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
4335 
4336 
4337 
4338   return offset;
4339 }
4340 
4341 
4342 static int * const ServiceConditionChange_bits[] = {
4343   &hf_gprscdr_ServiceConditionChange_qoSChange,
4344   &hf_gprscdr_ServiceConditionChange_sGSNChange,
4345   &hf_gprscdr_ServiceConditionChange_sGSNPLMNIDChange,
4346   &hf_gprscdr_ServiceConditionChange_tariffTimeSwitch,
4347   &hf_gprscdr_ServiceConditionChange_pDPContextRelease,
4348   &hf_gprscdr_ServiceConditionChange_rATChange,
4349   &hf_gprscdr_ServiceConditionChange_serviceIdledOut,
4350   &hf_gprscdr_ServiceConditionChange_reserved,
4351   &hf_gprscdr_ServiceConditionChange_configurationChange,
4352   &hf_gprscdr_ServiceConditionChange_serviceStop,
4353   &hf_gprscdr_ServiceConditionChange_dCCATimeThresholdReached,
4354   &hf_gprscdr_ServiceConditionChange_dCCAVolumeThresholdReached,
4355   &hf_gprscdr_ServiceConditionChange_dCCAServiceSpecificUnitThresholdReached,
4356   &hf_gprscdr_ServiceConditionChange_dCCATimeExhausted,
4357   &hf_gprscdr_ServiceConditionChange_dCCAVolumeExhausted,
4358   &hf_gprscdr_ServiceConditionChange_dCCAValidityTimeout,
4359   &hf_gprscdr_ServiceConditionChange_reserved1,
4360   &hf_gprscdr_ServiceConditionChange_dCCAReauthorisationRequest,
4361   &hf_gprscdr_ServiceConditionChange_dCCAContinueOngoingSession,
4362   &hf_gprscdr_ServiceConditionChange_dCCARetryAndTerminateOngoingSession,
4363   &hf_gprscdr_ServiceConditionChange_dCCATerminateOngoingSession,
4364   &hf_gprscdr_ServiceConditionChange_cGI_SAIChange,
4365   &hf_gprscdr_ServiceConditionChange_rAIChange,
4366   &hf_gprscdr_ServiceConditionChange_dCCAServiceSpecificUnitExhausted,
4367   &hf_gprscdr_ServiceConditionChange_recordClosure,
4368   &hf_gprscdr_ServiceConditionChange_timeLimit,
4369   &hf_gprscdr_ServiceConditionChange_volumeLimit,
4370   &hf_gprscdr_ServiceConditionChange_serviceSpecificUnitLimit,
4371   &hf_gprscdr_ServiceConditionChange_envelopeClosure,
4372   &hf_gprscdr_ServiceConditionChange_eCGIChange,
4373   &hf_gprscdr_ServiceConditionChange_tAIChange,
4374   &hf_gprscdr_ServiceConditionChange_userLocationChange,
4375   &hf_gprscdr_ServiceConditionChange_userCSGInformationChange,
4376   &hf_gprscdr_ServiceConditionChange_presenceInPRAChange,
4377   &hf_gprscdr_ServiceConditionChange_accessChangeOfSDF,
4378   &hf_gprscdr_ServiceConditionChange_indirectServiceConditionChange,
4379   &hf_gprscdr_ServiceConditionChange_servingPLMNRateControlChange,
4380   &hf_gprscdr_ServiceConditionChange_aPNRateControlChange,
4381   NULL
4382 };
4383 
4384 static int
dissect_gprscdr_ServiceConditionChange(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4385 dissect_gprscdr_ServiceConditionChange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4386   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
4387                                     ServiceConditionChange_bits, 38, hf_index, ett_gprscdr_ServiceConditionChange,
4388                                     NULL);
4389 
4390   return offset;
4391 }
4392 
4393 
4394 
4395 static int
dissect_gprscdr_T_userLocationInformation_09(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4396 dissect_gprscdr_T_userLocationInformation_09(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4397 #line 215 "./asn1/gprscdr/gprscdr.cnf"
4398 
4399   offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
4400 
4401 
4402 
4403   return offset;
4404 }
4405 
4406 
4407 static const ber_sequence_t SEQUENCE_OF_ServiceSpecificInfo_sequence_of[1] = {
4408   { &hf_gprscdr_serviceSpecificInfo_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ServiceSpecificInfo },
4409 };
4410 
4411 static int
dissect_gprscdr_SEQUENCE_OF_ServiceSpecificInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4412 dissect_gprscdr_SEQUENCE_OF_ServiceSpecificInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4413   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4414                                       SEQUENCE_OF_ServiceSpecificInfo_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ServiceSpecificInfo);
4415 
4416   return offset;
4417 }
4418 
4419 
4420 
4421 static int
dissect_gprscdr_ADCRuleBaseName(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4422 dissect_gprscdr_ADCRuleBaseName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4423   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
4424                                             actx, tree, tvb, offset, hf_index,
4425                                             NULL);
4426 
4427   return offset;
4428 }
4429 
4430 
4431 
4432 static int
dissect_gprscdr_T_userLocationInformation_11(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4433 dissect_gprscdr_T_userLocationInformation_11(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4434 #line 223 "./asn1/gprscdr/gprscdr.cnf"
4435 
4436   offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
4437 
4438 
4439 
4440   return offset;
4441 }
4442 
4443 
4444 static const ber_sequence_t RelatedChangeOfServiceCondition_sequence[] = {
4445   { &hf_gprscdr_userLocationInformation_12, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_11 },
4446   { &hf_gprscdr_threeGPP2UserLocationInformation, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4447   { &hf_gprscdr_presenceReportingAreaStatus, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaStatus },
4448   { &hf_gprscdr_userCSGInformation, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UserCSGInformation },
4449   { &hf_gprscdr_rATType     , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
4450   { &hf_gprscdr_uWANUserLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UWANUserLocationInfo },
4451   { &hf_gprscdr_relatedServiceConditionChange, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceConditionChange },
4452   { NULL, 0, 0, 0, NULL }
4453 };
4454 
4455 static int
dissect_gprscdr_RelatedChangeOfServiceCondition(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4456 dissect_gprscdr_RelatedChangeOfServiceCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4457   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4458                                    RelatedChangeOfServiceCondition_sequence, hf_index, ett_gprscdr_RelatedChangeOfServiceCondition);
4459 
4460   return offset;
4461 }
4462 
4463 
4464 
4465 static int
dissect_gprscdr_TrafficSteeringPolicyIDDownlink(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4466 dissect_gprscdr_TrafficSteeringPolicyIDDownlink(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4467   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
4468                                        NULL);
4469 
4470   return offset;
4471 }
4472 
4473 
4474 
4475 static int
dissect_gprscdr_TrafficSteeringPolicyIDUplink(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4476 dissect_gprscdr_TrafficSteeringPolicyIDUplink(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4477   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
4478                                        NULL);
4479 
4480   return offset;
4481 }
4482 
4483 
4484 static const ber_sequence_t TWANUserLocationInfo_sequence[] = {
4485   { &hf_gprscdr_sSID        , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4486   { &hf_gprscdr_bSSID       , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4487   { &hf_gprscdr_civicAddressInformation, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CivicAddressInformation },
4488   { &hf_gprscdr_wLANOperatorId, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_WLANOperatorId },
4489   { &hf_gprscdr_logicalAccessID, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4490   { NULL, 0, 0, 0, NULL }
4491 };
4492 
4493 static int
dissect_gprscdr_TWANUserLocationInfo(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4494 dissect_gprscdr_TWANUserLocationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4495   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4496                                    TWANUserLocationInfo_sequence, hf_index, ett_gprscdr_TWANUserLocationInfo);
4497 
4498   return offset;
4499 }
4500 
4501 
4502 static const ber_sequence_t SEQUENCE_OF_InvolvedParty_sequence_of[1] = {
4503   { &hf_gprscdr_list_Of_Called_Asserted_Identity_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_InvolvedParty },
4504 };
4505 
4506 static int
dissect_gprscdr_SEQUENCE_OF_InvolvedParty(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4507 dissect_gprscdr_SEQUENCE_OF_InvolvedParty(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4508   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4509                                       SEQUENCE_OF_InvolvedParty_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_InvolvedParty);
4510 
4511   return offset;
4512 }
4513 
4514 
4515 static const ber_sequence_t CalleePartyInformation_sequence[] = {
4516   { &hf_gprscdr_called_Party_Address, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_InvolvedParty },
4517   { &hf_gprscdr_requested_Party_Address, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_InvolvedParty },
4518   { &hf_gprscdr_list_Of_Called_Asserted_Identity, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_InvolvedParty },
4519   { NULL, 0, 0, 0, NULL }
4520 };
4521 
4522 static int
dissect_gprscdr_CalleePartyInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4523 dissect_gprscdr_CalleePartyInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4524   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4525                                    CalleePartyInformation_sequence, hf_index, ett_gprscdr_CalleePartyInformation);
4526 
4527   return offset;
4528 }
4529 
4530 
4531 static const ber_sequence_t VoLTEInformation_sequence[] = {
4532   { &hf_gprscdr_callerInformation, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_InvolvedParty },
4533   { &hf_gprscdr_calleeInformation, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CalleePartyInformation },
4534   { NULL, 0, 0, 0, NULL }
4535 };
4536 
4537 static int
dissect_gprscdr_VoLTEInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4538 dissect_gprscdr_VoLTEInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4539   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4540                                    VoLTEInformation_sequence, hf_index, ett_gprscdr_VoLTEInformation);
4541 
4542   return offset;
4543 }
4544 
4545 
4546 static const ber_sequence_t ChangeOfServiceCondition_sequence[] = {
4547   { &hf_gprscdr_ratingGroup , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_RatingGroupId },
4548   { &hf_gprscdr_chargingRuleBaseName, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingRuleBaseName },
4549   { &hf_gprscdr_resultCode  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ResultCode },
4550   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
4551   { &hf_gprscdr_timeOfFirstUsage, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4552   { &hf_gprscdr_timeOfLastUsage, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4553   { &hf_gprscdr_timeUsage   , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
4554   { &hf_gprscdr_serviceConditionChange_01, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceConditionChange },
4555   { &hf_gprscdr_qoSInformationNeg_01, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EPCQoSInformation },
4556   { &hf_gprscdr_servingNodeAddress_01, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4557   { &hf_gprscdr_datavolumeFBCUplink, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
4558   { &hf_gprscdr_datavolumeFBCDownlink, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS },
4559   { &hf_gprscdr_timeOfReport, BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4560   { &hf_gprscdr_failureHandlingContinue, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FailureHandlingContinue },
4561   { &hf_gprscdr_serviceIdentifier, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceIdentifier },
4562   { &hf_gprscdr_pSFurnishChargingInformation, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSFurnishChargingInformation },
4563   { &hf_gprscdr_aFRecordInformation, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_AFRecordInformation },
4564   { &hf_gprscdr_userLocationInformation_10, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_09 },
4565   { &hf_gprscdr_eventBasedChargingInformation, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EventBasedChargingInformation },
4566   { &hf_gprscdr_timeQuotaMechanism, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeQuotaMechanism },
4567   { &hf_gprscdr_serviceSpecificInfo, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ServiceSpecificInfo },
4568   { &hf_gprscdr_threeGPP2UserLocationInformation, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4569   { &hf_gprscdr_sponsorIdentity, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4570   { &hf_gprscdr_applicationServiceProviderIdentity, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4571   { &hf_gprscdr_aDCRuleBaseName, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ADCRuleBaseName },
4572   { &hf_gprscdr_presenceReportingAreaStatus, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaStatus },
4573   { &hf_gprscdr_userCSGInformation, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UserCSGInformation },
4574   { &hf_gprscdr_rATType     , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
4575   { &hf_gprscdr_uWANUserLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UWANUserLocationInfo },
4576   { &hf_gprscdr_relatedChangeOfServiceCondition, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RelatedChangeOfServiceCondition },
4577   { &hf_gprscdr_servingPLMNRateControl, BER_CLASS_CON, 35, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ServingPLMNRateControl },
4578   { &hf_gprscdr_aPNRateControl, BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNRateControl },
4579   { &hf_gprscdr_threeGPPPSDataOffStatus, BER_CLASS_CON, 37, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ThreeGPPPSDataOffStatus },
4580   { &hf_gprscdr_trafficSteeringPolicyIDDownlink, BER_CLASS_CON, 38, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TrafficSteeringPolicyIDDownlink },
4581   { &hf_gprscdr_trafficSteeringPolicyIDUplink, BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TrafficSteeringPolicyIDUplink },
4582   { &hf_gprscdr_tWANUserLocationInformation, BER_CLASS_CON, 40, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TWANUserLocationInfo },
4583   { &hf_gprscdr_listOfPresenceReportingAreaInformation, BER_CLASS_CON, 41, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_PresenceReportingAreaInfo },
4584   { &hf_gprscdr_voLTEInformation, BER_CLASS_CON, 42, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_VoLTEInformation },
4585   { NULL, 0, 0, 0, NULL }
4586 };
4587 
4588 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_)4589 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_) {
4590   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4591                                    ChangeOfServiceCondition_sequence, hf_index, ett_gprscdr_ChangeOfServiceCondition);
4592 
4593   return offset;
4594 }
4595 
4596 
4597 static const ber_sequence_t SEQUENCE_OF_ChangeOfServiceCondition_sequence_of[1] = {
4598   { &hf_gprscdr_listOfServiceData_item_02, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ChangeOfServiceCondition },
4599 };
4600 
4601 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_)4602 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_) {
4603   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
4604                                       SEQUENCE_OF_ChangeOfServiceCondition_sequence_of, hf_index, ett_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition);
4605 
4606   return offset;
4607 }
4608 
4609 
4610 
4611 static int
dissect_gprscdr_T_lastUserLocationInformation_01(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4612 dissect_gprscdr_T_lastUserLocationInformation_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4613 #line 207 "./asn1/gprscdr/gprscdr.cnf"
4614 
4615   offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
4616 
4617 
4618 
4619   return offset;
4620 }
4621 
4622 
4623 static const value_string gprscdr_NBIFOMMode_vals[] = {
4624   {   0, "uEINITIATED" },
4625   {   1, "nETWORKINITIATED" },
4626   { 0, NULL }
4627 };
4628 
4629 
4630 static int
dissect_gprscdr_NBIFOMMode(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4631 dissect_gprscdr_NBIFOMMode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4632   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4633                                   NULL);
4634 
4635   return offset;
4636 }
4637 
4638 
4639 static const value_string gprscdr_NBIFOMSupport_vals[] = {
4640   {   0, "nBIFOMNotSupported" },
4641   {   1, "nBIFOMSupported" },
4642   { 0, NULL }
4643 };
4644 
4645 
4646 static int
dissect_gprscdr_NBIFOMSupport(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4647 dissect_gprscdr_NBIFOMSupport(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4648   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4649                                   NULL);
4650 
4651   return offset;
4652 }
4653 
4654 
4655 static const value_string gprscdr_SGiPtPTunnellingMethod_vals[] = {
4656   {   0, "uDPIPbased" },
4657   {   1, "others" },
4658   { 0, NULL }
4659 };
4660 
4661 
4662 static int
dissect_gprscdr_SGiPtPTunnellingMethod(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4663 dissect_gprscdr_SGiPtPTunnellingMethod(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4664   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4665                                   NULL);
4666 
4667   return offset;
4668 }
4669 
4670 
4671 static const value_string gprscdr_ChargingPerIPCANSessionIndicator_vals[] = {
4672   {   0, "inactive" },
4673   {   1, "active" },
4674   { 0, NULL }
4675 };
4676 
4677 
4678 static int
dissect_gprscdr_ChargingPerIPCANSessionIndicator(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4679 dissect_gprscdr_ChargingPerIPCANSessionIndicator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4680   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
4681                                   NULL);
4682 
4683   return offset;
4684 }
4685 
4686 
4687 static const ber_sequence_t PGWRecord_set[] = {
4688   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
4689   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
4690   { &hf_gprscdr_p_GWAddress , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4691   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
4692   { &hf_gprscdr_servingNodeAddress, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
4693   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
4694   { &hf_gprscdr_pdpPDNType  , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
4695   { &hf_gprscdr_servedPDPPDNAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4696   { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
4697   { &hf_gprscdr_listOfTrafficVolumes_01, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition },
4698   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4699   { &hf_gprscdr_duration    , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
4700   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
4701   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
4702   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
4703   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
4704   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
4705   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
4706   { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode },
4707   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
4708   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
4709   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
4710   { &hf_gprscdr_iMSsignalingContext, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4711   { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
4712   { &hf_gprscdr_pSFurnishChargingInformation, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSFurnishChargingInformation },
4713   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
4714   { &hf_gprscdr_rATType     , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
4715   { &hf_gprscdr_mSTimeZone  , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone },
4716   { &hf_gprscdr_userLocationInformation_07, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_07 },
4717   { &hf_gprscdr_cAMELChargingInformation, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4718   { &hf_gprscdr_listOfServiceData_02, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition },
4719   { &hf_gprscdr_servingNodeType, BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ServingNodeType },
4720   { &hf_gprscdr_servedMNNAI , BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SubscriptionID },
4721   { &hf_gprscdr_p_GWPLMNIdentifier, BER_CLASS_CON, 37, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
4722   { &hf_gprscdr_startTime   , BER_CLASS_CON, 38, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4723   { &hf_gprscdr_stopTime    , BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4724   { &hf_gprscdr_served3gpp2MEID, BER_CLASS_CON, 40, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4725   { &hf_gprscdr_pDNConnectionChargingID, BER_CLASS_CON, 41, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
4726   { &hf_gprscdr_iMSIunauthenticatedFlag, BER_CLASS_CON, 42, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4727   { &hf_gprscdr_userCSGInformation, BER_CLASS_CON, 43, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UserCSGInformation },
4728   { &hf_gprscdr_threeGPP2UserLocationInformation, BER_CLASS_CON, 44, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4729   { &hf_gprscdr_servedPDPPDNAddressExt, BER_CLASS_CON, 45, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4730   { &hf_gprscdr_lowPriorityIndicator, BER_CLASS_CON, 46, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4731   { &hf_gprscdr_dynamicAddressFlagExt, BER_CLASS_CON, 47, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
4732   { &hf_gprscdr_servingNodeiPv6Address, BER_CLASS_CON, 49, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
4733   { &hf_gprscdr_p_GWiPv6AddressUsed, BER_CLASS_CON, 50, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4734   { &hf_gprscdr_tWANUserLocationInformation, BER_CLASS_CON, 51, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TWANUserLocationInfo },
4735   { &hf_gprscdr_retransmission, BER_CLASS_CON, 52, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4736   { &hf_gprscdr_userLocationInfoTime, BER_CLASS_CON, 53, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4737   { &hf_gprscdr_cNOperatorSelectionEnt, BER_CLASS_CON, 54, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNOperatorSelectionEntity },
4738   { &hf_gprscdr_ePCQoSInformation, BER_CLASS_CON, 55, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EPCQoSInformation },
4739   { &hf_gprscdr_presenceReportingAreaInfo, BER_CLASS_CON, 56, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaInfo },
4740   { &hf_gprscdr_lastUserLocationInformation_01, BER_CLASS_CON, 57, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_lastUserLocationInformation_01 },
4741   { &hf_gprscdr_lastMSTimeZone, BER_CLASS_CON, 58, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone },
4742   { &hf_gprscdr_enhancedDiagnostics, BER_CLASS_CON, 59, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EnhancedDiagnostics },
4743   { &hf_gprscdr_nBIFOMMode  , BER_CLASS_CON, 60, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NBIFOMMode },
4744   { &hf_gprscdr_nBIFOMSupport, BER_CLASS_CON, 61, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NBIFOMSupport },
4745   { &hf_gprscdr_uWANUserLocationInformation, BER_CLASS_CON, 62, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UWANUserLocationInfo },
4746   { &hf_gprscdr_sGiPtPTunnellingMethod, BER_CLASS_CON, 64, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGiPtPTunnellingMethod },
4747   { &hf_gprscdr_uNIPDUCPOnlyFlag, BER_CLASS_CON, 65, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UNIPDUCPOnlyFlag },
4748   { &hf_gprscdr_servingPLMNRateControl, BER_CLASS_CON, 66, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ServingPLMNRateControl },
4749   { &hf_gprscdr_aPNRateControl, BER_CLASS_CON, 67, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNRateControl },
4750   { &hf_gprscdr_pDPPDNTypeExtension, BER_CLASS_CON, 68, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPPDNTypeExtension },
4751   { &hf_gprscdr_mOExceptionDataCounter, BER_CLASS_CON, 69, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MOExceptionDataCounter },
4752   { &hf_gprscdr_chargingPerIPCANSessionIndicator, BER_CLASS_CON, 70, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingPerIPCANSessionIndicator },
4753   { &hf_gprscdr_threeGPPPSDataOffStatus, BER_CLASS_CON, 71, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ThreeGPPPSDataOffStatus },
4754   { &hf_gprscdr_sCSASAddress, BER_CLASS_CON, 72, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SCSASAddress },
4755   { &hf_gprscdr_listOfRANSecondaryRATUsageReports, BER_CLASS_CON, 73, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_RANSecondaryRATUsageReport },
4756   { NULL, 0, 0, 0, NULL }
4757 };
4758 
4759 static int
dissect_gprscdr_PGWRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4760 dissect_gprscdr_PGWRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4761   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
4762                               PGWRecord_set, hf_index, ett_gprscdr_PGWRecord);
4763 
4764   return offset;
4765 }
4766 
4767 
4768 
4769 static int
dissect_gprscdr_CTEID(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4770 dissect_gprscdr_CTEID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4771   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
4772                                        NULL);
4773 
4774   return offset;
4775 }
4776 
4777 
4778 static const ber_sequence_t GWMBMSRecord_set[] = {
4779   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
4780   { &hf_gprscdr_mbmsGWAddress, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4781   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
4782   { &hf_gprscdr_listofDownstreamNodes, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
4783   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
4784   { &hf_gprscdr_pdpPDNType  , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
4785   { &hf_gprscdr_servedPDPPDNAddress, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4786   { &hf_gprscdr_listOfTrafficVolumes_02, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfMBMSCondition },
4787   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4788   { &hf_gprscdr_duration    , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
4789   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 10, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
4790   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
4791   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
4792   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
4793   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
4794   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
4795   { &hf_gprscdr_mbmsInformation, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MBMSInformation },
4796   { &hf_gprscdr_commonTeid  , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CTEID },
4797   { &hf_gprscdr_iPMulticastSourceAddress, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4798   { NULL, 0, 0, 0, NULL }
4799 };
4800 
4801 static int
dissect_gprscdr_GWMBMSRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4802 dissect_gprscdr_GWMBMSRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4803   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
4804                               GWMBMSRecord_set, hf_index, ett_gprscdr_GWMBMSRecord);
4805 
4806   return offset;
4807 }
4808 
4809 
4810 
4811 static int
dissect_gprscdr_FixedSubsID(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4812 dissect_gprscdr_FixedSubsID(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4813   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
4814                                        NULL);
4815 
4816   return offset;
4817 }
4818 
4819 
4820 static const ber_sequence_t AccessLineIdentifier_sequence[] = {
4821   { &hf_gprscdr_physicalAccessID, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UTF8String },
4822   { &hf_gprscdr_logicalAccessID, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4823   { NULL, 0, 0, 0, NULL }
4824 };
4825 
4826 static int
dissect_gprscdr_AccessLineIdentifier(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4827 dissect_gprscdr_AccessLineIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4828   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4829                                    AccessLineIdentifier_sequence, hf_index, ett_gprscdr_AccessLineIdentifier);
4830 
4831   return offset;
4832 }
4833 
4834 
4835 static const ber_sequence_t FixedUserLocationInformation_sequence[] = {
4836   { &hf_gprscdr_sSID        , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4837   { &hf_gprscdr_bSSID       , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4838   { &hf_gprscdr_accessLineIdentifier, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessLineIdentifier },
4839   { NULL, 0, 0, 0, NULL }
4840 };
4841 
4842 static int
dissect_gprscdr_FixedUserLocationInformation(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4843 dissect_gprscdr_FixedUserLocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4844   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
4845                                    FixedUserLocationInformation_sequence, hf_index, ett_gprscdr_FixedUserLocationInformation);
4846 
4847   return offset;
4848 }
4849 
4850 
4851 static const ber_sequence_t TDFRecord_set[] = {
4852   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
4853   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
4854   { &hf_gprscdr_p_GWAddress , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4855   { &hf_gprscdr_servingNodeAddress, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
4856   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
4857   { &hf_gprscdr_pdpPDNType  , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
4858   { &hf_gprscdr_servedPDPPDNAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4859   { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
4860   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4861   { &hf_gprscdr_duration    , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
4862   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
4863   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
4864   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
4865   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
4866   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
4867   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
4868   { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode },
4869   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
4870   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
4871   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
4872   { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
4873   { &hf_gprscdr_pSFurnishChargingInformation, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSFurnishChargingInformation },
4874   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
4875   { &hf_gprscdr_rATType     , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
4876   { &hf_gprscdr_mSTimeZone  , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone },
4877   { &hf_gprscdr_userLocationInformation_08, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4878   { &hf_gprscdr_listOfServiceData_02, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition },
4879   { &hf_gprscdr_servingNodeType, BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ServingNodeType },
4880   { &hf_gprscdr_servedMNNAI , BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SubscriptionID },
4881   { &hf_gprscdr_p_GWPLMNIdentifier, BER_CLASS_CON, 37, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
4882   { &hf_gprscdr_startTime   , BER_CLASS_CON, 38, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4883   { &hf_gprscdr_stopTime    , BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4884   { &hf_gprscdr_served3gpp2MEID, BER_CLASS_CON, 40, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4885   { &hf_gprscdr_pDNConnectionChargingID, BER_CLASS_CON, 41, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
4886   { &hf_gprscdr_userCSGInformation, BER_CLASS_CON, 43, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UserCSGInformation },
4887   { &hf_gprscdr_threeGPP2UserLocationInformation, BER_CLASS_CON, 44, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING },
4888   { &hf_gprscdr_servedPDPPDNAddressExt, BER_CLASS_CON, 45, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4889   { &hf_gprscdr_dynamicAddressFlagExt, BER_CLASS_CON, 47, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
4890   { &hf_gprscdr_servingNodeiPv6Address, BER_CLASS_CON, 49, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_GSNAddress },
4891   { &hf_gprscdr_p_GWiPv6AddressUsed, BER_CLASS_CON, 50, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4892   { &hf_gprscdr_tWANUserLocationInformation, BER_CLASS_CON, 51, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TWANUserLocationInfo },
4893   { &hf_gprscdr_retransmission, BER_CLASS_CON, 52, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4894   { &hf_gprscdr_tDFAddress  , BER_CLASS_CON, 53, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4895   { &hf_gprscdr_tDFiPv6AddressUsed, BER_CLASS_CON, 54, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4896   { &hf_gprscdr_tDFPLMNIdentifier, BER_CLASS_CON, 55, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
4897   { &hf_gprscdr_servedFixedSubsID, BER_CLASS_CON, 56, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FixedSubsID },
4898   { &hf_gprscdr_accessLineIdentifier, BER_CLASS_CON, 57, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessLineIdentifier },
4899   { &hf_gprscdr_fixedUserLocationInformation, BER_CLASS_CON, 59, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FixedUserLocationInformation },
4900   { NULL, 0, 0, 0, NULL }
4901 };
4902 
4903 static int
dissect_gprscdr_TDFRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4904 dissect_gprscdr_TDFRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4905   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
4906                               TDFRecord_set, hf_index, ett_gprscdr_TDFRecord);
4907 
4908   return offset;
4909 }
4910 
4911 
4912 static const ber_sequence_t IPERecord_set[] = {
4913   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
4914   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
4915   { &hf_gprscdr_iPEdgeAddress, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4916   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
4917   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
4918   { &hf_gprscdr_iPCANsessionType, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
4919   { &hf_gprscdr_servedIPCANsessionAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4920   { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
4921   { &hf_gprscdr_listOfTrafficVolumes_01, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition },
4922   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4923   { &hf_gprscdr_duration    , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
4924   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
4925   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
4926   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
4927   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
4928   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
4929   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
4930   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
4931   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
4932   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
4933   { &hf_gprscdr_pSFurnishChargingInformation, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSFurnishChargingInformation },
4934   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
4935   { &hf_gprscdr_listOfServiceData_02, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition },
4936   { &hf_gprscdr_servedMNNAI , BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SubscriptionID },
4937   { &hf_gprscdr_iPEdgeOperatorIdentifier, BER_CLASS_CON, 37, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
4938   { &hf_gprscdr_startTime   , BER_CLASS_CON, 38, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4939   { &hf_gprscdr_stopTime    , BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4940   { &hf_gprscdr_servedIPCANsessionAddressExt, BER_CLASS_CON, 45, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4941   { &hf_gprscdr_dynamicAddressFlagExt, BER_CLASS_CON, 47, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
4942   { &hf_gprscdr_iPEdgeiPv6AddressUsed, BER_CLASS_CON, 50, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4943   { &hf_gprscdr_retransmission, BER_CLASS_CON, 52, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4944   { &hf_gprscdr_servedFixedSubsID, BER_CLASS_CON, 55, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FixedSubsID },
4945   { &hf_gprscdr_accessLineIdentifier, BER_CLASS_CON, 56, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessLineIdentifier },
4946   { &hf_gprscdr_fixedUserLocationInformation, BER_CLASS_CON, 57, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FixedUserLocationInformation },
4947   { NULL, 0, 0, 0, NULL }
4948 };
4949 
4950 static int
dissect_gprscdr_IPERecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)4951 dissect_gprscdr_IPERecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4952   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
4953                               IPERecord_set, hf_index, ett_gprscdr_IPERecord);
4954 
4955   return offset;
4956 }
4957 
4958 
4959 static const ber_sequence_t EPDGRecord_set[] = {
4960   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
4961   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
4962   { &hf_gprscdr_ePDGAddressUsed, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4963   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
4964   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
4965   { &hf_gprscdr_pdpPDNType  , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
4966   { &hf_gprscdr_servedPDPPDNAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4967   { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
4968   { &hf_gprscdr_listOfTrafficVolumes_01, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition },
4969   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4970   { &hf_gprscdr_duration    , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
4971   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
4972   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
4973   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
4974   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
4975   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
4976   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
4977   { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode },
4978   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
4979   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
4980   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
4981   { &hf_gprscdr_iMSsignalingContext, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4982   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
4983   { &hf_gprscdr_rATType     , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
4984   { &hf_gprscdr_sGWChange   , BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGWChange },
4985   { &hf_gprscdr_p_GWAddressUsed, BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4986   { &hf_gprscdr_p_GWPLMNIdentifier, BER_CLASS_CON, 37, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
4987   { &hf_gprscdr_startTime   , BER_CLASS_CON, 38, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4988   { &hf_gprscdr_stopTime    , BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4989   { &hf_gprscdr_pDNConnectionChargingID, BER_CLASS_CON, 40, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
4990   { &hf_gprscdr_servedPDPPDNAddressExt, BER_CLASS_CON, 43, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
4991   { &hf_gprscdr_dynamicAddressFlagExt, BER_CLASS_CON, 47, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
4992   { &hf_gprscdr_ePDGiPv6AddressUsed, BER_CLASS_CON, 48, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4993   { &hf_gprscdr_p_GWiPv6AddressUsed, BER_CLASS_CON, 50, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
4994   { &hf_gprscdr_retransmission, BER_CLASS_CON, 51, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4995   { &hf_gprscdr_enhancedDiagnostics, BER_CLASS_CON, 52, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EnhancedDiagnostics },
4996   { &hf_gprscdr_uWANUserLocationInformation, BER_CLASS_CON, 53, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UWANUserLocationInfo },
4997   { &hf_gprscdr_userLocationInfoTime, BER_CLASS_CON, 54, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
4998   { &hf_gprscdr_iMSIunauthenticatedFlag, BER_CLASS_CON, 55, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
4999   { NULL, 0, 0, 0, NULL }
5000 };
5001 
5002 static int
dissect_gprscdr_EPDGRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5003 dissect_gprscdr_EPDGRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5004   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
5005                               EPDGRecord_set, hf_index, ett_gprscdr_EPDGRecord);
5006 
5007   return offset;
5008 }
5009 
5010 
5011 static const ber_sequence_t TWAGRecord_set[] = {
5012   { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType },
5013   { &hf_gprscdr_servedIMSI  , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMSI },
5014   { &hf_gprscdr_tWAGAddressUsed, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
5015   { &hf_gprscdr_chargingID  , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
5016   { &hf_gprscdr_accessPointNameNI, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_AccessPointNameNI },
5017   { &hf_gprscdr_pdpPDNType  , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PDPType },
5018   { &hf_gprscdr_servedPDPPDNAddress, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
5019   { &hf_gprscdr_dynamicAddressFlag, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
5020   { &hf_gprscdr_listOfTrafficVolumes_01, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfCharCondition },
5021   { &hf_gprscdr_recordOpeningTime, BER_CLASS_CON, 13, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
5022   { &hf_gprscdr_duration    , BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallDuration },
5023   { &hf_gprscdr_causeForRecClosing_01, BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_gprscdr_CauseForRecClosing },
5024   { &hf_gprscdr_diagnostics , BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_Diagnostics },
5025   { &hf_gprscdr_recordSequenceNumber, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER },
5026   { &hf_gprscdr_nodeID      , BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NodeID },
5027   { &hf_gprscdr_recordExtensions, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ManagementExtensions },
5028   { &hf_gprscdr_localSequenceNumber, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_LocalSequenceNumber },
5029   { &hf_gprscdr_apnSelectionMode, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_APNSelectionMode },
5030   { &hf_gprscdr_servedMSISDN, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSISDN },
5031   { &hf_gprscdr_chargingCharacteristics, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingCharacteristics },
5032   { &hf_gprscdr_chChSelectionMode, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChChSelectionMode },
5033   { &hf_gprscdr_servedIMEI  , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI },
5034   { &hf_gprscdr_rATType     , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType },
5035   { &hf_gprscdr_sGWChange   , BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGWChange },
5036   { &hf_gprscdr_p_GWAddressUsed, BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
5037   { &hf_gprscdr_p_GWPLMNIdentifier, BER_CLASS_CON, 37, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id },
5038   { &hf_gprscdr_startTime   , BER_CLASS_CON, 38, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
5039   { &hf_gprscdr_stopTime    , BER_CLASS_CON, 39, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp },
5040   { &hf_gprscdr_pDNConnectionChargingID, BER_CLASS_CON, 40, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID },
5041   { &hf_gprscdr_servedPDPPDNAddressExt, BER_CLASS_CON, 43, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_PDPAddress },
5042   { &hf_gprscdr_dynamicAddressFlagExt, BER_CLASS_CON, 47, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DynamicAddressFlag },
5043   { &hf_gprscdr_tWAGiPv6AddressUsed, BER_CLASS_CON, 48, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
5044   { &hf_gprscdr_p_GWiPv6AddressUsed, BER_CLASS_CON, 50, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress },
5045   { &hf_gprscdr_retransmission, BER_CLASS_CON, 51, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
5046   { &hf_gprscdr_enhancedDiagnostics, BER_CLASS_CON, 52, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EnhancedDiagnostics },
5047   { &hf_gprscdr_tWANUserLocationInformation, BER_CLASS_CON, 53, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TWANUserLocationInfo },
5048   { &hf_gprscdr_iMSIunauthenticatedFlag, BER_CLASS_CON, 54, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL },
5049   { NULL, 0, 0, 0, NULL }
5050 };
5051 
5052 static int
dissect_gprscdr_TWAGRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5053 dissect_gprscdr_TWAGRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5054   offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
5055                               TWAGRecord_set, hf_index, ett_gprscdr_TWAGRecord);
5056 
5057   return offset;
5058 }
5059 
5060 
5061 const value_string gprscdr_GPRSRecord_vals[] = {
5062   {  20, "sgsnPDPRecord" },
5063   {  21, "ggsnPDPRecord" },
5064   {  22, "sgsnMMRecord" },
5065   {  23, "sgsnSMORecord" },
5066   {  24, "sgsnSMTRecord" },
5067   {  25, "sgsnMTLCSRecord" },
5068   {  26, "sgsnMOLCSRecord" },
5069   {  27, "sgsnNILCSRecord" },
5070   {  70, "egsnPDPRecord" },
5071   {  76, "sgsnMBMSRecord" },
5072   {  77, "ggsnMBMSRecord" },
5073   {  78, "sGWRecord" },
5074   {  79, "pGWRecord" },
5075   {  86, "gwMBMSRecord" },
5076   {  92, "tDFRecord" },
5077   {  95, "iPERecord" },
5078   {  96, "ePDGRecord" },
5079   {  97, "tWAGRecord" },
5080   { 0, NULL }
5081 };
5082 
5083 static const ber_choice_t GPRSRecord_choice[] = {
5084   {  20, &hf_gprscdr_sgsnPDPRecord_01, BER_CLASS_CON, 20, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNPDPRecord },
5085   {  21, &hf_gprscdr_ggsnPDPRecord_01, BER_CLASS_CON, 21, BER_FLAGS_IMPLTAG, dissect_gprscdr_GGSNPDPRecordV750 },
5086   {  22, &hf_gprscdr_sgsnMMRecord, BER_CLASS_CON, 22, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNMMRecord },
5087   {  23, &hf_gprscdr_sgsnSMORecord_01, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNSMORecord },
5088   {  24, &hf_gprscdr_sgsnSMTRecord_01, BER_CLASS_CON, 24, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNSMTRecord },
5089   {  25, &hf_gprscdr_sgsnMTLCSRecord, BER_CLASS_CON, 25, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNMTLCSRecord },
5090   {  26, &hf_gprscdr_sgsnMOLCSRecord, BER_CLASS_CON, 26, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNMOLCSRecord },
5091   {  27, &hf_gprscdr_sgsnNILCSRecord, BER_CLASS_CON, 27, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNNILCSRecord },
5092   {  70, &hf_gprscdr_egsnPDPRecord_01, BER_CLASS_CON, 70, BER_FLAGS_IMPLTAG, dissect_gprscdr_EGSNPDPRecordV750 },
5093   {  76, &hf_gprscdr_sgsnMBMSRecord, BER_CLASS_CON, 76, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGSNMBMSRecord },
5094   {  77, &hf_gprscdr_ggsnMBMSRecord, BER_CLASS_CON, 77, BER_FLAGS_IMPLTAG, dissect_gprscdr_GGSNMBMSRecord },
5095   {  78, &hf_gprscdr_sGWRecord   , BER_CLASS_CON, 78, BER_FLAGS_IMPLTAG, dissect_gprscdr_SGWRecord },
5096   {  79, &hf_gprscdr_pGWRecord   , BER_CLASS_CON, 79, BER_FLAGS_IMPLTAG, dissect_gprscdr_PGWRecord },
5097   {  86, &hf_gprscdr_gwMBMSRecord, BER_CLASS_CON, 86, BER_FLAGS_IMPLTAG, dissect_gprscdr_GWMBMSRecord },
5098   {  92, &hf_gprscdr_tDFRecord   , BER_CLASS_CON, 92, BER_FLAGS_IMPLTAG, dissect_gprscdr_TDFRecord },
5099   {  95, &hf_gprscdr_iPERecord   , BER_CLASS_CON, 95, BER_FLAGS_IMPLTAG, dissect_gprscdr_IPERecord },
5100   {  96, &hf_gprscdr_ePDGRecord  , BER_CLASS_CON, 96, BER_FLAGS_IMPLTAG, dissect_gprscdr_EPDGRecord },
5101   {  97, &hf_gprscdr_tWAGRecord  , BER_CLASS_CON, 97, BER_FLAGS_IMPLTAG, dissect_gprscdr_TWAGRecord },
5102   { 0, NULL, 0, 0, 0, NULL }
5103 };
5104 
5105 int
dissect_gprscdr_GPRSRecord(gboolean implicit_tag _U_,tvbuff_t * tvb _U_,int offset _U_,asn1_ctx_t * actx _U_,proto_tree * tree _U_,int hf_index _U_)5106 dissect_gprscdr_GPRSRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
5107 #line 254 "./asn1/gprscdr/gprscdr.cnf"
5108 proto_item *item;
5109 gint branch_taken, t_offset = offset;
5110 gint32   tag;
5111 
5112     offset = dissect_ber_choice(actx, tree, tvb, offset,
5113                                  GPRSRecord_choice, hf_index, ett_gprscdr_GPRSRecord,
5114                                  &branch_taken);
5115 
5116 
5117   if(branch_taken == -1){
5118     get_ber_identifier(tvb, t_offset, NULL, NULL, &tag);
5119     item = proto_tree_add_uint(tree, hf_index, tvb, t_offset, 1, tag);
5120     dissect_ber_identifier(actx->pinfo, tree, tvb, t_offset, NULL, NULL, &tag);
5121     expert_add_info_format(actx->pinfo, item, &ei_gprscdr_choice_not_found,
5122               "Record type(BER choice) not found: %u", tag);
5123  }
5124 
5125 
5126   return offset;
5127 }
5128 
5129 /*--- PDUs ---*/
5130 
dissect_gprscdr_GPRSCallEventRecord_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)5131 int dissect_gprscdr_GPRSCallEventRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
5132   int offset = 0;
5133   asn1_ctx_t asn1_ctx;
5134   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
5135   offset = dissect_gprscdr_GPRSCallEventRecord(FALSE, tvb, offset, &asn1_ctx, tree, hf_gprscdr_gprscdr_GPRSCallEventRecord_PDU);
5136   return offset;
5137 }
dissect_gprscdr_GPRSRecord_PDU(tvbuff_t * tvb _U_,packet_info * pinfo _U_,proto_tree * tree _U_,void * data _U_)5138 int dissect_gprscdr_GPRSRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
5139   int offset = 0;
5140   asn1_ctx_t asn1_ctx;
5141   asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
5142   offset = dissect_gprscdr_GPRSRecord(FALSE, tvb, offset, &asn1_ctx, tree, hf_gprscdr_gprscdr_GPRSRecord_PDU);
5143   return offset;
5144 }
5145 
5146 
5147 /*--- End of included file: packet-gprscdr-fn.c ---*/
5148 #line 115 "./asn1/gprscdr/packet-gprscdr-template.c"
5149 
5150 
5151 
5152 /* Register all the bits needed with the filtering engine */
5153 void
proto_register_gprscdr(void)5154 proto_register_gprscdr(void)
5155 {
5156   /* List of fields */
5157   static hf_register_info hf[] = {
5158 
5159 /*--- Included file: packet-gprscdr-hfarr.c ---*/
5160 #line 1 "./asn1/gprscdr/packet-gprscdr-hfarr.c"
5161     { &hf_gprscdr_gprscdr_GPRSCallEventRecord_PDU,
5162       { "GPRSCallEventRecord", "gprscdr.GPRSCallEventRecord",
5163         FT_UINT32, BASE_DEC, VALS(gprscdr_GPRSCallEventRecord_vals), 0,
5164         NULL, HFILL }},
5165     { &hf_gprscdr_gprscdr_GPRSRecord_PDU,
5166       { "GPRSRecord", "gprscdr.GPRSRecord",
5167         FT_UINT32, BASE_DEC, VALS(gprscdr_GPRSRecord_vals), 0,
5168         NULL, HFILL }},
5169     { &hf_gprscdr_gsm0408Cause,
5170       { "gsm0408Cause", "gprscdr.gsm0408Cause",
5171         FT_INT32, BASE_DEC, NULL, 0,
5172         "INTEGER", HFILL }},
5173     { &hf_gprscdr_gsm0902MapErrorValue,
5174       { "gsm0902MapErrorValue", "gprscdr.gsm0902MapErrorValue",
5175         FT_INT32, BASE_DEC, NULL, 0,
5176         "INTEGER", HFILL }},
5177     { &hf_gprscdr_itu_tQ767Cause,
5178       { "itu-tQ767Cause", "gprscdr.itu_tQ767Cause",
5179         FT_INT32, BASE_DEC, NULL, 0,
5180         "INTEGER", HFILL }},
5181     { &hf_gprscdr_networkSpecificCause,
5182       { "networkSpecificCause", "gprscdr.networkSpecificCause_element",
5183         FT_NONE, BASE_NONE, NULL, 0,
5184         "ManagementExtension", HFILL }},
5185     { &hf_gprscdr_manufacturerSpecificCause,
5186       { "manufacturerSpecificCause", "gprscdr.manufacturerSpecificCause_element",
5187         FT_NONE, BASE_NONE, NULL, 0,
5188         "ManagementExtension", HFILL }},
5189     { &hf_gprscdr_positionMethodFailureCause,
5190       { "positionMethodFailureCause", "gprscdr.positionMethodFailureCause",
5191         FT_UINT32, BASE_DEC, VALS(gsm_map_er_PositionMethodFailure_Diagnostic_vals), 0,
5192         "PositionMethodFailure_Diagnostic", HFILL }},
5193     { &hf_gprscdr_unauthorizedLCSClientCause,
5194       { "unauthorizedLCSClientCause", "gprscdr.unauthorizedLCSClientCause",
5195         FT_UINT32, BASE_DEC, VALS(gsm_map_er_UnauthorizedLCSClient_Diagnostic_vals), 0,
5196         "UnauthorizedLCSClient_Diagnostic", HFILL }},
5197     { &hf_gprscdr_diameterResultCodeAndExperimentalResult,
5198       { "diameterResultCodeAndExperimentalResult", "gprscdr.diameterResultCodeAndExperimentalResult",
5199         FT_INT32, BASE_DEC, NULL, 0,
5200         "INTEGER", HFILL }},
5201     { &hf_gprscdr_plmnId,
5202       { "plmnId", "gprscdr.plmnId",
5203         FT_BYTES, BASE_NONE, NULL, 0,
5204         "PLMN_Id", HFILL }},
5205     { &hf_gprscdr_eutraCellId,
5206       { "eutraCellId", "gprscdr.eutraCellId",
5207         FT_STRING, BASE_NONE, NULL, 0,
5208         NULL, HFILL }},
5209     { &hf_gprscdr_nid,
5210       { "nid", "gprscdr.nid",
5211         FT_STRING, BASE_NONE, NULL, 0,
5212         NULL, HFILL }},
5213     { &hf_gprscdr_rANNASCause,
5214       { "rANNASCause", "gprscdr.rANNASCause",
5215         FT_UINT32, BASE_DEC, NULL, 0,
5216         "SEQUENCE_OF_RANNASCause", HFILL }},
5217     { &hf_gprscdr_rANNASCause_item,
5218       { "RANNASCause", "gprscdr.RANNASCause",
5219         FT_BYTES, BASE_NONE, NULL, 0,
5220         NULL, HFILL }},
5221     { &hf_gprscdr_sIP_URI,
5222       { "sIP-URI", "gprscdr.sIP_URI",
5223         FT_STRING, BASE_NONE, NULL, 0,
5224         "GraphicString", HFILL }},
5225     { &hf_gprscdr_tEL_URI,
5226       { "tEL-URI", "gprscdr.tEL_URI",
5227         FT_STRING, BASE_NONE, NULL, 0,
5228         "GraphicString", HFILL }},
5229     { &hf_gprscdr_uRN,
5230       { "uRN", "gprscdr.uRN",
5231         FT_STRING, BASE_NONE, NULL, 0,
5232         "GraphicString", HFILL }},
5233     { &hf_gprscdr_iSDN_E164,
5234       { "iSDN-E164", "gprscdr.iSDN_E164",
5235         FT_STRING, BASE_NONE, NULL, 0,
5236         "GraphicString", HFILL }},
5237     { &hf_gprscdr_externalId,
5238       { "externalId", "gprscdr.externalId",
5239         FT_STRING, BASE_NONE, NULL, 0,
5240         "UTF8String", HFILL }},
5241     { &hf_gprscdr_iPBinaryAddress,
5242       { "iPBinaryAddress", "gprscdr.iPBinaryAddress",
5243         FT_UINT32, BASE_DEC, VALS(gprscdr_IPBinaryAddress_vals), 0,
5244         NULL, HFILL }},
5245     { &hf_gprscdr_iPTextRepresentedAddress,
5246       { "iPTextRepresentedAddress", "gprscdr.iPTextRepresentedAddress",
5247         FT_UINT32, BASE_DEC, VALS(gprscdr_IPTextRepresentedAddress_vals), 0,
5248         NULL, HFILL }},
5249     { &hf_gprscdr_iPBinV4Address,
5250       { "iPBinV4Address", "gprscdr.iPBinV4Address",
5251         FT_IPv4, BASE_NONE, NULL, 0,
5252         NULL, HFILL }},
5253     { &hf_gprscdr_iPBinV6Address_choice,
5254       { "iPBinV6Address", "gprscdr.iPBinV6Address_choice",
5255         FT_UINT32, BASE_DEC, VALS(gprscdr_IPBinV6AddressWithOrWithoutPrefixLength_vals), 0,
5256         "IPBinV6AddressWithOrWithoutPrefixLength", HFILL }},
5257     { &hf_gprscdr_iPBinV6Address,
5258       { "iPBinV6Address", "gprscdr.iPBinV6Address",
5259         FT_IPv6, BASE_NONE, NULL, 0,
5260         NULL, HFILL }},
5261     { &hf_gprscdr_iPBinV6AddressWithPrefix,
5262       { "iPBinV6AddressWithPrefix", "gprscdr.iPBinV6AddressWithPrefix_element",
5263         FT_NONE, BASE_NONE, NULL, 0,
5264         "IPBinV6AddressWithPrefixLength", HFILL }},
5265     { &hf_gprscdr_pDPAddressPrefixLength,
5266       { "pDPAddressPrefixLength", "gprscdr.pDPAddressPrefixLength",
5267         FT_UINT32, BASE_DEC, NULL, 0,
5268         NULL, HFILL }},
5269     { &hf_gprscdr_iPTextV4Address,
5270       { "iPTextV4Address", "gprscdr.iPTextV4Address",
5271         FT_STRING, BASE_NONE, NULL, 0,
5272         "IA5String_SIZE_7_15", HFILL }},
5273     { &hf_gprscdr_iPTextV6Address,
5274       { "iPTextV6Address", "gprscdr.iPTextV6Address",
5275         FT_STRING, BASE_NONE, NULL, 0,
5276         "IA5String_SIZE_15_45", HFILL }},
5277     { &hf_gprscdr_lcsClientExternalID,
5278       { "lcsClientExternalID", "gprscdr.lcsClientExternalID_element",
5279         FT_NONE, BASE_NONE, NULL, 0,
5280         NULL, HFILL }},
5281     { &hf_gprscdr_lcsClientDialedByMS,
5282       { "lcsClientDialedByMS", "gprscdr.lcsClientDialedByMS",
5283         FT_BYTES, BASE_NONE, NULL, 0,
5284         "AddressString", HFILL }},
5285     { &hf_gprscdr_lcsClientInternalID,
5286       { "lcsClientInternalID", "gprscdr.lcsClientInternalID",
5287         FT_UINT32, BASE_DEC, VALS(gsm_map_LCSClientInternalID_vals), 0,
5288         NULL, HFILL }},
5289     { &hf_gprscdr_locationAreaCode,
5290       { "locationAreaCode", "gprscdr.locationAreaCode",
5291         FT_BYTES, BASE_NONE, NULL, 0,
5292         NULL, HFILL }},
5293     { &hf_gprscdr_cellId,
5294       { "cellId", "gprscdr.cellId",
5295         FT_BYTES, BASE_NONE, NULL, 0,
5296         NULL, HFILL }},
5297     { &hf_gprscdr_mCC_MNC,
5298       { "mCC-MNC", "gprscdr.mCC_MNC",
5299         FT_BYTES, BASE_NONE, NULL, 0,
5300         NULL, HFILL }},
5301     { &hf_gprscdr_ManagementExtensions_item,
5302       { "ManagementExtension", "gprscdr.ManagementExtension_element",
5303         FT_NONE, BASE_NONE, NULL, 0,
5304         NULL, HFILL }},
5305     { &hf_gprscdr_tMGI,
5306       { "tMGI", "gprscdr.tMGI",
5307         FT_BYTES, BASE_NONE, NULL, 0,
5308         NULL, HFILL }},
5309     { &hf_gprscdr_mBMSSessionIdentity,
5310       { "mBMSSessionIdentity", "gprscdr.mBMSSessionIdentity",
5311         FT_BYTES, BASE_NONE, NULL, 0,
5312         NULL, HFILL }},
5313     { &hf_gprscdr_mBMSServiceType,
5314       { "mBMSServiceType", "gprscdr.mBMSServiceType",
5315         FT_UINT32, BASE_DEC, VALS(gprscdr_MBMSServiceType_vals), 0,
5316         NULL, HFILL }},
5317     { &hf_gprscdr_mBMSUserServiceType,
5318       { "mBMSUserServiceType", "gprscdr.mBMSUserServiceType",
5319         FT_UINT32, BASE_DEC, VALS(gprscdr_MBMSUserServiceType_vals), 0,
5320         NULL, HFILL }},
5321     { &hf_gprscdr_mBMS2G3GIndicator,
5322       { "mBMS2G3GIndicator", "gprscdr.mBMS2G3GIndicator",
5323         FT_UINT32, BASE_DEC, VALS(gprscdr_MBMS2G3GIndicator_vals), 0,
5324         NULL, HFILL }},
5325     { &hf_gprscdr_fileRepairSupported,
5326       { "fileRepairSupported", "gprscdr.fileRepairSupported",
5327         FT_BOOLEAN, BASE_NONE, NULL, 0,
5328         "BOOLEAN", HFILL }},
5329     { &hf_gprscdr_rAI,
5330       { "rAI", "gprscdr.rAI",
5331         FT_BYTES, BASE_NONE, NULL, 0,
5332         "RoutingAreaCode", HFILL }},
5333     { &hf_gprscdr_mBMSServiceArea,
5334       { "mBMSServiceArea", "gprscdr.mBMSServiceArea",
5335         FT_BYTES, BASE_NONE, NULL, 0,
5336         NULL, HFILL }},
5337     { &hf_gprscdr_requiredMBMSBearerCaps,
5338       { "requiredMBMSBearerCaps", "gprscdr.requiredMBMSBearerCaps",
5339         FT_BYTES, BASE_NONE, NULL, 0,
5340         "RequiredMBMSBearerCapabilities", HFILL }},
5341     { &hf_gprscdr_mBMSGWAddress,
5342       { "mBMSGWAddress", "gprscdr.mBMSGWAddress",
5343         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5344         "GSNAddress", HFILL }},
5345     { &hf_gprscdr_cNIPMulticastDistribution,
5346       { "cNIPMulticastDistribution", "gprscdr.cNIPMulticastDistribution",
5347         FT_UINT32, BASE_DEC, VALS(gprscdr_CNIPMulticastDistribution_vals), 0,
5348         NULL, HFILL }},
5349     { &hf_gprscdr_mBMSDataTransferStart,
5350       { "mBMSDataTransferStart", "gprscdr.mBMSDataTransferStart",
5351         FT_BYTES, BASE_NONE, NULL, 0,
5352         "MBMSTime", HFILL }},
5353     { &hf_gprscdr_mBMSDataTransferStop,
5354       { "mBMSDataTransferStop", "gprscdr.mBMSDataTransferStop",
5355         FT_BYTES, BASE_NONE, NULL, 0,
5356         "MBMSTime", HFILL }},
5357     { &hf_gprscdr_nrCellId,
5358       { "nrCellId", "gprscdr.nrCellId",
5359         FT_STRING, BASE_NONE, NULL, 0,
5360         NULL, HFILL }},
5361     { &hf_gprscdr_iPAddress,
5362       { "iPAddress", "gprscdr.iPAddress",
5363         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5364         NULL, HFILL }},
5365     { &hf_gprscdr_nRcgi,
5366       { "nRcgi", "gprscdr.nRcgi_element",
5367         FT_NONE, BASE_NONE, NULL, 0,
5368         "Ncgi", HFILL }},
5369     { &hf_gprscdr_ecgi,
5370       { "ecgi", "gprscdr.ecgi_element",
5371         FT_NONE, BASE_NONE, NULL, 0,
5372         NULL, HFILL }},
5373     { &hf_gprscdr_sCSAddress,
5374       { "sCSAddress", "gprscdr.sCSAddress",
5375         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5376         "IPAddress", HFILL }},
5377     { &hf_gprscdr_sCSRealm,
5378       { "sCSRealm", "gprscdr.sCSRealm",
5379         FT_BYTES, BASE_NONE, NULL, 0,
5380         "DiameterIdentity", HFILL }},
5381     { &hf_gprscdr_serviceSpecificData,
5382       { "serviceSpecificData", "gprscdr.serviceSpecificData",
5383         FT_STRING, BASE_NONE, NULL, 0,
5384         "GraphicString", HFILL }},
5385     { &hf_gprscdr_serviceSpecificType,
5386       { "serviceSpecificType", "gprscdr.serviceSpecificType",
5387         FT_INT32, BASE_DEC, NULL, 0,
5388         "INTEGER", HFILL }},
5389     { &hf_gprscdr_subscriptionIDType,
5390       { "subscriptionIDType", "gprscdr.subscriptionIDType",
5391         FT_UINT32, BASE_DEC, VALS(gprscdr_SubscriptionIDType_vals), 0,
5392         NULL, HFILL }},
5393     { &hf_gprscdr_subscriptionIDData,
5394       { "subscriptionIDData", "gprscdr.subscriptionIDData",
5395         FT_STRING, BASE_NONE, NULL, 0,
5396         "UTF8String", HFILL }},
5397     { &hf_gprscdr_identifier,
5398       { "identifier", "gprscdr.identifier",
5399         FT_OID, BASE_NONE, NULL, 0,
5400         NULL, HFILL }},
5401     { &hf_gprscdr_significance,
5402       { "significance", "gprscdr.significance",
5403         FT_BOOLEAN, BASE_NONE, NULL, 0,
5404         "BOOLEAN", HFILL }},
5405     { &hf_gprscdr_information,
5406       { "information", "gprscdr.information_element",
5407         FT_NONE, BASE_NONE, NULL, 0,
5408         NULL, HFILL }},
5409     { &hf_gprscdr_sgsnPDPRecord,
5410       { "sgsnPDPRecord", "gprscdr.sgsnPDPRecord_element",
5411         FT_NONE, BASE_NONE, NULL, 0,
5412         "SGSNPDPRecordV651", HFILL }},
5413     { &hf_gprscdr_ggsnPDPRecord,
5414       { "ggsnPDPRecord", "gprscdr.ggsnPDPRecord_element",
5415         FT_NONE, BASE_NONE, NULL, 0,
5416         NULL, HFILL }},
5417     { &hf_gprscdr_sgsnMMRecord,
5418       { "sgsnMMRecord", "gprscdr.sgsnMMRecord_element",
5419         FT_NONE, BASE_NONE, NULL, 0,
5420         NULL, HFILL }},
5421     { &hf_gprscdr_sgsnSMORecord,
5422       { "sgsnSMORecord", "gprscdr.sgsnSMORecord_element",
5423         FT_NONE, BASE_NONE, NULL, 0,
5424         "SGSNSMORecordV651", HFILL }},
5425     { &hf_gprscdr_sgsnSMTRecord,
5426       { "sgsnSMTRecord", "gprscdr.sgsnSMTRecord_element",
5427         FT_NONE, BASE_NONE, NULL, 0,
5428         "SGSNSMTRecordV651", HFILL }},
5429     { &hf_gprscdr_egsnPDPRecord,
5430       { "egsnPDPRecord", "gprscdr.egsnPDPRecord_element",
5431         FT_NONE, BASE_NONE, NULL, 0,
5432         NULL, HFILL }},
5433     { &hf_gprscdr_recordType,
5434       { "recordType", "gprscdr.recordType",
5435         FT_INT32, BASE_DEC, VALS(gprscdr_CallEventRecordType_vals), 0,
5436         "CallEventRecordType", HFILL }},
5437     { &hf_gprscdr_networkInitiation,
5438       { "networkInitiation", "gprscdr.networkInitiation",
5439         FT_BOOLEAN, BASE_NONE, NULL, 0,
5440         "NetworkInitiatedPDPContext", HFILL }},
5441     { &hf_gprscdr_servedIMSI,
5442       { "servedIMSI", "gprscdr.servedIMSI",
5443         FT_BYTES, BASE_NONE, NULL, 0,
5444         "IMSI", HFILL }},
5445     { &hf_gprscdr_ggsnAddress,
5446       { "ggsnAddress", "gprscdr.ggsnAddress",
5447         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5448         "GSNAddress", HFILL }},
5449     { &hf_gprscdr_chargingID,
5450       { "chargingID", "gprscdr.chargingID",
5451         FT_UINT32, BASE_DEC, NULL, 0,
5452         NULL, HFILL }},
5453     { &hf_gprscdr_sgsnAddress,
5454       { "sgsnAddress", "gprscdr.sgsnAddress",
5455         FT_UINT32, BASE_DEC, NULL, 0,
5456         "SEQUENCE_OF_GSNAddress", HFILL }},
5457     { &hf_gprscdr_sgsnAddress_item,
5458       { "GSNAddress", "gprscdr.GSNAddress",
5459         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5460         NULL, HFILL }},
5461     { &hf_gprscdr_accessPointNameNI,
5462       { "accessPointNameNI", "gprscdr.accessPointNameNI",
5463         FT_STRING, BASE_NONE, NULL, 0,
5464         NULL, HFILL }},
5465     { &hf_gprscdr_pdpType,
5466       { "pdpType", "gprscdr.pdpType",
5467         FT_BYTES, BASE_NONE, NULL, 0,
5468         NULL, HFILL }},
5469     { &hf_gprscdr_servedPDPAddress,
5470       { "servedPDPAddress", "gprscdr.servedPDPAddress",
5471         FT_UINT32, BASE_DEC, VALS(gprscdr_PDPAddress_vals), 0,
5472         "PDPAddress", HFILL }},
5473     { &hf_gprscdr_dynamicAddressFlag,
5474       { "dynamicAddressFlag", "gprscdr.dynamicAddressFlag",
5475         FT_BOOLEAN, BASE_NONE, NULL, 0,
5476         NULL, HFILL }},
5477     { &hf_gprscdr_listOfTrafficVolumes,
5478       { "listOfTrafficVolumes", "gprscdr.listOfTrafficVolumes",
5479         FT_UINT32, BASE_DEC, NULL, 0,
5480         "SEQUENCE_OF_ChangeOfCharConditionV651", HFILL }},
5481     { &hf_gprscdr_listOfTrafficVolumes_item,
5482       { "ChangeOfCharConditionV651", "gprscdr.ChangeOfCharConditionV651_element",
5483         FT_NONE, BASE_NONE, NULL, 0,
5484         NULL, HFILL }},
5485     { &hf_gprscdr_recordOpeningTime,
5486       { "recordOpeningTime", "gprscdr.recordOpeningTime",
5487         FT_BYTES, BASE_NONE, NULL, 0,
5488         "TimeStamp", HFILL }},
5489     { &hf_gprscdr_duration,
5490       { "duration", "gprscdr.duration",
5491         FT_INT32, BASE_DEC, NULL, 0,
5492         "CallDuration", HFILL }},
5493     { &hf_gprscdr_causeForRecClosing,
5494       { "causeForRecClosing", "gprscdr.causeForRecClosing",
5495         FT_INT32, BASE_DEC, VALS(gprscdr_CauseForRecClosingV651_vals), 0,
5496         "CauseForRecClosingV651", HFILL }},
5497     { &hf_gprscdr_diagnostics,
5498       { "diagnostics", "gprscdr.diagnostics",
5499         FT_UINT32, BASE_DEC, VALS(gprscdr_Diagnostics_vals), 0,
5500         NULL, HFILL }},
5501     { &hf_gprscdr_recordSequenceNumber,
5502       { "recordSequenceNumber", "gprscdr.recordSequenceNumber",
5503         FT_INT32, BASE_DEC, NULL, 0,
5504         "INTEGER", HFILL }},
5505     { &hf_gprscdr_nodeID,
5506       { "nodeID", "gprscdr.nodeID",
5507         FT_STRING, BASE_NONE, NULL, 0,
5508         NULL, HFILL }},
5509     { &hf_gprscdr_recordExtensions,
5510       { "recordExtensions", "gprscdr.recordExtensions",
5511         FT_UINT32, BASE_DEC, NULL, 0,
5512         "ManagementExtensions", HFILL }},
5513     { &hf_gprscdr_localSequenceNumber,
5514       { "localSequenceNumber", "gprscdr.localSequenceNumber",
5515         FT_UINT32, BASE_DEC, NULL, 0,
5516         NULL, HFILL }},
5517     { &hf_gprscdr_apnSelectionMode,
5518       { "apnSelectionMode", "gprscdr.apnSelectionMode",
5519         FT_UINT32, BASE_DEC, VALS(gprscdr_APNSelectionMode_vals), 0,
5520         NULL, HFILL }},
5521     { &hf_gprscdr_servedMSISDN,
5522       { "servedMSISDN", "gprscdr.servedMSISDN",
5523         FT_BYTES, BASE_NONE, NULL, 0,
5524         "MSISDN", HFILL }},
5525     { &hf_gprscdr_chargingCharacteristics,
5526       { "chargingCharacteristics", "gprscdr.chargingCharacteristics",
5527         FT_BYTES, BASE_NONE, NULL, 0,
5528         NULL, HFILL }},
5529     { &hf_gprscdr_chChSelectionMode,
5530       { "chChSelectionMode", "gprscdr.chChSelectionMode",
5531         FT_UINT32, BASE_DEC, VALS(gprscdr_ChChSelectionMode_vals), 0,
5532         NULL, HFILL }},
5533     { &hf_gprscdr_iMSsignalingContext,
5534       { "iMSsignalingContext", "gprscdr.iMSsignalingContext_element",
5535         FT_NONE, BASE_NONE, NULL, 0,
5536         NULL, HFILL }},
5537     { &hf_gprscdr_externalChargingID,
5538       { "externalChargingID", "gprscdr.externalChargingID",
5539         FT_BYTES, BASE_NONE, NULL, 0,
5540         "OCTET_STRING", HFILL }},
5541     { &hf_gprscdr_sgsnPLMNIdentifier,
5542       { "sgsnPLMNIdentifier", "gprscdr.sgsnPLMNIdentifier",
5543         FT_BYTES, BASE_NONE, NULL, 0,
5544         "PLMN_Id", HFILL }},
5545     { &hf_gprscdr_servedIMEISV,
5546       { "servedIMEISV", "gprscdr.servedIMEISV",
5547         FT_BYTES, BASE_NONE, NULL, 0,
5548         "IMEI", HFILL }},
5549     { &hf_gprscdr_rATType,
5550       { "rATType", "gprscdr.rATType",
5551         FT_UINT32, BASE_DEC, VALS(gprscdr_rat_type_vals), 0,
5552         NULL, HFILL }},
5553     { &hf_gprscdr_mSTimeZone,
5554       { "mSTimeZone", "gprscdr.mSTimeZone",
5555         FT_BYTES, BASE_NONE, NULL, 0,
5556         NULL, HFILL }},
5557     { &hf_gprscdr_userLocationInformation,
5558       { "userLocationInformation", "gprscdr.userLocationInformation",
5559         FT_BYTES, BASE_NONE, NULL, 0,
5560         NULL, HFILL }},
5561     { &hf_gprscdr_cAMELChargingInformation,
5562       { "cAMELChargingInformation", "gprscdr.cAMELChargingInformation",
5563         FT_BYTES, BASE_NONE, NULL, 0,
5564         "OCTET_STRING", HFILL }},
5565     { &hf_gprscdr_recordType_01,
5566       { "recordType", "gprscdr.recordType",
5567         FT_INT32, BASE_DEC, VALS(gprscdr_RecordType_vals), 0,
5568         NULL, HFILL }},
5569     { &hf_gprscdr_causeForRecClosing_01,
5570       { "causeForRecClosing", "gprscdr.causeForRecClosing",
5571         FT_INT32, BASE_DEC, VALS(gprscdr_CauseForRecClosing_vals), 0,
5572         NULL, HFILL }},
5573     { &hf_gprscdr_userLocationInformation_01,
5574       { "userLocationInformation", "gprscdr.userLocationInformation",
5575         FT_BYTES, BASE_NONE, NULL, 0,
5576         "T_userLocationInformation_01", HFILL }},
5577     { &hf_gprscdr_pSFurnishChargingInformation,
5578       { "pSFurnishChargingInformation", "gprscdr.pSFurnishChargingInformation_element",
5579         FT_NONE, BASE_NONE, NULL, 0,
5580         NULL, HFILL }},
5581     { &hf_gprscdr_userLocationInformation_02,
5582       { "userLocationInformation", "gprscdr.userLocationInformation",
5583         FT_BYTES, BASE_NONE, NULL, 0,
5584         "T_userLocationInformation_02", HFILL }},
5585     { &hf_gprscdr_listOfServiceData,
5586       { "listOfServiceData", "gprscdr.listOfServiceData",
5587         FT_UINT32, BASE_DEC, NULL, 0,
5588         "SEQUENCE_OF_ChangeOfServiceConditionV651", HFILL }},
5589     { &hf_gprscdr_listOfServiceData_item,
5590       { "ChangeOfServiceConditionV651", "gprscdr.ChangeOfServiceConditionV651_element",
5591         FT_NONE, BASE_NONE, NULL, 0,
5592         NULL, HFILL }},
5593     { &hf_gprscdr_userLocationInformation_03,
5594       { "userLocationInformation", "gprscdr.userLocationInformation",
5595         FT_BYTES, BASE_NONE, NULL, 0,
5596         "T_userLocationInformation_03", HFILL }},
5597     { &hf_gprscdr_listOfServiceData_01,
5598       { "listOfServiceData", "gprscdr.listOfServiceData",
5599         FT_UINT32, BASE_DEC, NULL, 0,
5600         "SEQUENCE_OF_ChangeOfServiceConditionV750", HFILL }},
5601     { &hf_gprscdr_listOfServiceData_item_01,
5602       { "ChangeOfServiceConditionV750", "gprscdr.ChangeOfServiceConditionV750_element",
5603         FT_NONE, BASE_NONE, NULL, 0,
5604         NULL, HFILL }},
5605     { &hf_gprscdr_servedIMEI,
5606       { "servedIMEI", "gprscdr.servedIMEI",
5607         FT_BYTES, BASE_NONE, NULL, 0,
5608         "IMEI", HFILL }},
5609     { &hf_gprscdr_sgsnAddress_01,
5610       { "sgsnAddress", "gprscdr.sgsnAddress",
5611         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5612         "GSNAddress", HFILL }},
5613     { &hf_gprscdr_msNetworkCapability,
5614       { "msNetworkCapability", "gprscdr.msNetworkCapability",
5615         FT_BYTES, BASE_NONE, NULL, 0,
5616         NULL, HFILL }},
5617     { &hf_gprscdr_routingArea,
5618       { "routingArea", "gprscdr.routingArea",
5619         FT_BYTES, BASE_NONE, NULL, 0,
5620         "RoutingAreaCode", HFILL }},
5621     { &hf_gprscdr_cellIdentifier,
5622       { "cellIdentifier", "gprscdr.cellIdentifier",
5623         FT_BYTES, BASE_NONE, NULL, 0,
5624         "CellId", HFILL }},
5625     { &hf_gprscdr_ggsnAddressUsed,
5626       { "ggsnAddressUsed", "gprscdr.ggsnAddressUsed",
5627         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5628         "GSNAddress", HFILL }},
5629     { &hf_gprscdr_sgsnChange,
5630       { "sgsnChange", "gprscdr.sgsnChange",
5631         FT_BOOLEAN, BASE_NONE, NULL, 0,
5632         NULL, HFILL }},
5633     { &hf_gprscdr_accessPointNameOI,
5634       { "accessPointNameOI", "gprscdr.accessPointNameOI",
5635         FT_STRING, BASE_NONE, NULL, 0,
5636         NULL, HFILL }},
5637     { &hf_gprscdr_cAMELInformationPDP,
5638       { "cAMELInformationPDP", "gprscdr.cAMELInformationPDP_element",
5639         FT_NONE, BASE_NONE, NULL, 0,
5640         NULL, HFILL }},
5641     { &hf_gprscdr_rNCUnsentDownlinkVolume,
5642       { "rNCUnsentDownlinkVolume", "gprscdr.rNCUnsentDownlinkVolume",
5643         FT_INT32, BASE_DEC, NULL, 0,
5644         "DataVolumeGPRS", HFILL }},
5645     { &hf_gprscdr_serviceCentre,
5646       { "serviceCentre", "gprscdr.serviceCentre",
5647         FT_BYTES, BASE_NONE, NULL, 0,
5648         "AddressString", HFILL }},
5649     { &hf_gprscdr_recordingEntity,
5650       { "recordingEntity", "gprscdr.recordingEntity",
5651         FT_BYTES, BASE_NONE, NULL, 0,
5652         NULL, HFILL }},
5653     { &hf_gprscdr_locationArea,
5654       { "locationArea", "gprscdr.locationArea",
5655         FT_BYTES, BASE_NONE, NULL, 0,
5656         "LocationAreaCode", HFILL }},
5657     { &hf_gprscdr_messageReference,
5658       { "messageReference", "gprscdr.messageReference",
5659         FT_BYTES, BASE_NONE, NULL, 0,
5660         NULL, HFILL }},
5661     { &hf_gprscdr_eventTimeStamp,
5662       { "eventTimeStamp", "gprscdr.eventTimeStamp",
5663         FT_BYTES, BASE_NONE, NULL, 0,
5664         "TimeStamp", HFILL }},
5665     { &hf_gprscdr_smsResult,
5666       { "smsResult", "gprscdr.smsResult",
5667         FT_UINT32, BASE_DEC, VALS(gprscdr_Diagnostics_vals), 0,
5668         NULL, HFILL }},
5669     { &hf_gprscdr_destinationNumber,
5670       { "destinationNumber", "gprscdr.destinationNumber",
5671         FT_BYTES, BASE_NONE, NULL, 0,
5672         "SmsTpDestinationNumber", HFILL }},
5673     { &hf_gprscdr_cAMELInformationSMS,
5674       { "cAMELInformationSMS", "gprscdr.cAMELInformationSMS_element",
5675         FT_NONE, BASE_NONE, NULL, 0,
5676         NULL, HFILL }},
5677     { &hf_gprscdr_qosRequested,
5678       { "qosRequested", "gprscdr.qosRequested",
5679         FT_BYTES, BASE_NONE, NULL, 0,
5680         "QoSInformation", HFILL }},
5681     { &hf_gprscdr_qosNegotiated,
5682       { "qosNegotiated", "gprscdr.qosNegotiated",
5683         FT_BYTES, BASE_NONE, NULL, 0,
5684         "QoSInformation", HFILL }},
5685     { &hf_gprscdr_dataVolumeGPRSUplink,
5686       { "dataVolumeGPRSUplink", "gprscdr.dataVolumeGPRSUplink",
5687         FT_INT32, BASE_DEC, NULL, 0,
5688         "DataVolumeGPRS", HFILL }},
5689     { &hf_gprscdr_dataVolumeGPRSDownlink,
5690       { "dataVolumeGPRSDownlink", "gprscdr.dataVolumeGPRSDownlink",
5691         FT_INT32, BASE_DEC, NULL, 0,
5692         "DataVolumeGPRS", HFILL }},
5693     { &hf_gprscdr_changeCondition,
5694       { "changeCondition", "gprscdr.changeCondition",
5695         FT_UINT32, BASE_DEC, VALS(gprscdr_ChangeConditionV651_vals), 0,
5696         "ChangeConditionV651", HFILL }},
5697     { &hf_gprscdr_changeTime,
5698       { "changeTime", "gprscdr.changeTime",
5699         FT_BYTES, BASE_NONE, NULL, 0,
5700         "TimeStamp", HFILL }},
5701     { &hf_gprscdr_failureHandlingContinue,
5702       { "failureHandlingContinue", "gprscdr.failureHandlingContinue",
5703         FT_BOOLEAN, BASE_NONE, NULL, 0,
5704         NULL, HFILL }},
5705     { &hf_gprscdr_userLocationInformation_04,
5706       { "userLocationInformation", "gprscdr.userLocationInformation",
5707         FT_BYTES, BASE_NONE, NULL, 0,
5708         "T_userLocationInformation_04", HFILL }},
5709     { &hf_gprscdr_ratingGroup,
5710       { "ratingGroup", "gprscdr.ratingGroup",
5711         FT_UINT32, BASE_DEC, NULL, 0,
5712         "RatingGroupId", HFILL }},
5713     { &hf_gprscdr_chargingRuleBaseName,
5714       { "chargingRuleBaseName", "gprscdr.chargingRuleBaseName",
5715         FT_STRING, BASE_NONE, NULL, 0,
5716         NULL, HFILL }},
5717     { &hf_gprscdr_resultCode,
5718       { "resultCode", "gprscdr.resultCode",
5719         FT_INT32, BASE_DEC, NULL, 0,
5720         NULL, HFILL }},
5721     { &hf_gprscdr_timeOfFirstUsage,
5722       { "timeOfFirstUsage", "gprscdr.timeOfFirstUsage",
5723         FT_BYTES, BASE_NONE, NULL, 0,
5724         "TimeStamp", HFILL }},
5725     { &hf_gprscdr_timeOfLastUsage,
5726       { "timeOfLastUsage", "gprscdr.timeOfLastUsage",
5727         FT_BYTES, BASE_NONE, NULL, 0,
5728         "TimeStamp", HFILL }},
5729     { &hf_gprscdr_timeUsage,
5730       { "timeUsage", "gprscdr.timeUsage",
5731         FT_INT32, BASE_DEC, NULL, 0,
5732         "CallDuration", HFILL }},
5733     { &hf_gprscdr_serviceConditionChange,
5734       { "serviceConditionChange", "gprscdr.serviceConditionChange",
5735         FT_BYTES, BASE_NONE, NULL, 0,
5736         "ServiceConditionChangeV651", HFILL }},
5737     { &hf_gprscdr_qoSInformationNeg,
5738       { "qoSInformationNeg", "gprscdr.qoSInformationNeg",
5739         FT_BYTES, BASE_NONE, NULL, 0,
5740         "QoSInformation", HFILL }},
5741     { &hf_gprscdr_sgsn_Address,
5742       { "sgsn-Address", "gprscdr.sgsn_Address",
5743         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5744         "GSNAddress", HFILL }},
5745     { &hf_gprscdr_sGSNPLMNIdentifier,
5746       { "sGSNPLMNIdentifier", "gprscdr.sGSNPLMNIdentifier",
5747         FT_BYTES, BASE_NONE, NULL, 0,
5748         "PLMN_Id", HFILL }},
5749     { &hf_gprscdr_datavolumeFBCUplink,
5750       { "datavolumeFBCUplink", "gprscdr.datavolumeFBCUplink",
5751         FT_INT32, BASE_DEC, NULL, 0,
5752         "DataVolumeGPRS", HFILL }},
5753     { &hf_gprscdr_datavolumeFBCDownlink,
5754       { "datavolumeFBCDownlink", "gprscdr.datavolumeFBCDownlink",
5755         FT_INT32, BASE_DEC, NULL, 0,
5756         "DataVolumeGPRS", HFILL }},
5757     { &hf_gprscdr_timeOfReport,
5758       { "timeOfReport", "gprscdr.timeOfReport",
5759         FT_BYTES, BASE_NONE, NULL, 0,
5760         "TimeStamp", HFILL }},
5761     { &hf_gprscdr_serviceIdentifier,
5762       { "serviceIdentifier", "gprscdr.serviceIdentifier",
5763         FT_UINT32, BASE_DEC, NULL, 0,
5764         NULL, HFILL }},
5765     { &hf_gprscdr_serviceConditionChangeV750,
5766       { "serviceConditionChangeV750", "gprscdr.serviceConditionChangeV750",
5767         FT_BYTES, BASE_NONE, NULL, 0,
5768         NULL, HFILL }},
5769     { &hf_gprscdr_aFRecordInformation,
5770       { "aFRecordInformation", "gprscdr.aFRecordInformation",
5771         FT_UINT32, BASE_DEC, NULL, 0,
5772         "SEQUENCE_OF_AFRecordInformation", HFILL }},
5773     { &hf_gprscdr_aFRecordInformation_item,
5774       { "AFRecordInformation", "gprscdr.AFRecordInformation_element",
5775         FT_NONE, BASE_NONE, NULL, 0,
5776         NULL, HFILL }},
5777     { &hf_gprscdr_userLocationInformation_05,
5778       { "userLocationInformation", "gprscdr.userLocationInformation",
5779         FT_BYTES, BASE_NONE, NULL, 0,
5780         "T_userLocationInformation_05", HFILL }},
5781     { &hf_gprscdr_eventBasedChargingInformation,
5782       { "eventBasedChargingInformation", "gprscdr.eventBasedChargingInformation_element",
5783         FT_NONE, BASE_NONE, NULL, 0,
5784         NULL, HFILL }},
5785     { &hf_gprscdr_timeQuotaMechanism,
5786       { "timeQuotaMechanism", "gprscdr.timeQuotaMechanism_element",
5787         FT_NONE, BASE_NONE, NULL, 0,
5788         NULL, HFILL }},
5789     { &hf_gprscdr_sgsnPDPRecord_01,
5790       { "sgsnPDPRecord", "gprscdr.sgsnPDPRecord_element",
5791         FT_NONE, BASE_NONE, NULL, 0,
5792         NULL, HFILL }},
5793     { &hf_gprscdr_ggsnPDPRecord_01,
5794       { "ggsnPDPRecord", "gprscdr.ggsnPDPRecord_element",
5795         FT_NONE, BASE_NONE, NULL, 0,
5796         "GGSNPDPRecordV750", HFILL }},
5797     { &hf_gprscdr_sgsnSMORecord_01,
5798       { "sgsnSMORecord", "gprscdr.sgsnSMORecord_element",
5799         FT_NONE, BASE_NONE, NULL, 0,
5800         NULL, HFILL }},
5801     { &hf_gprscdr_sgsnSMTRecord_01,
5802       { "sgsnSMTRecord", "gprscdr.sgsnSMTRecord_element",
5803         FT_NONE, BASE_NONE, NULL, 0,
5804         NULL, HFILL }},
5805     { &hf_gprscdr_sgsnMTLCSRecord,
5806       { "sgsnMTLCSRecord", "gprscdr.sgsnMTLCSRecord_element",
5807         FT_NONE, BASE_NONE, NULL, 0,
5808         NULL, HFILL }},
5809     { &hf_gprscdr_sgsnMOLCSRecord,
5810       { "sgsnMOLCSRecord", "gprscdr.sgsnMOLCSRecord_element",
5811         FT_NONE, BASE_NONE, NULL, 0,
5812         NULL, HFILL }},
5813     { &hf_gprscdr_sgsnNILCSRecord,
5814       { "sgsnNILCSRecord", "gprscdr.sgsnNILCSRecord_element",
5815         FT_NONE, BASE_NONE, NULL, 0,
5816         NULL, HFILL }},
5817     { &hf_gprscdr_egsnPDPRecord_01,
5818       { "egsnPDPRecord", "gprscdr.egsnPDPRecord_element",
5819         FT_NONE, BASE_NONE, NULL, 0,
5820         "EGSNPDPRecordV750", HFILL }},
5821     { &hf_gprscdr_sgsnMBMSRecord,
5822       { "sgsnMBMSRecord", "gprscdr.sgsnMBMSRecord_element",
5823         FT_NONE, BASE_NONE, NULL, 0,
5824         NULL, HFILL }},
5825     { &hf_gprscdr_ggsnMBMSRecord,
5826       { "ggsnMBMSRecord", "gprscdr.ggsnMBMSRecord_element",
5827         FT_NONE, BASE_NONE, NULL, 0,
5828         NULL, HFILL }},
5829     { &hf_gprscdr_sGWRecord,
5830       { "sGWRecord", "gprscdr.sGWRecord_element",
5831         FT_NONE, BASE_NONE, NULL, 0,
5832         NULL, HFILL }},
5833     { &hf_gprscdr_pGWRecord,
5834       { "pGWRecord", "gprscdr.pGWRecord_element",
5835         FT_NONE, BASE_NONE, NULL, 0,
5836         NULL, HFILL }},
5837     { &hf_gprscdr_gwMBMSRecord,
5838       { "gwMBMSRecord", "gprscdr.gwMBMSRecord_element",
5839         FT_NONE, BASE_NONE, NULL, 0,
5840         NULL, HFILL }},
5841     { &hf_gprscdr_tDFRecord,
5842       { "tDFRecord", "gprscdr.tDFRecord_element",
5843         FT_NONE, BASE_NONE, NULL, 0,
5844         NULL, HFILL }},
5845     { &hf_gprscdr_iPERecord,
5846       { "iPERecord", "gprscdr.iPERecord_element",
5847         FT_NONE, BASE_NONE, NULL, 0,
5848         NULL, HFILL }},
5849     { &hf_gprscdr_ePDGRecord,
5850       { "ePDGRecord", "gprscdr.ePDGRecord_element",
5851         FT_NONE, BASE_NONE, NULL, 0,
5852         NULL, HFILL }},
5853     { &hf_gprscdr_tWAGRecord,
5854       { "tWAGRecord", "gprscdr.tWAGRecord_element",
5855         FT_NONE, BASE_NONE, NULL, 0,
5856         NULL, HFILL }},
5857     { &hf_gprscdr_s_GWAddress,
5858       { "s-GWAddress", "gprscdr.s_GWAddress",
5859         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5860         "GSNAddress", HFILL }},
5861     { &hf_gprscdr_servingNodeAddress,
5862       { "servingNodeAddress", "gprscdr.servingNodeAddress",
5863         FT_UINT32, BASE_DEC, NULL, 0,
5864         "SEQUENCE_OF_GSNAddress", HFILL }},
5865     { &hf_gprscdr_servingNodeAddress_item,
5866       { "GSNAddress", "gprscdr.GSNAddress",
5867         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5868         NULL, HFILL }},
5869     { &hf_gprscdr_pdpPDNType,
5870       { "pdpPDNType", "gprscdr.pdpPDNType",
5871         FT_BYTES, BASE_NONE, NULL, 0,
5872         "PDPType", HFILL }},
5873     { &hf_gprscdr_servedPDPPDNAddress,
5874       { "servedPDPPDNAddress", "gprscdr.servedPDPPDNAddress",
5875         FT_UINT32, BASE_DEC, VALS(gprscdr_PDPAddress_vals), 0,
5876         "PDPAddress", HFILL }},
5877     { &hf_gprscdr_listOfTrafficVolumes_01,
5878       { "listOfTrafficVolumes", "gprscdr.listOfTrafficVolumes",
5879         FT_UINT32, BASE_DEC, NULL, 0,
5880         "SEQUENCE_OF_ChangeOfCharCondition", HFILL }},
5881     { &hf_gprscdr_listOfTrafficVolumes_item_01,
5882       { "ChangeOfCharCondition", "gprscdr.ChangeOfCharCondition_element",
5883         FT_NONE, BASE_NONE, NULL, 0,
5884         NULL, HFILL }},
5885     { &hf_gprscdr_servingNodePLMNIdentifier,
5886       { "servingNodePLMNIdentifier", "gprscdr.servingNodePLMNIdentifier",
5887         FT_BYTES, BASE_NONE, NULL, 0,
5888         "PLMN_Id", HFILL }},
5889     { &hf_gprscdr_userLocationInformation_06,
5890       { "userLocationInformation", "gprscdr.userLocationInformation",
5891         FT_BYTES, BASE_NONE, NULL, 0,
5892         "T_userLocationInformation_06", HFILL }},
5893     { &hf_gprscdr_sGWChange,
5894       { "sGWChange", "gprscdr.sGWChange",
5895         FT_BOOLEAN, BASE_NONE, NULL, 0,
5896         NULL, HFILL }},
5897     { &hf_gprscdr_servingNodeType,
5898       { "servingNodeType", "gprscdr.servingNodeType",
5899         FT_UINT32, BASE_DEC, NULL, 0,
5900         "SEQUENCE_OF_ServingNodeType", HFILL }},
5901     { &hf_gprscdr_servingNodeType_item,
5902       { "ServingNodeType", "gprscdr.ServingNodeType",
5903         FT_UINT32, BASE_DEC, VALS(gprscdr_ServingNodeType_vals), 0,
5904         NULL, HFILL }},
5905     { &hf_gprscdr_p_GWAddressUsed,
5906       { "p-GWAddressUsed", "gprscdr.p_GWAddressUsed",
5907         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5908         "GSNAddress", HFILL }},
5909     { &hf_gprscdr_p_GWPLMNIdentifier,
5910       { "p-GWPLMNIdentifier", "gprscdr.p_GWPLMNIdentifier",
5911         FT_BYTES, BASE_NONE, NULL, 0,
5912         "PLMN_Id", HFILL }},
5913     { &hf_gprscdr_startTime,
5914       { "startTime", "gprscdr.startTime",
5915         FT_BYTES, BASE_NONE, NULL, 0,
5916         "TimeStamp", HFILL }},
5917     { &hf_gprscdr_stopTime,
5918       { "stopTime", "gprscdr.stopTime",
5919         FT_BYTES, BASE_NONE, NULL, 0,
5920         "TimeStamp", HFILL }},
5921     { &hf_gprscdr_pDNConnectionChargingID,
5922       { "pDNConnectionChargingID", "gprscdr.pDNConnectionChargingID",
5923         FT_UINT32, BASE_DEC, NULL, 0,
5924         "ChargingID", HFILL }},
5925     { &hf_gprscdr_iMSIunauthenticatedFlag,
5926       { "iMSIunauthenticatedFlag", "gprscdr.iMSIunauthenticatedFlag_element",
5927         FT_NONE, BASE_NONE, NULL, 0,
5928         NULL, HFILL }},
5929     { &hf_gprscdr_userCSGInformation,
5930       { "userCSGInformation", "gprscdr.userCSGInformation_element",
5931         FT_NONE, BASE_NONE, NULL, 0,
5932         NULL, HFILL }},
5933     { &hf_gprscdr_servedPDPPDNAddressExt,
5934       { "servedPDPPDNAddressExt", "gprscdr.servedPDPPDNAddressExt",
5935         FT_UINT32, BASE_DEC, VALS(gprscdr_PDPAddress_vals), 0,
5936         "PDPAddress", HFILL }},
5937     { &hf_gprscdr_lowPriorityIndicator,
5938       { "lowPriorityIndicator", "gprscdr.lowPriorityIndicator_element",
5939         FT_NONE, BASE_NONE, NULL, 0,
5940         NULL, HFILL }},
5941     { &hf_gprscdr_dynamicAddressFlagExt,
5942       { "dynamicAddressFlagExt", "gprscdr.dynamicAddressFlagExt",
5943         FT_BOOLEAN, BASE_NONE, NULL, 0,
5944         "DynamicAddressFlag", HFILL }},
5945     { &hf_gprscdr_s_GWiPv6Address,
5946       { "s-GWiPv6Address", "gprscdr.s_GWiPv6Address",
5947         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5948         "GSNAddress", HFILL }},
5949     { &hf_gprscdr_servingNodeiPv6Address,
5950       { "servingNodeiPv6Address", "gprscdr.servingNodeiPv6Address",
5951         FT_UINT32, BASE_DEC, NULL, 0,
5952         "SEQUENCE_OF_GSNAddress", HFILL }},
5953     { &hf_gprscdr_servingNodeiPv6Address_item,
5954       { "GSNAddress", "gprscdr.GSNAddress",
5955         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5956         NULL, HFILL }},
5957     { &hf_gprscdr_p_GWiPv6AddressUsed,
5958       { "p-GWiPv6AddressUsed", "gprscdr.p_GWiPv6AddressUsed",
5959         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
5960         "GSNAddress", HFILL }},
5961     { &hf_gprscdr_retransmission,
5962       { "retransmission", "gprscdr.retransmission_element",
5963         FT_NONE, BASE_NONE, NULL, 0,
5964         NULL, HFILL }},
5965     { &hf_gprscdr_userLocationInfoTime,
5966       { "userLocationInfoTime", "gprscdr.userLocationInfoTime",
5967         FT_BYTES, BASE_NONE, NULL, 0,
5968         "TimeStamp", HFILL }},
5969     { &hf_gprscdr_cNOperatorSelectionEnt,
5970       { "cNOperatorSelectionEnt", "gprscdr.cNOperatorSelectionEnt",
5971         FT_UINT32, BASE_DEC, VALS(gprscdr_CNOperatorSelectionEntity_vals), 0,
5972         "CNOperatorSelectionEntity", HFILL }},
5973     { &hf_gprscdr_presenceReportingAreaInfo,
5974       { "presenceReportingAreaInfo", "gprscdr.presenceReportingAreaInfo_element",
5975         FT_NONE, BASE_NONE, NULL, 0,
5976         NULL, HFILL }},
5977     { &hf_gprscdr_lastUserLocationInformation,
5978       { "lastUserLocationInformation", "gprscdr.lastUserLocationInformation",
5979         FT_BYTES, BASE_NONE, NULL, 0,
5980         NULL, HFILL }},
5981     { &hf_gprscdr_lastMSTimeZone,
5982       { "lastMSTimeZone", "gprscdr.lastMSTimeZone",
5983         FT_BYTES, BASE_NONE, NULL, 0,
5984         "MSTimeZone", HFILL }},
5985     { &hf_gprscdr_enhancedDiagnostics,
5986       { "enhancedDiagnostics", "gprscdr.enhancedDiagnostics_element",
5987         FT_NONE, BASE_NONE, NULL, 0,
5988         NULL, HFILL }},
5989     { &hf_gprscdr_cPCIoTEPSOptimisationIndicator,
5990       { "cPCIoTEPSOptimisationIndicator", "gprscdr.cPCIoTEPSOptimisationIndicator",
5991         FT_BOOLEAN, BASE_NONE, NULL, 0,
5992         NULL, HFILL }},
5993     { &hf_gprscdr_uNIPDUCPOnlyFlag,
5994       { "uNIPDUCPOnlyFlag", "gprscdr.uNIPDUCPOnlyFlag",
5995         FT_BOOLEAN, BASE_NONE, NULL, 0,
5996         NULL, HFILL }},
5997     { &hf_gprscdr_servingPLMNRateControl,
5998       { "servingPLMNRateControl", "gprscdr.servingPLMNRateControl_element",
5999         FT_NONE, BASE_NONE, NULL, 0,
6000         NULL, HFILL }},
6001     { &hf_gprscdr_pDPPDNTypeExtension,
6002       { "pDPPDNTypeExtension", "gprscdr.pDPPDNTypeExtension",
6003         FT_INT32, BASE_DEC, NULL, 0,
6004         NULL, HFILL }},
6005     { &hf_gprscdr_mOExceptionDataCounter,
6006       { "mOExceptionDataCounter", "gprscdr.mOExceptionDataCounter_element",
6007         FT_NONE, BASE_NONE, NULL, 0,
6008         NULL, HFILL }},
6009     { &hf_gprscdr_listOfRANSecondaryRATUsageReports,
6010       { "listOfRANSecondaryRATUsageReports", "gprscdr.listOfRANSecondaryRATUsageReports",
6011         FT_UINT32, BASE_DEC, NULL, 0,
6012         "SEQUENCE_OF_RANSecondaryRATUsageReport", HFILL }},
6013     { &hf_gprscdr_listOfRANSecondaryRATUsageReports_item,
6014       { "RANSecondaryRATUsageReport", "gprscdr.RANSecondaryRATUsageReport_element",
6015         FT_NONE, BASE_NONE, NULL, 0,
6016         NULL, HFILL }},
6017     { &hf_gprscdr_pSCellInformation,
6018       { "pSCellInformation", "gprscdr.pSCellInformation_element",
6019         FT_NONE, BASE_NONE, NULL, 0,
6020         NULL, HFILL }},
6021     { &hf_gprscdr_p_GWAddress,
6022       { "p-GWAddress", "gprscdr.p_GWAddress",
6023         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6024         "GSNAddress", HFILL }},
6025     { &hf_gprscdr_userLocationInformation_07,
6026       { "userLocationInformation", "gprscdr.userLocationInformation",
6027         FT_BYTES, BASE_NONE, NULL, 0,
6028         "T_userLocationInformation_07", HFILL }},
6029     { &hf_gprscdr_listOfServiceData_02,
6030       { "listOfServiceData", "gprscdr.listOfServiceData",
6031         FT_UINT32, BASE_DEC, NULL, 0,
6032         "SEQUENCE_OF_ChangeOfServiceCondition", HFILL }},
6033     { &hf_gprscdr_listOfServiceData_item_02,
6034       { "ChangeOfServiceCondition", "gprscdr.ChangeOfServiceCondition_element",
6035         FT_NONE, BASE_NONE, NULL, 0,
6036         NULL, HFILL }},
6037     { &hf_gprscdr_servedMNNAI,
6038       { "servedMNNAI", "gprscdr.servedMNNAI_element",
6039         FT_NONE, BASE_NONE, NULL, 0,
6040         "SubscriptionID", HFILL }},
6041     { &hf_gprscdr_served3gpp2MEID,
6042       { "served3gpp2MEID", "gprscdr.served3gpp2MEID",
6043         FT_BYTES, BASE_NONE, NULL, 0,
6044         "OCTET_STRING", HFILL }},
6045     { &hf_gprscdr_threeGPP2UserLocationInformation,
6046       { "threeGPP2UserLocationInformation", "gprscdr.threeGPP2UserLocationInformation",
6047         FT_BYTES, BASE_NONE, NULL, 0,
6048         "OCTET_STRING", HFILL }},
6049     { &hf_gprscdr_tWANUserLocationInformation,
6050       { "tWANUserLocationInformation", "gprscdr.tWANUserLocationInformation_element",
6051         FT_NONE, BASE_NONE, NULL, 0,
6052         "TWANUserLocationInfo", HFILL }},
6053     { &hf_gprscdr_ePCQoSInformation,
6054       { "ePCQoSInformation", "gprscdr.ePCQoSInformation_element",
6055         FT_NONE, BASE_NONE, NULL, 0,
6056         NULL, HFILL }},
6057     { &hf_gprscdr_lastUserLocationInformation_01,
6058       { "lastUserLocationInformation", "gprscdr.lastUserLocationInformation",
6059         FT_BYTES, BASE_NONE, NULL, 0,
6060         "T_lastUserLocationInformation_01", HFILL }},
6061     { &hf_gprscdr_nBIFOMMode,
6062       { "nBIFOMMode", "gprscdr.nBIFOMMode",
6063         FT_UINT32, BASE_DEC, VALS(gprscdr_NBIFOMMode_vals), 0,
6064         NULL, HFILL }},
6065     { &hf_gprscdr_nBIFOMSupport,
6066       { "nBIFOMSupport", "gprscdr.nBIFOMSupport",
6067         FT_UINT32, BASE_DEC, VALS(gprscdr_NBIFOMSupport_vals), 0,
6068         NULL, HFILL }},
6069     { &hf_gprscdr_uWANUserLocationInformation,
6070       { "uWANUserLocationInformation", "gprscdr.uWANUserLocationInformation_element",
6071         FT_NONE, BASE_NONE, NULL, 0,
6072         "UWANUserLocationInfo", HFILL }},
6073     { &hf_gprscdr_sGiPtPTunnellingMethod,
6074       { "sGiPtPTunnellingMethod", "gprscdr.sGiPtPTunnellingMethod",
6075         FT_UINT32, BASE_DEC, VALS(gprscdr_SGiPtPTunnellingMethod_vals), 0,
6076         NULL, HFILL }},
6077     { &hf_gprscdr_aPNRateControl,
6078       { "aPNRateControl", "gprscdr.aPNRateControl_element",
6079         FT_NONE, BASE_NONE, NULL, 0,
6080         NULL, HFILL }},
6081     { &hf_gprscdr_chargingPerIPCANSessionIndicator,
6082       { "chargingPerIPCANSessionIndicator", "gprscdr.chargingPerIPCANSessionIndicator",
6083         FT_UINT32, BASE_DEC, VALS(gprscdr_ChargingPerIPCANSessionIndicator_vals), 0,
6084         NULL, HFILL }},
6085     { &hf_gprscdr_threeGPPPSDataOffStatus,
6086       { "threeGPPPSDataOffStatus", "gprscdr.threeGPPPSDataOffStatus",
6087         FT_UINT32, BASE_DEC, VALS(gprscdr_ThreeGPPPSDataOffStatus_vals), 0,
6088         NULL, HFILL }},
6089     { &hf_gprscdr_sCSASAddress,
6090       { "sCSASAddress", "gprscdr.sCSASAddress_element",
6091         FT_NONE, BASE_NONE, NULL, 0,
6092         NULL, HFILL }},
6093     { &hf_gprscdr_userLocationInformation_08,
6094       { "userLocationInformation", "gprscdr.userLocationInformation",
6095         FT_BYTES, BASE_NONE, NULL, 0,
6096         "OCTET_STRING", HFILL }},
6097     { &hf_gprscdr_tDFAddress,
6098       { "tDFAddress", "gprscdr.tDFAddress",
6099         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6100         "GSNAddress", HFILL }},
6101     { &hf_gprscdr_tDFiPv6AddressUsed,
6102       { "tDFiPv6AddressUsed", "gprscdr.tDFiPv6AddressUsed",
6103         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6104         "GSNAddress", HFILL }},
6105     { &hf_gprscdr_tDFPLMNIdentifier,
6106       { "tDFPLMNIdentifier", "gprscdr.tDFPLMNIdentifier",
6107         FT_BYTES, BASE_NONE, NULL, 0,
6108         "PLMN_Id", HFILL }},
6109     { &hf_gprscdr_servedFixedSubsID,
6110       { "servedFixedSubsID", "gprscdr.servedFixedSubsID",
6111         FT_BYTES, BASE_NONE, NULL, 0,
6112         "FixedSubsID", HFILL }},
6113     { &hf_gprscdr_accessLineIdentifier,
6114       { "accessLineIdentifier", "gprscdr.accessLineIdentifier_element",
6115         FT_NONE, BASE_NONE, NULL, 0,
6116         NULL, HFILL }},
6117     { &hf_gprscdr_fixedUserLocationInformation,
6118       { "fixedUserLocationInformation", "gprscdr.fixedUserLocationInformation_element",
6119         FT_NONE, BASE_NONE, NULL, 0,
6120         NULL, HFILL }},
6121     { &hf_gprscdr_iPEdgeAddress,
6122       { "iPEdgeAddress", "gprscdr.iPEdgeAddress",
6123         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6124         "GSNAddress", HFILL }},
6125     { &hf_gprscdr_iPCANsessionType,
6126       { "iPCANsessionType", "gprscdr.iPCANsessionType",
6127         FT_BYTES, BASE_NONE, NULL, 0,
6128         "PDPType", HFILL }},
6129     { &hf_gprscdr_servedIPCANsessionAddress,
6130       { "servedIPCANsessionAddress", "gprscdr.servedIPCANsessionAddress",
6131         FT_UINT32, BASE_DEC, VALS(gprscdr_PDPAddress_vals), 0,
6132         "PDPAddress", HFILL }},
6133     { &hf_gprscdr_iPEdgeOperatorIdentifier,
6134       { "iPEdgeOperatorIdentifier", "gprscdr.iPEdgeOperatorIdentifier",
6135         FT_BYTES, BASE_NONE, NULL, 0,
6136         "PLMN_Id", HFILL }},
6137     { &hf_gprscdr_servedIPCANsessionAddressExt,
6138       { "servedIPCANsessionAddressExt", "gprscdr.servedIPCANsessionAddressExt",
6139         FT_UINT32, BASE_DEC, VALS(gprscdr_PDPAddress_vals), 0,
6140         "PDPAddress", HFILL }},
6141     { &hf_gprscdr_iPEdgeiPv6AddressUsed,
6142       { "iPEdgeiPv6AddressUsed", "gprscdr.iPEdgeiPv6AddressUsed",
6143         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6144         "GSNAddress", HFILL }},
6145     { &hf_gprscdr_ePDGAddressUsed,
6146       { "ePDGAddressUsed", "gprscdr.ePDGAddressUsed",
6147         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6148         "GSNAddress", HFILL }},
6149     { &hf_gprscdr_ePDGiPv6AddressUsed,
6150       { "ePDGiPv6AddressUsed", "gprscdr.ePDGiPv6AddressUsed",
6151         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6152         "GSNAddress", HFILL }},
6153     { &hf_gprscdr_tWAGAddressUsed,
6154       { "tWAGAddressUsed", "gprscdr.tWAGAddressUsed",
6155         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6156         "GSNAddress", HFILL }},
6157     { &hf_gprscdr_tWAGiPv6AddressUsed,
6158       { "tWAGiPv6AddressUsed", "gprscdr.tWAGiPv6AddressUsed",
6159         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6160         "GSNAddress", HFILL }},
6161     { &hf_gprscdr_changeLocation,
6162       { "changeLocation", "gprscdr.changeLocation",
6163         FT_UINT32, BASE_DEC, NULL, 0,
6164         "SEQUENCE_OF_ChangeLocation", HFILL }},
6165     { &hf_gprscdr_changeLocation_item,
6166       { "ChangeLocation", "gprscdr.ChangeLocation_element",
6167         FT_NONE, BASE_NONE, NULL, 0,
6168         NULL, HFILL }},
6169     { &hf_gprscdr_cAMELInformationMM,
6170       { "cAMELInformationMM", "gprscdr.cAMELInformationMM_element",
6171         FT_NONE, BASE_NONE, NULL, 0,
6172         NULL, HFILL }},
6173     { &hf_gprscdr_cellPLMNId,
6174       { "cellPLMNId", "gprscdr.cellPLMNId",
6175         FT_BYTES, BASE_NONE, NULL, 0,
6176         "PLMN_Id", HFILL }},
6177     { &hf_gprscdr_servingNodeType_01,
6178       { "servingNodeType", "gprscdr.servingNodeType",
6179         FT_UINT32, BASE_DEC, VALS(gprscdr_ServingNodeType_vals), 0,
6180         NULL, HFILL }},
6181     { &hf_gprscdr_servingNodeAddress_01,
6182       { "servingNodeAddress", "gprscdr.servingNodeAddress",
6183         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6184         "GSNAddress", HFILL }},
6185     { &hf_gprscdr_servingNodeiPv6Address_01,
6186       { "servingNodeiPv6Address", "gprscdr.servingNodeiPv6Address",
6187         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6188         "GSNAddress", HFILL }},
6189     { &hf_gprscdr_mMEName,
6190       { "mMEName", "gprscdr.mMEName",
6191         FT_BYTES, BASE_NONE, NULL, 0,
6192         "DiameterIdentity", HFILL }},
6193     { &hf_gprscdr_mMERealm,
6194       { "mMERealm", "gprscdr.mMERealm",
6195         FT_BYTES, BASE_NONE, NULL, 0,
6196         "DiameterIdentity", HFILL }},
6197     { &hf_gprscdr_originatingAddress,
6198       { "originatingAddress", "gprscdr.originatingAddress",
6199         FT_BYTES, BASE_NONE, NULL, 0,
6200         "AddressString", HFILL }},
6201     { &hf_gprscdr_lcsClientType,
6202       { "lcsClientType", "gprscdr.lcsClientType",
6203         FT_UINT32, BASE_DEC, VALS(gsm_map_lcs_LCSClientType_vals), 0,
6204         NULL, HFILL }},
6205     { &hf_gprscdr_lcsClientIdentity,
6206       { "lcsClientIdentity", "gprscdr.lcsClientIdentity_element",
6207         FT_NONE, BASE_NONE, NULL, 0,
6208         NULL, HFILL }},
6209     { &hf_gprscdr_locationType,
6210       { "locationType", "gprscdr.locationType_element",
6211         FT_NONE, BASE_NONE, NULL, 0,
6212         NULL, HFILL }},
6213     { &hf_gprscdr_lcsQos,
6214       { "lcsQos", "gprscdr.lcsQos",
6215         FT_BYTES, BASE_NONE, NULL, 0,
6216         "LCSQoSInfo", HFILL }},
6217     { &hf_gprscdr_lcsPriority,
6218       { "lcsPriority", "gprscdr.lcsPriority",
6219         FT_BYTES, BASE_NONE, NULL, 0,
6220         "LCS_Priority", HFILL }},
6221     { &hf_gprscdr_mlcNumber,
6222       { "mlcNumber", "gprscdr.mlcNumber",
6223         FT_BYTES, BASE_NONE, NULL, 0,
6224         "ISDN_AddressString", HFILL }},
6225     { &hf_gprscdr_measurementDuration,
6226       { "measurementDuration", "gprscdr.measurementDuration",
6227         FT_INT32, BASE_DEC, NULL, 0,
6228         "CallDuration", HFILL }},
6229     { &hf_gprscdr_notificationToMSUser,
6230       { "notificationToMSUser", "gprscdr.notificationToMSUser",
6231         FT_UINT32, BASE_DEC, VALS(gsm_map_ms_NotificationToMSUser_vals), 0,
6232         NULL, HFILL }},
6233     { &hf_gprscdr_privacyOverride,
6234       { "privacyOverride", "gprscdr.privacyOverride_element",
6235         FT_NONE, BASE_NONE, NULL, 0,
6236         NULL, HFILL }},
6237     { &hf_gprscdr_location,
6238       { "location", "gprscdr.location_element",
6239         FT_NONE, BASE_NONE, NULL, 0,
6240         "LocationAreaAndCell", HFILL }},
6241     { &hf_gprscdr_locationEstimate,
6242       { "locationEstimate", "gprscdr.locationEstimate",
6243         FT_BYTES, BASE_NONE, NULL, 0,
6244         "Ext_GeographicalInformation", HFILL }},
6245     { &hf_gprscdr_positioningData,
6246       { "positioningData", "gprscdr.positioningData",
6247         FT_BYTES, BASE_NONE, NULL, 0,
6248         NULL, HFILL }},
6249     { &hf_gprscdr_lcsCause,
6250       { "lcsCause", "gprscdr.lcsCause",
6251         FT_BYTES, BASE_NONE, NULL, 0,
6252         NULL, HFILL }},
6253     { &hf_gprscdr_locationMethod,
6254       { "locationMethod", "gprscdr.locationMethod",
6255         FT_UINT32, BASE_DEC, VALS(gsm_ss_LocationMethod_vals), 0,
6256         NULL, HFILL }},
6257     { &hf_gprscdr_listofRAs,
6258       { "listofRAs", "gprscdr.listofRAs",
6259         FT_UINT32, BASE_DEC, NULL, 0,
6260         "SEQUENCE_OF_RAIdentity", HFILL }},
6261     { &hf_gprscdr_listofRAs_item,
6262       { "RAIdentity", "gprscdr.RAIdentity",
6263         FT_BYTES, BASE_NONE, NULL, 0,
6264         NULL, HFILL }},
6265     { &hf_gprscdr_listOfTrafficVolumes_02,
6266       { "listOfTrafficVolumes", "gprscdr.listOfTrafficVolumes",
6267         FT_UINT32, BASE_DEC, NULL, 0,
6268         "SEQUENCE_OF_ChangeOfMBMSCondition", HFILL }},
6269     { &hf_gprscdr_listOfTrafficVolumes_item_02,
6270       { "ChangeOfMBMSCondition", "gprscdr.ChangeOfMBMSCondition_element",
6271         FT_NONE, BASE_NONE, NULL, 0,
6272         NULL, HFILL }},
6273     { &hf_gprscdr_numberofReceivingUE,
6274       { "numberofReceivingUE", "gprscdr.numberofReceivingUE",
6275         FT_INT32, BASE_DEC, NULL, 0,
6276         "INTEGER", HFILL }},
6277     { &hf_gprscdr_mbmsInformation,
6278       { "mbmsInformation", "gprscdr.mbmsInformation_element",
6279         FT_NONE, BASE_NONE, NULL, 0,
6280         NULL, HFILL }},
6281     { &hf_gprscdr_listofDownstreamNodes,
6282       { "listofDownstreamNodes", "gprscdr.listofDownstreamNodes",
6283         FT_UINT32, BASE_DEC, NULL, 0,
6284         "SEQUENCE_OF_GSNAddress", HFILL }},
6285     { &hf_gprscdr_listofDownstreamNodes_item,
6286       { "GSNAddress", "gprscdr.GSNAddress",
6287         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6288         NULL, HFILL }},
6289     { &hf_gprscdr_mbmsGWAddress,
6290       { "mbmsGWAddress", "gprscdr.mbmsGWAddress",
6291         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6292         "GSNAddress", HFILL }},
6293     { &hf_gprscdr_commonTeid,
6294       { "commonTeid", "gprscdr.commonTeid",
6295         FT_BYTES, BASE_NONE, NULL, 0,
6296         "CTEID", HFILL }},
6297     { &hf_gprscdr_iPMulticastSourceAddress,
6298       { "iPMulticastSourceAddress", "gprscdr.iPMulticastSourceAddress",
6299         FT_UINT32, BASE_DEC, VALS(gprscdr_PDPAddress_vals), 0,
6300         "PDPAddress", HFILL }},
6301     { &hf_gprscdr_physicalAccessID,
6302       { "physicalAccessID", "gprscdr.physicalAccessID",
6303         FT_STRING, BASE_NONE, NULL, 0,
6304         "UTF8String", HFILL }},
6305     { &hf_gprscdr_logicalAccessID,
6306       { "logicalAccessID", "gprscdr.logicalAccessID",
6307         FT_BYTES, BASE_NONE, NULL, 0,
6308         "OCTET_STRING", HFILL }},
6309     { &hf_gprscdr_aFChargingIdentifier,
6310       { "aFChargingIdentifier", "gprscdr.aFChargingIdentifier",
6311         FT_BYTES, BASE_NONE, NULL, 0,
6312         NULL, HFILL }},
6313     { &hf_gprscdr_flows,
6314       { "flows", "gprscdr.flows_element",
6315         FT_NONE, BASE_NONE, NULL, 0,
6316         NULL, HFILL }},
6317     { &hf_gprscdr_aPNRateControlUplink,
6318       { "aPNRateControlUplink", "gprscdr.aPNRateControlUplink_element",
6319         FT_NONE, BASE_NONE, NULL, 0,
6320         "APNRateControlParameters", HFILL }},
6321     { &hf_gprscdr_aPNRateControlDownlink,
6322       { "aPNRateControlDownlink", "gprscdr.aPNRateControlDownlink_element",
6323         FT_NONE, BASE_NONE, NULL, 0,
6324         "APNRateControlParameters", HFILL }},
6325     { &hf_gprscdr_additionalExceptionReports,
6326       { "additionalExceptionReports", "gprscdr.additionalExceptionReports",
6327         FT_UINT32, BASE_DEC, VALS(gprscdr_AdditionalExceptionReports_vals), 0,
6328         NULL, HFILL }},
6329     { &hf_gprscdr_rateControlTimeUnit,
6330       { "rateControlTimeUnit", "gprscdr.rateControlTimeUnit",
6331         FT_INT32, BASE_DEC, VALS(gprscdr_RateControlTimeUnit_vals), 0,
6332         NULL, HFILL }},
6333     { &hf_gprscdr_rateControlMaxRate,
6334       { "rateControlMaxRate", "gprscdr.rateControlMaxRate",
6335         FT_INT32, BASE_DEC, NULL, 0,
6336         "INTEGER", HFILL }},
6337     { &hf_gprscdr_rateControlMaxMessageSize,
6338       { "rateControlMaxMessageSize", "gprscdr.rateControlMaxMessageSize",
6339         FT_INT32, BASE_DEC, NULL, 0,
6340         "DataVolumeGPRS", HFILL }},
6341     { &hf_gprscdr_called_Party_Address,
6342       { "called-Party-Address", "gprscdr.called_Party_Address",
6343         FT_UINT32, BASE_DEC, VALS(gprscdr_InvolvedParty_vals), 0,
6344         "InvolvedParty", HFILL }},
6345     { &hf_gprscdr_requested_Party_Address,
6346       { "requested-Party-Address", "gprscdr.requested_Party_Address",
6347         FT_UINT32, BASE_DEC, VALS(gprscdr_InvolvedParty_vals), 0,
6348         "InvolvedParty", HFILL }},
6349     { &hf_gprscdr_list_Of_Called_Asserted_Identity,
6350       { "list-Of-Called-Asserted-Identity", "gprscdr.list_Of_Called_Asserted_Identity",
6351         FT_UINT32, BASE_DEC, NULL, 0,
6352         "SEQUENCE_OF_InvolvedParty", HFILL }},
6353     { &hf_gprscdr_list_Of_Called_Asserted_Identity_item,
6354       { "InvolvedParty", "gprscdr.InvolvedParty",
6355         FT_UINT32, BASE_DEC, VALS(gprscdr_InvolvedParty_vals), 0,
6356         NULL, HFILL }},
6357     { &hf_gprscdr_sCFAddress,
6358       { "sCFAddress", "gprscdr.sCFAddress",
6359         FT_BYTES, BASE_NONE, NULL, 0,
6360         NULL, HFILL }},
6361     { &hf_gprscdr_serviceKey,
6362       { "serviceKey", "gprscdr.serviceKey",
6363         FT_UINT32, BASE_DEC, NULL, 0,
6364         NULL, HFILL }},
6365     { &hf_gprscdr_defaultTransactionHandling,
6366       { "defaultTransactionHandling", "gprscdr.defaultTransactionHandling",
6367         FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DefaultGPRS_Handling_vals), 0,
6368         "DefaultGPRS_Handling", HFILL }},
6369     { &hf_gprscdr_numberOfDPEncountered,
6370       { "numberOfDPEncountered", "gprscdr.numberOfDPEncountered",
6371         FT_INT32, BASE_DEC, NULL, 0,
6372         NULL, HFILL }},
6373     { &hf_gprscdr_levelOfCAMELService,
6374       { "levelOfCAMELService", "gprscdr.levelOfCAMELService",
6375         FT_BYTES, BASE_NONE, NULL, 0,
6376         NULL, HFILL }},
6377     { &hf_gprscdr_freeFormatData,
6378       { "freeFormatData", "gprscdr.freeFormatData",
6379         FT_BYTES, BASE_NONE, NULL, 0,
6380         NULL, HFILL }},
6381     { &hf_gprscdr_fFDAppendIndicator,
6382       { "fFDAppendIndicator", "gprscdr.fFDAppendIndicator",
6383         FT_BOOLEAN, BASE_NONE, NULL, 0,
6384         NULL, HFILL }},
6385     { &hf_gprscdr_cAMELAccessPointNameNI,
6386       { "cAMELAccessPointNameNI", "gprscdr.cAMELAccessPointNameNI",
6387         FT_STRING, BASE_NONE, NULL, 0,
6388         NULL, HFILL }},
6389     { &hf_gprscdr_cAMELAccessPointNameOI,
6390       { "cAMELAccessPointNameOI", "gprscdr.cAMELAccessPointNameOI",
6391         FT_STRING, BASE_NONE, NULL, 0,
6392         NULL, HFILL }},
6393     { &hf_gprscdr_defaultSMSHandling,
6394       { "defaultSMSHandling", "gprscdr.defaultSMSHandling",
6395         FT_UINT32, BASE_DEC, VALS(gsm_map_ms_DefaultSMS_Handling_vals), 0,
6396         "DefaultSMS_Handling", HFILL }},
6397     { &hf_gprscdr_cAMELCallingPartyNumber,
6398       { "cAMELCallingPartyNumber", "gprscdr.cAMELCallingPartyNumber",
6399         FT_BYTES, BASE_NONE, NULL, 0,
6400         "CallingNumber", HFILL }},
6401     { &hf_gprscdr_cAMELDestinationSubscriberNumber,
6402       { "cAMELDestinationSubscriberNumber", "gprscdr.cAMELDestinationSubscriberNumber",
6403         FT_BYTES, BASE_NONE, NULL, 0,
6404         "SmsTpDestinationNumber", HFILL }},
6405     { &hf_gprscdr_cAMELSMSCAddress,
6406       { "cAMELSMSCAddress", "gprscdr.cAMELSMSCAddress",
6407         FT_BYTES, BASE_NONE, NULL, 0,
6408         "AddressString", HFILL }},
6409     { &hf_gprscdr_smsReferenceNumber,
6410       { "smsReferenceNumber", "gprscdr.smsReferenceNumber",
6411         FT_BYTES, BASE_NONE, NULL, 0,
6412         "CallReferenceNumber", HFILL }},
6413     { &hf_gprscdr_changeCondition_01,
6414       { "changeCondition", "gprscdr.changeCondition",
6415         FT_UINT32, BASE_DEC, VALS(gprscdr_ChangeCondition_vals), 0,
6416         NULL, HFILL }},
6417     { &hf_gprscdr_userLocationInformation_09,
6418       { "userLocationInformation", "gprscdr.userLocationInformation",
6419         FT_BYTES, BASE_NONE, NULL, 0,
6420         "T_userLocationInformation_08", HFILL }},
6421     { &hf_gprscdr_presenceReportingAreaStatus,
6422       { "presenceReportingAreaStatus", "gprscdr.presenceReportingAreaStatus",
6423         FT_UINT32, BASE_DEC, VALS(gprscdr_PresenceReportingAreaStatus_vals), 0,
6424         NULL, HFILL }},
6425     { &hf_gprscdr_accessAvailabilityChangeReason,
6426       { "accessAvailabilityChangeReason", "gprscdr.accessAvailabilityChangeReason",
6427         FT_UINT32, BASE_DEC, NULL, 0,
6428         NULL, HFILL }},
6429     { &hf_gprscdr_relatedChangeOfCharCondition,
6430       { "relatedChangeOfCharCondition", "gprscdr.relatedChangeOfCharCondition_element",
6431         FT_NONE, BASE_NONE, NULL, 0,
6432         NULL, HFILL }},
6433     { &hf_gprscdr_listOfPresenceReportingAreaInformation,
6434       { "listOfPresenceReportingAreaInformation", "gprscdr.listOfPresenceReportingAreaInformation",
6435         FT_UINT32, BASE_DEC, NULL, 0,
6436         "SEQUENCE_OF_PresenceReportingAreaInfo", HFILL }},
6437     { &hf_gprscdr_listOfPresenceReportingAreaInformation_item,
6438       { "PresenceReportingAreaInfo", "gprscdr.PresenceReportingAreaInfo_element",
6439         FT_NONE, BASE_NONE, NULL, 0,
6440         NULL, HFILL }},
6441     { &hf_gprscdr_dataVolumeMBMSUplink,
6442       { "dataVolumeMBMSUplink", "gprscdr.dataVolumeMBMSUplink",
6443         FT_INT32, BASE_DEC, NULL, 0,
6444         "DataVolumeMBMS", HFILL }},
6445     { &hf_gprscdr_dataVolumeMBMSDownlink,
6446       { "dataVolumeMBMSDownlink", "gprscdr.dataVolumeMBMSDownlink",
6447         FT_INT32, BASE_DEC, NULL, 0,
6448         "DataVolumeMBMS", HFILL }},
6449     { &hf_gprscdr_serviceConditionChange_01,
6450       { "serviceConditionChange", "gprscdr.serviceConditionChange",
6451         FT_BYTES, BASE_NONE, NULL, 0,
6452         NULL, HFILL }},
6453     { &hf_gprscdr_qoSInformationNeg_01,
6454       { "qoSInformationNeg", "gprscdr.qoSInformationNeg_element",
6455         FT_NONE, BASE_NONE, NULL, 0,
6456         "EPCQoSInformation", HFILL }},
6457     { &hf_gprscdr_userLocationInformation_10,
6458       { "userLocationInformation", "gprscdr.userLocationInformation",
6459         FT_BYTES, BASE_NONE, NULL, 0,
6460         "T_userLocationInformation_09", HFILL }},
6461     { &hf_gprscdr_serviceSpecificInfo,
6462       { "serviceSpecificInfo", "gprscdr.serviceSpecificInfo",
6463         FT_UINT32, BASE_DEC, NULL, 0,
6464         "SEQUENCE_OF_ServiceSpecificInfo", HFILL }},
6465     { &hf_gprscdr_serviceSpecificInfo_item,
6466       { "ServiceSpecificInfo", "gprscdr.ServiceSpecificInfo_element",
6467         FT_NONE, BASE_NONE, NULL, 0,
6468         NULL, HFILL }},
6469     { &hf_gprscdr_sponsorIdentity,
6470       { "sponsorIdentity", "gprscdr.sponsorIdentity",
6471         FT_BYTES, BASE_NONE, NULL, 0,
6472         "OCTET_STRING", HFILL }},
6473     { &hf_gprscdr_applicationServiceProviderIdentity,
6474       { "applicationServiceProviderIdentity", "gprscdr.applicationServiceProviderIdentity",
6475         FT_BYTES, BASE_NONE, NULL, 0,
6476         "OCTET_STRING", HFILL }},
6477     { &hf_gprscdr_aDCRuleBaseName,
6478       { "aDCRuleBaseName", "gprscdr.aDCRuleBaseName",
6479         FT_STRING, BASE_NONE, NULL, 0,
6480         NULL, HFILL }},
6481     { &hf_gprscdr_relatedChangeOfServiceCondition,
6482       { "relatedChangeOfServiceCondition", "gprscdr.relatedChangeOfServiceCondition_element",
6483         FT_NONE, BASE_NONE, NULL, 0,
6484         NULL, HFILL }},
6485     { &hf_gprscdr_trafficSteeringPolicyIDDownlink,
6486       { "trafficSteeringPolicyIDDownlink", "gprscdr.trafficSteeringPolicyIDDownlink",
6487         FT_BYTES, BASE_NONE, NULL, 0,
6488         NULL, HFILL }},
6489     { &hf_gprscdr_trafficSteeringPolicyIDUplink,
6490       { "trafficSteeringPolicyIDUplink", "gprscdr.trafficSteeringPolicyIDUplink",
6491         FT_BYTES, BASE_NONE, NULL, 0,
6492         NULL, HFILL }},
6493     { &hf_gprscdr_voLTEInformation,
6494       { "voLTEInformation", "gprscdr.voLTEInformation_element",
6495         FT_NONE, BASE_NONE, NULL, 0,
6496         NULL, HFILL }},
6497     { &hf_gprscdr_routingAreaCode,
6498       { "routingAreaCode", "gprscdr.routingAreaCode",
6499         FT_BYTES, BASE_NONE, NULL, 0,
6500         NULL, HFILL }},
6501     { &hf_gprscdr_mCC_MNC_01,
6502       { "mCC-MNC", "gprscdr.mCC_MNC",
6503         FT_BYTES, BASE_NONE, NULL, 0,
6504         "PLMN_Id", HFILL }},
6505     { &hf_gprscdr_qCI,
6506       { "qCI", "gprscdr.qCI",
6507         FT_INT32, BASE_DEC, NULL, 0,
6508         "INTEGER", HFILL }},
6509     { &hf_gprscdr_maxRequestedBandwithUL,
6510       { "maxRequestedBandwithUL", "gprscdr.maxRequestedBandwithUL",
6511         FT_UINT32, BASE_DEC, NULL, 0,
6512         "INTEGER", HFILL }},
6513     { &hf_gprscdr_maxRequestedBandwithDL,
6514       { "maxRequestedBandwithDL", "gprscdr.maxRequestedBandwithDL",
6515         FT_UINT32, BASE_DEC, NULL, 0,
6516         "INTEGER", HFILL }},
6517     { &hf_gprscdr_guaranteedBitrateUL,
6518       { "guaranteedBitrateUL", "gprscdr.guaranteedBitrateUL",
6519         FT_UINT32, BASE_DEC, NULL, 0,
6520         "INTEGER", HFILL }},
6521     { &hf_gprscdr_guaranteedBitrateDL,
6522       { "guaranteedBitrateDL", "gprscdr.guaranteedBitrateDL",
6523         FT_UINT32, BASE_DEC, NULL, 0,
6524         "INTEGER", HFILL }},
6525     { &hf_gprscdr_aRP,
6526       { "aRP", "gprscdr.aRP",
6527         FT_INT32, BASE_DEC, NULL, 0,
6528         NULL, HFILL }},
6529     { &hf_gprscdr_aPNAggregateMaxBitrateUL,
6530       { "aPNAggregateMaxBitrateUL", "gprscdr.aPNAggregateMaxBitrateUL",
6531         FT_UINT32, BASE_DEC, NULL, 0,
6532         "INTEGER", HFILL }},
6533     { &hf_gprscdr_aPNAggregateMaxBitrateDL,
6534       { "aPNAggregateMaxBitrateDL", "gprscdr.aPNAggregateMaxBitrateDL",
6535         FT_UINT32, BASE_DEC, NULL, 0,
6536         "INTEGER", HFILL }},
6537     { &hf_gprscdr_extendedMaxRequestedBWUL,
6538       { "extendedMaxRequestedBWUL", "gprscdr.extendedMaxRequestedBWUL",
6539         FT_UINT32, BASE_DEC, NULL, 0,
6540         "INTEGER", HFILL }},
6541     { &hf_gprscdr_extendedMaxRequestedBWDL,
6542       { "extendedMaxRequestedBWDL", "gprscdr.extendedMaxRequestedBWDL",
6543         FT_UINT32, BASE_DEC, NULL, 0,
6544         "INTEGER", HFILL }},
6545     { &hf_gprscdr_extendedGBRUL,
6546       { "extendedGBRUL", "gprscdr.extendedGBRUL",
6547         FT_UINT32, BASE_DEC, NULL, 0,
6548         "INTEGER", HFILL }},
6549     { &hf_gprscdr_extendedGBRDL,
6550       { "extendedGBRDL", "gprscdr.extendedGBRDL",
6551         FT_UINT32, BASE_DEC, NULL, 0,
6552         "INTEGER", HFILL }},
6553     { &hf_gprscdr_extendedAPNAMBRUL,
6554       { "extendedAPNAMBRUL", "gprscdr.extendedAPNAMBRUL",
6555         FT_UINT32, BASE_DEC, NULL, 0,
6556         "INTEGER", HFILL }},
6557     { &hf_gprscdr_extendedAPNAMBRDL,
6558       { "extendedAPNAMBRDL", "gprscdr.extendedAPNAMBRDL",
6559         FT_UINT32, BASE_DEC, NULL, 0,
6560         "INTEGER", HFILL }},
6561     { &hf_gprscdr_numberOfEvents,
6562       { "numberOfEvents", "gprscdr.numberOfEvents",
6563         FT_INT32, BASE_DEC, NULL, 0,
6564         "INTEGER", HFILL }},
6565     { &hf_gprscdr_eventTimeStamps,
6566       { "eventTimeStamps", "gprscdr.eventTimeStamps",
6567         FT_UINT32, BASE_DEC, NULL, 0,
6568         "SEQUENCE_OF_TimeStamp", HFILL }},
6569     { &hf_gprscdr_eventTimeStamps_item,
6570       { "TimeStamp", "gprscdr.TimeStamp",
6571         FT_BYTES, BASE_NONE, NULL, 0,
6572         NULL, HFILL }},
6573     { &hf_gprscdr_sSID,
6574       { "sSID", "gprscdr.sSID",
6575         FT_BYTES, BASE_NONE, NULL, 0,
6576         "OCTET_STRING", HFILL }},
6577     { &hf_gprscdr_bSSID,
6578       { "bSSID", "gprscdr.bSSID",
6579         FT_BYTES, BASE_NONE, NULL, 0,
6580         "OCTET_STRING", HFILL }},
6581     { &hf_gprscdr_mediaComponentNumber,
6582       { "mediaComponentNumber", "gprscdr.mediaComponentNumber",
6583         FT_INT32, BASE_DEC, NULL, 0,
6584         "INTEGER", HFILL }},
6585     { &hf_gprscdr_flowNumber,
6586       { "flowNumber", "gprscdr.flowNumber",
6587         FT_UINT32, BASE_DEC, NULL, 0,
6588         NULL, HFILL }},
6589     { &hf_gprscdr_flowNumber_item,
6590       { "flowNumber item", "gprscdr.flowNumber_item",
6591         FT_INT32, BASE_DEC, NULL, 0,
6592         "INTEGER", HFILL }},
6593     { &hf_gprscdr_counterValue,
6594       { "counterValue", "gprscdr.counterValue",
6595         FT_INT32, BASE_DEC, NULL, 0,
6596         "INTEGER", HFILL }},
6597     { &hf_gprscdr_counterTimestamp,
6598       { "counterTimestamp", "gprscdr.counterTimestamp",
6599         FT_BYTES, BASE_NONE, NULL, 0,
6600         "TimeStamp", HFILL }},
6601     { &hf_gprscdr_presenceReportingAreaIdentifier,
6602       { "presenceReportingAreaIdentifier", "gprscdr.presenceReportingAreaIdentifier",
6603         FT_BYTES, BASE_NONE, NULL, 0,
6604         "OCTET_STRING", HFILL }},
6605     { &hf_gprscdr_presenceReportingAreaElementsList,
6606       { "presenceReportingAreaElementsList", "gprscdr.presenceReportingAreaElementsList",
6607         FT_BYTES, BASE_NONE, NULL, 0,
6608         NULL, HFILL }},
6609     { &hf_gprscdr_presenceReportingAreaNode,
6610       { "presenceReportingAreaNode", "gprscdr.presenceReportingAreaNode",
6611         FT_BYTES, BASE_NONE, NULL, 0,
6612         NULL, HFILL }},
6613     { &hf_gprscdr_pSFreeFormatData,
6614       { "pSFreeFormatData", "gprscdr.pSFreeFormatData",
6615         FT_BYTES, BASE_NONE, NULL, 0,
6616         "FreeFormatData", HFILL }},
6617     { &hf_gprscdr_pSFFDAppendIndicator,
6618       { "pSFFDAppendIndicator", "gprscdr.pSFFDAppendIndicator",
6619         FT_BOOLEAN, BASE_NONE, NULL, 0,
6620         "FFDAppendIndicator", HFILL }},
6621     { &hf_gprscdr_dataVolumeUplink,
6622       { "dataVolumeUplink", "gprscdr.dataVolumeUplink",
6623         FT_INT32, BASE_DEC, NULL, 0,
6624         "DataVolumeGPRS", HFILL }},
6625     { &hf_gprscdr_dataVolumeDownlink,
6626       { "dataVolumeDownlink", "gprscdr.dataVolumeDownlink",
6627         FT_INT32, BASE_DEC, NULL, 0,
6628         "DataVolumeGPRS", HFILL }},
6629     { &hf_gprscdr_rANStartTime,
6630       { "rANStartTime", "gprscdr.rANStartTime",
6631         FT_BYTES, BASE_NONE, NULL, 0,
6632         "TimeStamp", HFILL }},
6633     { &hf_gprscdr_rANEndTime,
6634       { "rANEndTime", "gprscdr.rANEndTime",
6635         FT_BYTES, BASE_NONE, NULL, 0,
6636         "TimeStamp", HFILL }},
6637     { &hf_gprscdr_secondaryRATType,
6638       { "secondaryRATType", "gprscdr.secondaryRATType",
6639         FT_INT32, BASE_DEC, VALS(gprscdr_SecondaryRATType_vals), 0,
6640         NULL, HFILL }},
6641     { &hf_gprscdr_userLocationInformation_11,
6642       { "userLocationInformation", "gprscdr.userLocationInformation",
6643         FT_BYTES, BASE_NONE, NULL, 0,
6644         "T_userLocationInformation_10", HFILL }},
6645     { &hf_gprscdr_userLocationInformation_12,
6646       { "userLocationInformation", "gprscdr.userLocationInformation",
6647         FT_BYTES, BASE_NONE, NULL, 0,
6648         "T_userLocationInformation_11", HFILL }},
6649     { &hf_gprscdr_relatedServiceConditionChange,
6650       { "relatedServiceConditionChange", "gprscdr.relatedServiceConditionChange",
6651         FT_BYTES, BASE_NONE, NULL, 0,
6652         "ServiceConditionChange", HFILL }},
6653     { &hf_gprscdr_sPLMNDLRateControlValue,
6654       { "sPLMNDLRateControlValue", "gprscdr.sPLMNDLRateControlValue",
6655         FT_INT32, BASE_DEC, NULL, 0,
6656         "INTEGER", HFILL }},
6657     { &hf_gprscdr_sPLMNULRateControlValue,
6658       { "sPLMNULRateControlValue", "gprscdr.sPLMNULRateControlValue",
6659         FT_INT32, BASE_DEC, NULL, 0,
6660         "INTEGER", HFILL }},
6661     { &hf_gprscdr_timeQuotaType,
6662       { "timeQuotaType", "gprscdr.timeQuotaType",
6663         FT_UINT32, BASE_DEC, VALS(gprscdr_TimeQuotaType_vals), 0,
6664         NULL, HFILL }},
6665     { &hf_gprscdr_baseTimeInterval,
6666       { "baseTimeInterval", "gprscdr.baseTimeInterval",
6667         FT_INT32, BASE_DEC, NULL, 0,
6668         "INTEGER", HFILL }},
6669     { &hf_gprscdr_civicAddressInformation,
6670       { "civicAddressInformation", "gprscdr.civicAddressInformation",
6671         FT_BYTES, BASE_NONE, NULL, 0,
6672         NULL, HFILL }},
6673     { &hf_gprscdr_wLANOperatorId,
6674       { "wLANOperatorId", "gprscdr.wLANOperatorId_element",
6675         FT_NONE, BASE_NONE, NULL, 0,
6676         NULL, HFILL }},
6677     { &hf_gprscdr_cSGId,
6678       { "cSGId", "gprscdr.cSGId",
6679         FT_UINT32, BASE_DEC, NULL, 0,
6680         NULL, HFILL }},
6681     { &hf_gprscdr_cSGAccessMode,
6682       { "cSGAccessMode", "gprscdr.cSGAccessMode",
6683         FT_UINT32, BASE_DEC, VALS(gprscdr_CSGAccessMode_vals), 0,
6684         NULL, HFILL }},
6685     { &hf_gprscdr_cSGMembershipIndication,
6686       { "cSGMembershipIndication", "gprscdr.cSGMembershipIndication_element",
6687         FT_NONE, BASE_NONE, NULL, 0,
6688         NULL, HFILL }},
6689     { &hf_gprscdr_uELocalIPAddress,
6690       { "uELocalIPAddress", "gprscdr.uELocalIPAddress",
6691         FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0,
6692         "IPAddress", HFILL }},
6693     { &hf_gprscdr_uDPSourcePort,
6694       { "uDPSourcePort", "gprscdr.uDPSourcePort",
6695         FT_BYTES, BASE_NONE, NULL, 0,
6696         "OCTET_STRING_SIZE_2", HFILL }},
6697     { &hf_gprscdr_tCPSourcePort,
6698       { "tCPSourcePort", "gprscdr.tCPSourcePort",
6699         FT_BYTES, BASE_NONE, NULL, 0,
6700         "OCTET_STRING_SIZE_2", HFILL }},
6701     { &hf_gprscdr_callerInformation,
6702       { "callerInformation", "gprscdr.callerInformation",
6703         FT_UINT32, BASE_DEC, NULL, 0,
6704         "SEQUENCE_OF_InvolvedParty", HFILL }},
6705     { &hf_gprscdr_callerInformation_item,
6706       { "InvolvedParty", "gprscdr.InvolvedParty",
6707         FT_UINT32, BASE_DEC, VALS(gprscdr_InvolvedParty_vals), 0,
6708         NULL, HFILL }},
6709     { &hf_gprscdr_calleeInformation,
6710       { "calleeInformation", "gprscdr.calleeInformation_element",
6711         FT_NONE, BASE_NONE, NULL, 0,
6712         "CalleePartyInformation", HFILL }},
6713     { &hf_gprscdr_wLANOperatorName,
6714       { "wLANOperatorName", "gprscdr.wLANOperatorName",
6715         FT_BYTES, BASE_NONE, NULL, 0,
6716         "OCTET_STRING", HFILL }},
6717     { &hf_gprscdr_wLANPLMNId,
6718       { "wLANPLMNId", "gprscdr.wLANPLMNId",
6719         FT_BYTES, BASE_NONE, NULL, 0,
6720         "PLMN_Id", HFILL }},
6721     { &hf_gprscdr_LevelOfCAMELService_basic,
6722       { "basic", "gprscdr.LevelOfCAMELService.basic",
6723         FT_BOOLEAN, 8, NULL, 0x80,
6724         NULL, HFILL }},
6725     { &hf_gprscdr_LevelOfCAMELService_callDurationSupervision,
6726       { "callDurationSupervision", "gprscdr.LevelOfCAMELService.callDurationSupervision",
6727         FT_BOOLEAN, 8, NULL, 0x40,
6728         NULL, HFILL }},
6729     { &hf_gprscdr_LevelOfCAMELService_onlineCharging,
6730       { "onlineCharging", "gprscdr.LevelOfCAMELService.onlineCharging",
6731         FT_BOOLEAN, 8, NULL, 0x20,
6732         NULL, HFILL }},
6733     { &hf_gprscdr_ServiceConditionChangeV651_qoSChange,
6734       { "qoSChange", "gprscdr.ServiceConditionChangeV651.qoSChange",
6735         FT_BOOLEAN, 8, NULL, 0x80,
6736         NULL, HFILL }},
6737     { &hf_gprscdr_ServiceConditionChangeV651_sGSNChange,
6738       { "sGSNChange", "gprscdr.ServiceConditionChangeV651.sGSNChange",
6739         FT_BOOLEAN, 8, NULL, 0x40,
6740         NULL, HFILL }},
6741     { &hf_gprscdr_ServiceConditionChangeV651_sGSNPLMNIDChange,
6742       { "sGSNPLMNIDChange", "gprscdr.ServiceConditionChangeV651.sGSNPLMNIDChange",
6743         FT_BOOLEAN, 8, NULL, 0x20,
6744         NULL, HFILL }},
6745     { &hf_gprscdr_ServiceConditionChangeV651_tariffTimeSwitch,
6746       { "tariffTimeSwitch", "gprscdr.ServiceConditionChangeV651.tariffTimeSwitch",
6747         FT_BOOLEAN, 8, NULL, 0x10,
6748         NULL, HFILL }},
6749     { &hf_gprscdr_ServiceConditionChangeV651_pDPContextRelease,
6750       { "pDPContextRelease", "gprscdr.ServiceConditionChangeV651.pDPContextRelease",
6751         FT_BOOLEAN, 8, NULL, 0x08,
6752         NULL, HFILL }},
6753     { &hf_gprscdr_ServiceConditionChangeV651_rATChange,
6754       { "rATChange", "gprscdr.ServiceConditionChangeV651.rATChange",
6755         FT_BOOLEAN, 8, NULL, 0x04,
6756         NULL, HFILL }},
6757     { &hf_gprscdr_ServiceConditionChangeV651_serviceIdledOut,
6758       { "serviceIdledOut", "gprscdr.ServiceConditionChangeV651.serviceIdledOut",
6759         FT_BOOLEAN, 8, NULL, 0x02,
6760         NULL, HFILL }},
6761     { &hf_gprscdr_ServiceConditionChangeV651_qCTExpiry,
6762       { "qCTExpiry", "gprscdr.ServiceConditionChangeV651.qCTExpiry",
6763         FT_BOOLEAN, 8, NULL, 0x01,
6764         NULL, HFILL }},
6765     { &hf_gprscdr_ServiceConditionChangeV651_configurationChange,
6766       { "configurationChange", "gprscdr.ServiceConditionChangeV651.configurationChange",
6767         FT_BOOLEAN, 8, NULL, 0x80,
6768         NULL, HFILL }},
6769     { &hf_gprscdr_ServiceConditionChangeV651_serviceStop,
6770       { "serviceStop", "gprscdr.ServiceConditionChangeV651.serviceStop",
6771         FT_BOOLEAN, 8, NULL, 0x40,
6772         NULL, HFILL }},
6773     { &hf_gprscdr_ServiceConditionChangeV651_timeThresholdReached,
6774       { "timeThresholdReached", "gprscdr.ServiceConditionChangeV651.timeThresholdReached",
6775         FT_BOOLEAN, 8, NULL, 0x20,
6776         NULL, HFILL }},
6777     { &hf_gprscdr_ServiceConditionChangeV651_volumeThresholdReached,
6778       { "volumeThresholdReached", "gprscdr.ServiceConditionChangeV651.volumeThresholdReached",
6779         FT_BOOLEAN, 8, NULL, 0x10,
6780         NULL, HFILL }},
6781     { &hf_gprscdr_ServiceConditionChangeV651_spare_bit12,
6782       { "spare_bit12", "gprscdr.ServiceConditionChangeV651.spare.bit12",
6783         FT_BOOLEAN, 8, NULL, 0x08,
6784         NULL, HFILL }},
6785     { &hf_gprscdr_ServiceConditionChangeV651_timeExhausted,
6786       { "timeExhausted", "gprscdr.ServiceConditionChangeV651.timeExhausted",
6787         FT_BOOLEAN, 8, NULL, 0x04,
6788         NULL, HFILL }},
6789     { &hf_gprscdr_ServiceConditionChangeV651_volumeExhausted,
6790       { "volumeExhausted", "gprscdr.ServiceConditionChangeV651.volumeExhausted",
6791         FT_BOOLEAN, 8, NULL, 0x02,
6792         NULL, HFILL }},
6793     { &hf_gprscdr_ServiceConditionChangeV651_timeout,
6794       { "timeout", "gprscdr.ServiceConditionChangeV651.timeout",
6795         FT_BOOLEAN, 8, NULL, 0x01,
6796         NULL, HFILL }},
6797     { &hf_gprscdr_ServiceConditionChangeV651_returnRequested,
6798       { "returnRequested", "gprscdr.ServiceConditionChangeV651.returnRequested",
6799         FT_BOOLEAN, 8, NULL, 0x80,
6800         NULL, HFILL }},
6801     { &hf_gprscdr_ServiceConditionChangeV651_reauthorisationRequest,
6802       { "reauthorisationRequest", "gprscdr.ServiceConditionChangeV651.reauthorisationRequest",
6803         FT_BOOLEAN, 8, NULL, 0x40,
6804         NULL, HFILL }},
6805     { &hf_gprscdr_ServiceConditionChangeV651_continueOngoingSession,
6806       { "continueOngoingSession", "gprscdr.ServiceConditionChangeV651.continueOngoingSession",
6807         FT_BOOLEAN, 8, NULL, 0x20,
6808         NULL, HFILL }},
6809     { &hf_gprscdr_ServiceConditionChangeV651_retryAndTerminateOngoingSession,
6810       { "retryAndTerminateOngoingSession", "gprscdr.ServiceConditionChangeV651.retryAndTerminateOngoingSession",
6811         FT_BOOLEAN, 8, NULL, 0x10,
6812         NULL, HFILL }},
6813     { &hf_gprscdr_ServiceConditionChangeV651_terminateOngoingSession,
6814       { "terminateOngoingSession", "gprscdr.ServiceConditionChangeV651.terminateOngoingSession",
6815         FT_BOOLEAN, 8, NULL, 0x08,
6816         NULL, HFILL }},
6817     { &hf_gprscdr_ServiceConditionChangeV750_qoSChange,
6818       { "qoSChange", "gprscdr.ServiceConditionChangeV750.qoSChange",
6819         FT_BOOLEAN, 8, NULL, 0x80,
6820         NULL, HFILL }},
6821     { &hf_gprscdr_ServiceConditionChangeV750_sGSNChange,
6822       { "sGSNChange", "gprscdr.ServiceConditionChangeV750.sGSNChange",
6823         FT_BOOLEAN, 8, NULL, 0x40,
6824         NULL, HFILL }},
6825     { &hf_gprscdr_ServiceConditionChangeV750_sGSNPLMNIDChange,
6826       { "sGSNPLMNIDChange", "gprscdr.ServiceConditionChangeV750.sGSNPLMNIDChange",
6827         FT_BOOLEAN, 8, NULL, 0x20,
6828         NULL, HFILL }},
6829     { &hf_gprscdr_ServiceConditionChangeV750_tariffTimeSwitch,
6830       { "tariffTimeSwitch", "gprscdr.ServiceConditionChangeV750.tariffTimeSwitch",
6831         FT_BOOLEAN, 8, NULL, 0x10,
6832         NULL, HFILL }},
6833     { &hf_gprscdr_ServiceConditionChangeV750_pDPContextRelease,
6834       { "pDPContextRelease", "gprscdr.ServiceConditionChangeV750.pDPContextRelease",
6835         FT_BOOLEAN, 8, NULL, 0x08,
6836         NULL, HFILL }},
6837     { &hf_gprscdr_ServiceConditionChangeV750_rATChange,
6838       { "rATChange", "gprscdr.ServiceConditionChangeV750.rATChange",
6839         FT_BOOLEAN, 8, NULL, 0x04,
6840         NULL, HFILL }},
6841     { &hf_gprscdr_ServiceConditionChangeV750_serviceIdledOut,
6842       { "serviceIdledOut", "gprscdr.ServiceConditionChangeV750.serviceIdledOut",
6843         FT_BOOLEAN, 8, NULL, 0x02,
6844         NULL, HFILL }},
6845     { &hf_gprscdr_ServiceConditionChangeV750_reserved,
6846       { "reserved", "gprscdr.ServiceConditionChangeV750.reserved",
6847         FT_BOOLEAN, 8, NULL, 0x01,
6848         NULL, HFILL }},
6849     { &hf_gprscdr_ServiceConditionChangeV750_configurationChange,
6850       { "configurationChange", "gprscdr.ServiceConditionChangeV750.configurationChange",
6851         FT_BOOLEAN, 8, NULL, 0x80,
6852         NULL, HFILL }},
6853     { &hf_gprscdr_ServiceConditionChangeV750_serviceStop,
6854       { "serviceStop", "gprscdr.ServiceConditionChangeV750.serviceStop",
6855         FT_BOOLEAN, 8, NULL, 0x40,
6856         NULL, HFILL }},
6857     { &hf_gprscdr_ServiceConditionChangeV750_dCCATimeThresholdReached,
6858       { "dCCATimeThresholdReached", "gprscdr.ServiceConditionChangeV750.dCCATimeThresholdReached",
6859         FT_BOOLEAN, 8, NULL, 0x20,
6860         NULL, HFILL }},
6861     { &hf_gprscdr_ServiceConditionChangeV750_dCCAVolumeThresholdReached,
6862       { "dCCAVolumeThresholdReached", "gprscdr.ServiceConditionChangeV750.dCCAVolumeThresholdReached",
6863         FT_BOOLEAN, 8, NULL, 0x10,
6864         NULL, HFILL }},
6865     { &hf_gprscdr_ServiceConditionChangeV750_dCCAServiceSpecificUnitThresholdReached,
6866       { "dCCAServiceSpecificUnitThresholdReached", "gprscdr.ServiceConditionChangeV750.dCCAServiceSpecificUnitThresholdReached",
6867         FT_BOOLEAN, 8, NULL, 0x08,
6868         NULL, HFILL }},
6869     { &hf_gprscdr_ServiceConditionChangeV750_dCCATimeExhausted,
6870       { "dCCATimeExhausted", "gprscdr.ServiceConditionChangeV750.dCCATimeExhausted",
6871         FT_BOOLEAN, 8, NULL, 0x04,
6872         NULL, HFILL }},
6873     { &hf_gprscdr_ServiceConditionChangeV750_dCCAVolumeExhausted,
6874       { "dCCAVolumeExhausted", "gprscdr.ServiceConditionChangeV750.dCCAVolumeExhausted",
6875         FT_BOOLEAN, 8, NULL, 0x02,
6876         NULL, HFILL }},
6877     { &hf_gprscdr_ServiceConditionChangeV750_dCCAValidityTimeout,
6878       { "dCCAValidityTimeout", "gprscdr.ServiceConditionChangeV750.dCCAValidityTimeout",
6879         FT_BOOLEAN, 8, NULL, 0x01,
6880         NULL, HFILL }},
6881     { &hf_gprscdr_ServiceConditionChangeV750_reserved2,
6882       { "reserved2", "gprscdr.ServiceConditionChangeV750.reserved2",
6883         FT_BOOLEAN, 8, NULL, 0x80,
6884         NULL, HFILL }},
6885     { &hf_gprscdr_ServiceConditionChangeV750_dCCAReauthorisationRequest,
6886       { "dCCAReauthorisationRequest", "gprscdr.ServiceConditionChangeV750.dCCAReauthorisationRequest",
6887         FT_BOOLEAN, 8, NULL, 0x40,
6888         NULL, HFILL }},
6889     { &hf_gprscdr_ServiceConditionChangeV750_dCCAContinueOngoingSession,
6890       { "dCCAContinueOngoingSession", "gprscdr.ServiceConditionChangeV750.dCCAContinueOngoingSession",
6891         FT_BOOLEAN, 8, NULL, 0x20,
6892         NULL, HFILL }},
6893     { &hf_gprscdr_ServiceConditionChangeV750_dCCARetryAndTerminateOngoingSession,
6894       { "dCCARetryAndTerminateOngoingSession", "gprscdr.ServiceConditionChangeV750.dCCARetryAndTerminateOngoingSession",
6895         FT_BOOLEAN, 8, NULL, 0x10,
6896         NULL, HFILL }},
6897     { &hf_gprscdr_ServiceConditionChangeV750_dCCATerminateOngoingSession,
6898       { "dCCATerminateOngoingSession", "gprscdr.ServiceConditionChangeV750.dCCATerminateOngoingSession",
6899         FT_BOOLEAN, 8, NULL, 0x08,
6900         NULL, HFILL }},
6901     { &hf_gprscdr_ServiceConditionChangeV750_cGI_SAIChange,
6902       { "cGI-SAIChange", "gprscdr.ServiceConditionChangeV750.cGI.SAIChange",
6903         FT_BOOLEAN, 8, NULL, 0x04,
6904         NULL, HFILL }},
6905     { &hf_gprscdr_ServiceConditionChangeV750_rAIChange,
6906       { "rAIChange", "gprscdr.ServiceConditionChangeV750.rAIChange",
6907         FT_BOOLEAN, 8, NULL, 0x02,
6908         NULL, HFILL }},
6909     { &hf_gprscdr_ServiceConditionChangeV750_dCCAServiceSpecificUnitExhausted,
6910       { "dCCAServiceSpecificUnitExhausted", "gprscdr.ServiceConditionChangeV750.dCCAServiceSpecificUnitExhausted",
6911         FT_BOOLEAN, 8, NULL, 0x01,
6912         NULL, HFILL }},
6913     { &hf_gprscdr_ServiceConditionChangeV750_recordClosure,
6914       { "recordClosure", "gprscdr.ServiceConditionChangeV750.recordClosure",
6915         FT_BOOLEAN, 8, NULL, 0x80,
6916         NULL, HFILL }},
6917     { &hf_gprscdr_ServiceConditionChangeV750_timeLimit,
6918       { "timeLimit", "gprscdr.ServiceConditionChangeV750.timeLimit",
6919         FT_BOOLEAN, 8, NULL, 0x40,
6920         NULL, HFILL }},
6921     { &hf_gprscdr_ServiceConditionChangeV750_volumeLimit,
6922       { "volumeLimit", "gprscdr.ServiceConditionChangeV750.volumeLimit",
6923         FT_BOOLEAN, 8, NULL, 0x20,
6924         NULL, HFILL }},
6925     { &hf_gprscdr_ServiceConditionChangeV750_serviceSpecificUnitLimit,
6926       { "serviceSpecificUnitLimit", "gprscdr.ServiceConditionChangeV750.serviceSpecificUnitLimit",
6927         FT_BOOLEAN, 8, NULL, 0x10,
6928         NULL, HFILL }},
6929     { &hf_gprscdr_ServiceConditionChangeV750_envelopeClosure,
6930       { "envelopeClosure", "gprscdr.ServiceConditionChangeV750.envelopeClosure",
6931         FT_BOOLEAN, 8, NULL, 0x08,
6932         NULL, HFILL }},
6933     { &hf_gprscdr_PresenceReportingAreaNode_oCS,
6934       { "oCS", "gprscdr.PresenceReportingAreaNode.oCS",
6935         FT_BOOLEAN, 8, NULL, 0x80,
6936         NULL, HFILL }},
6937     { &hf_gprscdr_PresenceReportingAreaNode_pCRF,
6938       { "pCRF", "gprscdr.PresenceReportingAreaNode.pCRF",
6939         FT_BOOLEAN, 8, NULL, 0x40,
6940         NULL, HFILL }},
6941     { &hf_gprscdr_ServiceConditionChange_qoSChange,
6942       { "qoSChange", "gprscdr.ServiceConditionChange.qoSChange",
6943         FT_BOOLEAN, 8, NULL, 0x80,
6944         NULL, HFILL }},
6945     { &hf_gprscdr_ServiceConditionChange_sGSNChange,
6946       { "sGSNChange", "gprscdr.ServiceConditionChange.sGSNChange",
6947         FT_BOOLEAN, 8, NULL, 0x40,
6948         NULL, HFILL }},
6949     { &hf_gprscdr_ServiceConditionChange_sGSNPLMNIDChange,
6950       { "sGSNPLMNIDChange", "gprscdr.ServiceConditionChange.sGSNPLMNIDChange",
6951         FT_BOOLEAN, 8, NULL, 0x20,
6952         NULL, HFILL }},
6953     { &hf_gprscdr_ServiceConditionChange_tariffTimeSwitch,
6954       { "tariffTimeSwitch", "gprscdr.ServiceConditionChange.tariffTimeSwitch",
6955         FT_BOOLEAN, 8, NULL, 0x10,
6956         NULL, HFILL }},
6957     { &hf_gprscdr_ServiceConditionChange_pDPContextRelease,
6958       { "pDPContextRelease", "gprscdr.ServiceConditionChange.pDPContextRelease",
6959         FT_BOOLEAN, 8, NULL, 0x08,
6960         NULL, HFILL }},
6961     { &hf_gprscdr_ServiceConditionChange_rATChange,
6962       { "rATChange", "gprscdr.ServiceConditionChange.rATChange",
6963         FT_BOOLEAN, 8, NULL, 0x04,
6964         NULL, HFILL }},
6965     { &hf_gprscdr_ServiceConditionChange_serviceIdledOut,
6966       { "serviceIdledOut", "gprscdr.ServiceConditionChange.serviceIdledOut",
6967         FT_BOOLEAN, 8, NULL, 0x02,
6968         NULL, HFILL }},
6969     { &hf_gprscdr_ServiceConditionChange_reserved,
6970       { "reserved", "gprscdr.ServiceConditionChange.reserved",
6971         FT_BOOLEAN, 8, NULL, 0x01,
6972         NULL, HFILL }},
6973     { &hf_gprscdr_ServiceConditionChange_configurationChange,
6974       { "configurationChange", "gprscdr.ServiceConditionChange.configurationChange",
6975         FT_BOOLEAN, 8, NULL, 0x80,
6976         NULL, HFILL }},
6977     { &hf_gprscdr_ServiceConditionChange_serviceStop,
6978       { "serviceStop", "gprscdr.ServiceConditionChange.serviceStop",
6979         FT_BOOLEAN, 8, NULL, 0x40,
6980         NULL, HFILL }},
6981     { &hf_gprscdr_ServiceConditionChange_dCCATimeThresholdReached,
6982       { "dCCATimeThresholdReached", "gprscdr.ServiceConditionChange.dCCATimeThresholdReached",
6983         FT_BOOLEAN, 8, NULL, 0x20,
6984         NULL, HFILL }},
6985     { &hf_gprscdr_ServiceConditionChange_dCCAVolumeThresholdReached,
6986       { "dCCAVolumeThresholdReached", "gprscdr.ServiceConditionChange.dCCAVolumeThresholdReached",
6987         FT_BOOLEAN, 8, NULL, 0x10,
6988         NULL, HFILL }},
6989     { &hf_gprscdr_ServiceConditionChange_dCCAServiceSpecificUnitThresholdReached,
6990       { "dCCAServiceSpecificUnitThresholdReached", "gprscdr.ServiceConditionChange.dCCAServiceSpecificUnitThresholdReached",
6991         FT_BOOLEAN, 8, NULL, 0x08,
6992         NULL, HFILL }},
6993     { &hf_gprscdr_ServiceConditionChange_dCCATimeExhausted,
6994       { "dCCATimeExhausted", "gprscdr.ServiceConditionChange.dCCATimeExhausted",
6995         FT_BOOLEAN, 8, NULL, 0x04,
6996         NULL, HFILL }},
6997     { &hf_gprscdr_ServiceConditionChange_dCCAVolumeExhausted,
6998       { "dCCAVolumeExhausted", "gprscdr.ServiceConditionChange.dCCAVolumeExhausted",
6999         FT_BOOLEAN, 8, NULL, 0x02,
7000         NULL, HFILL }},
7001     { &hf_gprscdr_ServiceConditionChange_dCCAValidityTimeout,
7002       { "dCCAValidityTimeout", "gprscdr.ServiceConditionChange.dCCAValidityTimeout",
7003         FT_BOOLEAN, 8, NULL, 0x01,
7004         NULL, HFILL }},
7005     { &hf_gprscdr_ServiceConditionChange_reserved1,
7006       { "reserved1", "gprscdr.ServiceConditionChange.reserved1",
7007         FT_BOOLEAN, 8, NULL, 0x80,
7008         NULL, HFILL }},
7009     { &hf_gprscdr_ServiceConditionChange_dCCAReauthorisationRequest,
7010       { "dCCAReauthorisationRequest", "gprscdr.ServiceConditionChange.dCCAReauthorisationRequest",
7011         FT_BOOLEAN, 8, NULL, 0x40,
7012         NULL, HFILL }},
7013     { &hf_gprscdr_ServiceConditionChange_dCCAContinueOngoingSession,
7014       { "dCCAContinueOngoingSession", "gprscdr.ServiceConditionChange.dCCAContinueOngoingSession",
7015         FT_BOOLEAN, 8, NULL, 0x20,
7016         NULL, HFILL }},
7017     { &hf_gprscdr_ServiceConditionChange_dCCARetryAndTerminateOngoingSession,
7018       { "dCCARetryAndTerminateOngoingSession", "gprscdr.ServiceConditionChange.dCCARetryAndTerminateOngoingSession",
7019         FT_BOOLEAN, 8, NULL, 0x10,
7020         NULL, HFILL }},
7021     { &hf_gprscdr_ServiceConditionChange_dCCATerminateOngoingSession,
7022       { "dCCATerminateOngoingSession", "gprscdr.ServiceConditionChange.dCCATerminateOngoingSession",
7023         FT_BOOLEAN, 8, NULL, 0x08,
7024         NULL, HFILL }},
7025     { &hf_gprscdr_ServiceConditionChange_cGI_SAIChange,
7026       { "cGI-SAIChange", "gprscdr.ServiceConditionChange.cGI.SAIChange",
7027         FT_BOOLEAN, 8, NULL, 0x04,
7028         NULL, HFILL }},
7029     { &hf_gprscdr_ServiceConditionChange_rAIChange,
7030       { "rAIChange", "gprscdr.ServiceConditionChange.rAIChange",
7031         FT_BOOLEAN, 8, NULL, 0x02,
7032         NULL, HFILL }},
7033     { &hf_gprscdr_ServiceConditionChange_dCCAServiceSpecificUnitExhausted,
7034       { "dCCAServiceSpecificUnitExhausted", "gprscdr.ServiceConditionChange.dCCAServiceSpecificUnitExhausted",
7035         FT_BOOLEAN, 8, NULL, 0x01,
7036         NULL, HFILL }},
7037     { &hf_gprscdr_ServiceConditionChange_recordClosure,
7038       { "recordClosure", "gprscdr.ServiceConditionChange.recordClosure",
7039         FT_BOOLEAN, 8, NULL, 0x80,
7040         NULL, HFILL }},
7041     { &hf_gprscdr_ServiceConditionChange_timeLimit,
7042       { "timeLimit", "gprscdr.ServiceConditionChange.timeLimit",
7043         FT_BOOLEAN, 8, NULL, 0x40,
7044         NULL, HFILL }},
7045     { &hf_gprscdr_ServiceConditionChange_volumeLimit,
7046       { "volumeLimit", "gprscdr.ServiceConditionChange.volumeLimit",
7047         FT_BOOLEAN, 8, NULL, 0x20,
7048         NULL, HFILL }},
7049     { &hf_gprscdr_ServiceConditionChange_serviceSpecificUnitLimit,
7050       { "serviceSpecificUnitLimit", "gprscdr.ServiceConditionChange.serviceSpecificUnitLimit",
7051         FT_BOOLEAN, 8, NULL, 0x10,
7052         NULL, HFILL }},
7053     { &hf_gprscdr_ServiceConditionChange_envelopeClosure,
7054       { "envelopeClosure", "gprscdr.ServiceConditionChange.envelopeClosure",
7055         FT_BOOLEAN, 8, NULL, 0x08,
7056         NULL, HFILL }},
7057     { &hf_gprscdr_ServiceConditionChange_eCGIChange,
7058       { "eCGIChange", "gprscdr.ServiceConditionChange.eCGIChange",
7059         FT_BOOLEAN, 8, NULL, 0x04,
7060         NULL, HFILL }},
7061     { &hf_gprscdr_ServiceConditionChange_tAIChange,
7062       { "tAIChange", "gprscdr.ServiceConditionChange.tAIChange",
7063         FT_BOOLEAN, 8, NULL, 0x02,
7064         NULL, HFILL }},
7065     { &hf_gprscdr_ServiceConditionChange_userLocationChange,
7066       { "userLocationChange", "gprscdr.ServiceConditionChange.userLocationChange",
7067         FT_BOOLEAN, 8, NULL, 0x01,
7068         NULL, HFILL }},
7069     { &hf_gprscdr_ServiceConditionChange_userCSGInformationChange,
7070       { "userCSGInformationChange", "gprscdr.ServiceConditionChange.userCSGInformationChange",
7071         FT_BOOLEAN, 8, NULL, 0x80,
7072         NULL, HFILL }},
7073     { &hf_gprscdr_ServiceConditionChange_presenceInPRAChange,
7074       { "presenceInPRAChange", "gprscdr.ServiceConditionChange.presenceInPRAChange",
7075         FT_BOOLEAN, 8, NULL, 0x40,
7076         NULL, HFILL }},
7077     { &hf_gprscdr_ServiceConditionChange_accessChangeOfSDF,
7078       { "accessChangeOfSDF", "gprscdr.ServiceConditionChange.accessChangeOfSDF",
7079         FT_BOOLEAN, 8, NULL, 0x20,
7080         NULL, HFILL }},
7081     { &hf_gprscdr_ServiceConditionChange_indirectServiceConditionChange,
7082       { "indirectServiceConditionChange", "gprscdr.ServiceConditionChange.indirectServiceConditionChange",
7083         FT_BOOLEAN, 8, NULL, 0x10,
7084         NULL, HFILL }},
7085     { &hf_gprscdr_ServiceConditionChange_servingPLMNRateControlChange,
7086       { "servingPLMNRateControlChange", "gprscdr.ServiceConditionChange.servingPLMNRateControlChange",
7087         FT_BOOLEAN, 8, NULL, 0x08,
7088         NULL, HFILL }},
7089     { &hf_gprscdr_ServiceConditionChange_aPNRateControlChange,
7090       { "aPNRateControlChange", "gprscdr.ServiceConditionChange.aPNRateControlChange",
7091         FT_BOOLEAN, 8, NULL, 0x04,
7092         NULL, HFILL }},
7093 
7094 /*--- End of included file: packet-gprscdr-hfarr.c ---*/
7095 #line 125 "./asn1/gprscdr/packet-gprscdr-template.c"
7096   };
7097 
7098   /* List of subtrees */
7099   static gint *ett[] = {
7100     &ett_gprscdr,
7101     &ett_gprscdr_timestamp,
7102     &ett_gprscdr_plmn_id,
7103     &ett_gprscdr_pdp_pdn_type,
7104     &ett_gprscdr_eps_qos_arp,
7105     &ett_gprscdr_managementextension_information,
7106     &ett_gprscdr_userlocationinformation,
7107 
7108 /*--- Included file: packet-gprscdr-ettarr.c ---*/
7109 #line 1 "./asn1/gprscdr/packet-gprscdr-ettarr.c"
7110     &ett_gprscdr_Diagnostics,
7111     &ett_gprscdr_Ecgi,
7112     &ett_gprscdr_EnhancedDiagnostics,
7113     &ett_gprscdr_SEQUENCE_OF_RANNASCause,
7114     &ett_gprscdr_InvolvedParty,
7115     &ett_gprscdr_IPAddress,
7116     &ett_gprscdr_IPBinaryAddress,
7117     &ett_gprscdr_IPBinV6AddressWithOrWithoutPrefixLength,
7118     &ett_gprscdr_IPBinV6AddressWithPrefixLength,
7119     &ett_gprscdr_IPTextRepresentedAddress,
7120     &ett_gprscdr_LCSClientIdentity,
7121     &ett_gprscdr_LevelOfCAMELService,
7122     &ett_gprscdr_LocationAreaAndCell,
7123     &ett_gprscdr_ManagementExtensions,
7124     &ett_gprscdr_MBMSInformation,
7125     &ett_gprscdr_Ncgi,
7126     &ett_gprscdr_PDPAddress,
7127     &ett_gprscdr_PSCellInformation,
7128     &ett_gprscdr_SCSASAddress,
7129     &ett_gprscdr_ServiceSpecificInfo,
7130     &ett_gprscdr_SubscriptionID,
7131     &ett_gprscdr_ManagementExtension,
7132     &ett_gprscdr_GPRSCallEventRecord,
7133     &ett_gprscdr_GGSNPDPRecord,
7134     &ett_gprscdr_SEQUENCE_OF_GSNAddress,
7135     &ett_gprscdr_SEQUENCE_OF_ChangeOfCharConditionV651,
7136     &ett_gprscdr_GGSNPDPRecordV750,
7137     &ett_gprscdr_EGSNPDPRecord,
7138     &ett_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV651,
7139     &ett_gprscdr_EGSNPDPRecordV750,
7140     &ett_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV750,
7141     &ett_gprscdr_SGSNPDPRecordV651,
7142     &ett_gprscdr_SGSNSMORecordV651,
7143     &ett_gprscdr_SGSNSMTRecordV651,
7144     &ett_gprscdr_ChangeOfCharConditionV651,
7145     &ett_gprscdr_ChangeOfServiceConditionV651,
7146     &ett_gprscdr_ChangeOfServiceConditionV750,
7147     &ett_gprscdr_SEQUENCE_OF_AFRecordInformation,
7148     &ett_gprscdr_ServiceConditionChangeV651,
7149     &ett_gprscdr_ServiceConditionChangeV750,
7150     &ett_gprscdr_GPRSRecord,
7151     &ett_gprscdr_SGWRecord,
7152     &ett_gprscdr_SEQUENCE_OF_ChangeOfCharCondition,
7153     &ett_gprscdr_SEQUENCE_OF_ServingNodeType,
7154     &ett_gprscdr_SEQUENCE_OF_RANSecondaryRATUsageReport,
7155     &ett_gprscdr_PGWRecord,
7156     &ett_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition,
7157     &ett_gprscdr_TDFRecord,
7158     &ett_gprscdr_IPERecord,
7159     &ett_gprscdr_EPDGRecord,
7160     &ett_gprscdr_TWAGRecord,
7161     &ett_gprscdr_SGSNMMRecord,
7162     &ett_gprscdr_SEQUENCE_OF_ChangeLocation,
7163     &ett_gprscdr_SGSNPDPRecord,
7164     &ett_gprscdr_SGSNSMORecord,
7165     &ett_gprscdr_SGSNSMTRecord,
7166     &ett_gprscdr_SGSNMTLCSRecord,
7167     &ett_gprscdr_SGSNMOLCSRecord,
7168     &ett_gprscdr_SGSNNILCSRecord,
7169     &ett_gprscdr_SGSNMBMSRecord,
7170     &ett_gprscdr_SEQUENCE_OF_RAIdentity,
7171     &ett_gprscdr_SEQUENCE_OF_ChangeOfMBMSCondition,
7172     &ett_gprscdr_GGSNMBMSRecord,
7173     &ett_gprscdr_GWMBMSRecord,
7174     &ett_gprscdr_AccessLineIdentifier,
7175     &ett_gprscdr_AFRecordInformation,
7176     &ett_gprscdr_APNRateControl,
7177     &ett_gprscdr_APNRateControlParameters,
7178     &ett_gprscdr_CalleePartyInformation,
7179     &ett_gprscdr_SEQUENCE_OF_InvolvedParty,
7180     &ett_gprscdr_CAMELInformationMM,
7181     &ett_gprscdr_CAMELInformationPDP,
7182     &ett_gprscdr_CAMELInformationSMS,
7183     &ett_gprscdr_ChangeOfCharCondition,
7184     &ett_gprscdr_SEQUENCE_OF_PresenceReportingAreaInfo,
7185     &ett_gprscdr_ChangeOfMBMSCondition,
7186     &ett_gprscdr_ChangeOfServiceCondition,
7187     &ett_gprscdr_SEQUENCE_OF_ServiceSpecificInfo,
7188     &ett_gprscdr_ChangeLocation,
7189     &ett_gprscdr_EPCQoSInformation,
7190     &ett_gprscdr_EventBasedChargingInformation,
7191     &ett_gprscdr_SEQUENCE_OF_TimeStamp,
7192     &ett_gprscdr_FixedUserLocationInformation,
7193     &ett_gprscdr_Flows,
7194     &ett_gprscdr_T_flowNumber,
7195     &ett_gprscdr_MOExceptionDataCounter,
7196     &ett_gprscdr_PresenceReportingAreaInfo,
7197     &ett_gprscdr_PresenceReportingAreaNode,
7198     &ett_gprscdr_PSFurnishChargingInformation,
7199     &ett_gprscdr_RANSecondaryRATUsageReport,
7200     &ett_gprscdr_RelatedChangeOfCharCondition,
7201     &ett_gprscdr_RelatedChangeOfServiceCondition,
7202     &ett_gprscdr_ServiceConditionChange,
7203     &ett_gprscdr_ServingPLMNRateControl,
7204     &ett_gprscdr_TimeQuotaMechanism,
7205     &ett_gprscdr_TWANUserLocationInfo,
7206     &ett_gprscdr_UserCSGInformation,
7207     &ett_gprscdr_UWANUserLocationInfo,
7208     &ett_gprscdr_VoLTEInformation,
7209     &ett_gprscdr_WLANOperatorId,
7210 
7211 /*--- End of included file: packet-gprscdr-ettarr.c ---*/
7212 #line 137 "./asn1/gprscdr/packet-gprscdr-template.c"
7213         };
7214 
7215   static ei_register_info ei[] = {
7216     { &ei_gprscdr_not_dissected, { "gprscdr.not_dissected", PI_UNDECODED, PI_WARN, "Not dissected", EXPFILL }},
7217     { &ei_gprscdr_choice_not_found, { "gprscdr.error.choice_not_found", PI_MALFORMED, PI_WARN, "GPRS CDR Error: This choice field(Record type) was not found", EXPFILL }},
7218   };
7219 
7220   expert_module_t* expert_gprscdr;
7221 
7222   proto_gprscdr = proto_register_protocol(PNAME, PSNAME, PFNAME);
7223 
7224   proto_register_field_array(proto_gprscdr, hf, array_length(hf));
7225   proto_register_subtree_array(ett, array_length(ett));
7226   expert_gprscdr = expert_register_protocol(proto_gprscdr);
7227   expert_register_field_array(expert_gprscdr, ei, array_length(ei));
7228 }
7229 
7230 /* The registration hand-off routine */
7231 
7232 /*
7233  * Editor modelines
7234  *
7235  * Local Variables:
7236  * c-basic-offset: 2
7237  * tab-width: 8
7238  * indent-tabs-mode: nil
7239  * End:
7240  *
7241  * ex: set shiftwidth=2 tabstop=8 expandtab:
7242  * :indentSize=2:tabSize=8:noTabs=true:
7243  */
7244