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