diff options
author | Joakim Karlsson <oakimk@gmail.com> | 2017-07-23 16:56:39 +0200 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2017-07-23 22:51:44 +0000 |
commit | 877caf478bae1e7f64084a8f2a7d6fe61f63b5e9 (patch) | |
tree | b863cb37813c8c2db39b25e8c4d1f0aa29e6937b /epan/dissectors/packet-gprscdr.c | |
parent | 8ee06279fff744a1d7f235df9b570e0c25a91b1f (diff) |
GPRSCDR: decoding of ULI in GGSN/SGW/PGW CDRs
Change-Id: Id87920c5099553e51cfaa9ab0cb0c41cec6a127b
Reviewed-on: https://code.wireshark.org/review/22767
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-gprscdr.c')
-rw-r--r-- | epan/dissectors/packet-gprscdr.c | 335 |
1 files changed, 308 insertions, 27 deletions
diff --git a/epan/dissectors/packet-gprscdr.c b/epan/dissectors/packet-gprscdr.c index 76cd3b2cf2..269476916b 100644 --- a/epan/dissectors/packet-gprscdr.c +++ b/epan/dissectors/packet-gprscdr.c @@ -40,6 +40,7 @@ #include "packet-e212.h" #include "packet-gprscdr.h" #include "packet-gtp.h" +#include "packet-gtpv2.h" #define PNAME "GPRS CDR" #define PSNAME "GPRSCDR" @@ -137,13 +138,16 @@ static int hf_gprscdr_sgsnPLMNIdentifier = -1; /* PLMN_Id */ static int hf_gprscdr_servedIMEISV = -1; /* IMEI */ static int hf_gprscdr_rATType = -1; /* RATType */ static int hf_gprscdr_mSTimeZone = -1; /* MSTimeZone */ -static int hf_gprscdr_userLocationInformation = -1; /* OCTET_STRING */ +static int hf_gprscdr_userLocationInformation = -1; /* T_userLocationInformation */ static int hf_gprscdr_cAMELChargingInformation = -1; /* OCTET_STRING */ static int hf_gprscdr_recordType_01 = -1; /* RecordType */ static int hf_gprscdr_causeForRecClosing_01 = -1; /* CauseForRecClosing */ +static int hf_gprscdr_userLocationInformation_01 = -1; /* T_userLocationInformation_01 */ static int hf_gprscdr_pSFurnishChargingInformation = -1; /* PSFurnishChargingInformation */ +static int hf_gprscdr_userLocationInformation_02 = -1; /* T_userLocationInformation_02 */ static int hf_gprscdr_listOfServiceData = -1; /* SEQUENCE_OF_ChangeOfServiceConditionV651 */ static int hf_gprscdr_listOfServiceData_item = -1; /* ChangeOfServiceConditionV651 */ +static int hf_gprscdr_userLocationInformation_03 = -1; /* T_userLocationInformation_03 */ static int hf_gprscdr_listOfServiceData_01 = -1; /* SEQUENCE_OF_ChangeOfServiceConditionV750 */ static int hf_gprscdr_listOfServiceData_item_01 = -1; /* ChangeOfServiceConditionV750 */ static int hf_gprscdr_servedIMEI = -1; /* IMEI */ @@ -171,6 +175,7 @@ static int hf_gprscdr_dataVolumeGPRSDownlink = -1; /* DataVolumeGPRS */ static int hf_gprscdr_changeCondition = -1; /* ChangeConditionV651 */ static int hf_gprscdr_changeTime = -1; /* TimeStamp */ static int hf_gprscdr_failureHandlingContinue = -1; /* FailureHandlingContinue */ +static int hf_gprscdr_userLocationInformation_04 = -1; /* T_userLocationInformation_04 */ static int hf_gprscdr_ratingGroup = -1; /* RatingGroupId */ static int hf_gprscdr_chargingRuleBaseName = -1; /* ChargingRuleBaseName */ static int hf_gprscdr_resultCode = -1; /* ResultCode */ @@ -188,6 +193,7 @@ static int hf_gprscdr_serviceIdentifier = -1; /* ServiceIdentifier */ static int hf_gprscdr_serviceConditionChangeV750 = -1; /* ServiceConditionChangeV750 */ static int hf_gprscdr_aFRecordInformation = -1; /* SEQUENCE_OF_AFRecordInformation */ static int hf_gprscdr_aFRecordInformation_item = -1; /* AFRecordInformation */ +static int hf_gprscdr_userLocationInformation_05 = -1; /* T_userLocationInformation_05 */ static int hf_gprscdr_eventBasedChargingInformation = -1; /* EventBasedChargingInformation */ static int hf_gprscdr_timeQuotaMechanism = -1; /* TimeQuotaMechanism */ static int hf_gprscdr_sgsnPDPRecord_01 = -1; /* SGSNPDPRecord */ @@ -215,6 +221,7 @@ static int hf_gprscdr_servedPDPPDNAddress = -1; /* PDPAddress */ static int hf_gprscdr_listOfTrafficVolumes_01 = -1; /* SEQUENCE_OF_ChangeOfCharCondition */ static int hf_gprscdr_listOfTrafficVolumes_item_01 = -1; /* ChangeOfCharCondition */ static int hf_gprscdr_servingNodePLMNIdentifier = -1; /* PLMN_Id */ +static int hf_gprscdr_userLocationInformation_06 = -1; /* T_userLocationInformation_06 */ static int hf_gprscdr_sGWChange = -1; /* SGWChange */ static int hf_gprscdr_servingNodeType = -1; /* SEQUENCE_OF_ServingNodeType */ static int hf_gprscdr_servingNodeType_item = -1; /* ServingNodeType */ @@ -236,7 +243,7 @@ static int hf_gprscdr_retransmission = -1; /* NULL */ static int hf_gprscdr_userLocationInfoTime = -1; /* TimeStamp */ static int hf_gprscdr_cNOperatorSelectionEnt = -1; /* CNOperatorSelectionEntity */ static int hf_gprscdr_presenceReportingAreaInfo = -1; /* PresenceReportingAreaInfo */ -static int hf_gprscdr_lastUserLocationInformation = -1; /* OCTET_STRING */ +static int hf_gprscdr_lastUserLocationInformation = -1; /* T_lastUserLocationInformation */ static int hf_gprscdr_lastMSTimeZone = -1; /* MSTimeZone */ static int hf_gprscdr_enhancedDiagnostics = -1; /* EnhancedDiagnostics */ static int hf_gprscdr_cPCIoTEPSOptimisationIndicator = -1; /* CPCIoTEPSOptimisationIndicator */ @@ -245,6 +252,7 @@ static int hf_gprscdr_servingPLMNRateControl = -1; /* ServingPLMNRateControl */ static int hf_gprscdr_pDPPDNTypeExtension = -1; /* PDPPDNTypeExtension */ static int hf_gprscdr_mOExceptionDataCounter = -1; /* MOExceptionDataCounter */ static int hf_gprscdr_p_GWAddress = -1; /* GSNAddress */ +static int hf_gprscdr_userLocationInformation_07 = -1; /* T_userLocationInformation_07 */ static int hf_gprscdr_listOfServiceData_02 = -1; /* SEQUENCE_OF_ChangeOfServiceCondition */ static int hf_gprscdr_listOfServiceData_item_02 = -1; /* ChangeOfServiceCondition */ static int hf_gprscdr_servedMNNAI = -1; /* SubscriptionID */ @@ -252,12 +260,14 @@ static int hf_gprscdr_served3gpp2MEID = -1; /* OCTET_STRING */ static int hf_gprscdr_threeGPP2UserLocationInformation = -1; /* OCTET_STRING */ static int hf_gprscdr_tWANUserLocationInformation = -1; /* TWANUserLocationInfo */ static int hf_gprscdr_ePCQoSInformation = -1; /* EPCQoSInformation */ +static int hf_gprscdr_lastUserLocationInformation_01 = -1; /* T_lastUserLocationInformation_01 */ static int hf_gprscdr_nBIFOMMode = -1; /* NBIFOMMode */ static int hf_gprscdr_nBIFOMSupport = -1; /* NBIFOMSupport */ static int hf_gprscdr_uWANUserLocationInformation = -1; /* UWANUserLocationInfo */ static int hf_gprscdr_sGiPtPTunnellingMethod = -1; /* SGiPtPTunnellingMethod */ static int hf_gprscdr_aPNRateControl = -1; /* APNRateControl */ static int hf_gprscdr_chargingPerIPCANSessionIndicator = -1; /* ChargingPerIPCANSessionIndicator */ +static int hf_gprscdr_userLocationInformation_08 = -1; /* OCTET_STRING */ static int hf_gprscdr_tDFAddress = -1; /* GSNAddress */ static int hf_gprscdr_tDFiPv6AddressUsed = -1; /* GSNAddress */ static int hf_gprscdr_tDFPLMNIdentifier = -1; /* PLMN_Id */ @@ -334,6 +344,7 @@ static int hf_gprscdr_cAMELDestinationSubscriberNumber = -1; /* SmsTpDestinatio static int hf_gprscdr_cAMELSMSCAddress = -1; /* AddressString */ static int hf_gprscdr_smsReferenceNumber = -1; /* CallReferenceNumber */ static int hf_gprscdr_changeCondition_01 = -1; /* ChangeCondition */ +static int hf_gprscdr_userLocationInformation_09 = -1; /* T_userLocationInformation_08 */ static int hf_gprscdr_presenceReportingAreaStatus = -1; /* PresenceReportingAreaStatus */ static int hf_gprscdr_accessAvailabilityChangeReason = -1; /* AccessAvailabilityChangeReason */ static int hf_gprscdr_relatedChangeOfCharCondition = -1; /* RelatedChangeOfCharCondition */ @@ -341,6 +352,7 @@ static int hf_gprscdr_dataVolumeMBMSUplink = -1; /* DataVolumeMBMS */ static int hf_gprscdr_dataVolumeMBMSDownlink = -1; /* DataVolumeMBMS */ static int hf_gprscdr_serviceConditionChange_01 = -1; /* ServiceConditionChange */ static int hf_gprscdr_qoSInformationNeg_01 = -1; /* EPCQoSInformation */ +static int hf_gprscdr_userLocationInformation_10 = -1; /* T_userLocationInformation_09 */ static int hf_gprscdr_serviceSpecificInfo = -1; /* SEQUENCE_OF_ServiceSpecificInfo */ static int hf_gprscdr_serviceSpecificInfo_item = -1; /* ServiceSpecificInfo */ static int hf_gprscdr_sponsorIdentity = -1; /* OCTET_STRING */ @@ -371,6 +383,8 @@ static int hf_gprscdr_iPAddress = -1; /* IPAddress */ static int hf_gprscdr_presenceReportingAreaIdentifier = -1; /* OCTET_STRING */ static int hf_gprscdr_pSFreeFormatData = -1; /* FreeFormatData */ static int hf_gprscdr_pSFFDAppendIndicator = -1; /* FFDAppendIndicator */ +static int hf_gprscdr_userLocationInformation_11 = -1; /* T_userLocationInformation_10 */ +static int hf_gprscdr_userLocationInformation_12 = -1; /* T_userLocationInformation_11 */ static int hf_gprscdr_sPLMNDLRateControlValue = -1; /* INTEGER */ static int hf_gprscdr_sPLMNULRateControlValue = -1; /* INTEGER */ static int hf_gprscdr_timeQuotaType = -1; /* TimeQuotaType */ @@ -473,12 +487,13 @@ static int hf_gprscdr_ServiceConditionChange_servingPLMNRateControlChange = -1; static int hf_gprscdr_ServiceConditionChange_aPNRateControlChange = -1; /*--- End of included file: packet-gprscdr-hf.c ---*/ -#line 46 "./asn1/gprscdr/packet-gprscdr-template.c" +#line 47 "./asn1/gprscdr/packet-gprscdr-template.c" static int ett_gprscdr = -1; static int ett_gprscdr_timestamp = -1; static int ett_gprscdr_plmn_id = -1; static int ett_gprscdr_managementextension_information = -1; +static int ett_gprscdr_userlocationinformation = -1; /*--- Included file: packet-gprscdr-ett.c ---*/ #line 1 "./asn1/gprscdr/packet-gprscdr-ett.c" @@ -570,7 +585,7 @@ static gint ett_gprscdr_UserCSGInformation = -1; static gint ett_gprscdr_UWANUserLocationInfo = -1; /*--- End of included file: packet-gprscdr-ett.c ---*/ -#line 52 "./asn1/gprscdr/packet-gprscdr-template.c" +#line 54 "./asn1/gprscdr/packet-gprscdr-template.c" static expert_field ei_gprscdr_not_dissected = EI_INIT; static expert_field ei_gprscdr_choice_not_found = EI_INIT; @@ -586,6 +601,37 @@ static const value_string gprscdr_daylight_saving_time_vals[] = { {0, NULL} }; +static int +dissect_gprscdr_uli(tvbuff_t *tvb _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int type) { + proto_tree *ext_tree_uli; + guint length; + + length = tvb_reported_length(tvb); + ext_tree_uli = proto_tree_add_subtree(tree, tvb, 0, length, ett_gprscdr_userlocationinformation, NULL, "UserLocationInformation"); + + switch (type) { + case 1: + /* For GGSN/EGGSN-CDR, + * this octet string is a 1:1 copy of the contents (i.e. starting with octet 4) of the + * User Location Information (ULI) information element specified in 29.060, ch7.7.51. + */ + dissect_gtp_uli(tvb, 0, actx->pinfo, ext_tree_uli, NULL); + break; + case 2: + /* For SGW/PGW-CDR, + * this octet string is a 1:1 copy of the contents (i.e. starting with octet 5) of the + * User Location Information (ULI) information element specified in 29.274, ch8.21. + */ + dissect_gtpv2_uli(tvb, actx->pinfo, ext_tree_uli, NULL, length, 0, 0, NULL); + break; + default: + proto_tree_add_expert(ext_tree_uli, actx->pinfo, &ei_gprscdr_not_dissected, tvb, 0, length); + break; + } + + return length; +} + /*--- Included file: packet-gprscdr-fn.c ---*/ #line 1 "./asn1/gprscdr/packet-gprscdr-fn.c" @@ -1756,6 +1802,19 @@ dissect_gprscdr_FailureHandlingContinue(gboolean implicit_tag _U_, tvbuff_t *tvb } + +static int +dissect_gprscdr_T_userLocationInformation_04(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 160 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 1); + + + + return offset; +} + + static const ber_sequence_t ChangeOfCharConditionV651_sequence[] = { { &hf_gprscdr_qosRequested, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation }, { &hf_gprscdr_qosNegotiated, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_QoSInformation }, @@ -1764,7 +1823,7 @@ static const ber_sequence_t ChangeOfCharConditionV651_sequence[] = { { &hf_gprscdr_changeCondition, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChangeConditionV651 }, { &hf_gprscdr_changeTime , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, { &hf_gprscdr_failureHandlingContinue, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_FailureHandlingContinue }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_04, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_04 }, { NULL, 0, 0, 0, NULL } }; @@ -2088,6 +2147,19 @@ dissect_gprscdr_PLMN_Id(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset } + +static int +dissect_gprscdr_T_userLocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 144 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 1); + + + + return offset; +} + + static const ber_sequence_t GGSNPDPRecord_set[] = { { &hf_gprscdr_recordType , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_CallEventRecordType }, { &hf_gprscdr_networkInitiation, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NetworkInitiatedPDPContext }, @@ -2118,7 +2190,7 @@ static const ber_sequence_t GGSNPDPRecord_set[] = { { &hf_gprscdr_servedIMEISV, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, { &hf_gprscdr_rATType , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, { &hf_gprscdr_mSTimeZone , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation }, { &hf_gprscdr_cAMELChargingInformation, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, { NULL, 0, 0, 0, NULL } }; @@ -2376,6 +2448,19 @@ dissect_gprscdr_PSFurnishChargingInformation(gboolean implicit_tag _U_, tvbuff_t static int +dissect_gprscdr_T_userLocationInformation_02(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 152 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 1); + + + + return offset; +} + + + +static int dissect_gprscdr_RatingGroupId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); @@ -2524,7 +2609,7 @@ static const ber_sequence_t EGSNPDPRecord_set[] = { { &hf_gprscdr_servedIMEISV, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, { &hf_gprscdr_rATType , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, { &hf_gprscdr_mSTimeZone , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_02, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_02 }, { &hf_gprscdr_cAMELChargingInformation, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, { &hf_gprscdr_listOfServiceData, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV651 }, { NULL, 0, 0, 0, NULL } @@ -2569,6 +2654,19 @@ dissect_gprscdr_GPRSCallEventRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ } + +static int +dissect_gprscdr_T_userLocationInformation_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 148 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 1); + + + + return offset; +} + + static const ber_sequence_t GGSNPDPRecordV750_set[] = { { &hf_gprscdr_recordType_01, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_gprscdr_RecordType }, { &hf_gprscdr_networkInitiation, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NetworkInitiatedPDPContext }, @@ -2599,7 +2697,7 @@ static const ber_sequence_t GGSNPDPRecordV750_set[] = { { &hf_gprscdr_servedIMEISV, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, { &hf_gprscdr_rATType , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, { &hf_gprscdr_mSTimeZone , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_01, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_01 }, { &hf_gprscdr_cAMELChargingInformation, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, { NULL, 0, 0, 0, NULL } }; @@ -2613,6 +2711,19 @@ dissect_gprscdr_GGSNPDPRecordV750(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, } + +static int +dissect_gprscdr_T_userLocationInformation_03(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 156 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 1); + + + + return offset; +} + + static const asn_namedbit ServiceConditionChangeV750_bits[] = { { 0, &hf_gprscdr_ServiceConditionChangeV750_qoSChange, -1, -1, "qoSChange", NULL }, { 1, &hf_gprscdr_ServiceConditionChangeV750_sGSNChange, -1, -1, "sGSNChange", NULL }, @@ -2722,6 +2833,19 @@ dissect_gprscdr_SEQUENCE_OF_AFRecordInformation(gboolean implicit_tag _U_, tvbuf } + +static int +dissect_gprscdr_T_userLocationInformation_05(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 164 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 1); + + + + return offset; +} + + static const ber_sequence_t SEQUENCE_OF_TimeStamp_sequence_of[1] = { { &hf_gprscdr_eventTimeStamps_item, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_gprscdr_TimeStamp }, }; @@ -2801,7 +2925,7 @@ static const ber_sequence_t ChangeOfServiceConditionV750_sequence[] = { { &hf_gprscdr_serviceIdentifier, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceIdentifier }, { &hf_gprscdr_pSFurnishChargingInformation, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSFurnishChargingInformation }, { &hf_gprscdr_aFRecordInformation, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_AFRecordInformation }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_05, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_05 }, { &hf_gprscdr_eventBasedChargingInformation, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EventBasedChargingInformation }, { &hf_gprscdr_timeQuotaMechanism, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeQuotaMechanism }, { NULL, 0, 0, 0, NULL } @@ -2860,7 +2984,7 @@ static const ber_sequence_t EGSNPDPRecordV750_set[] = { { &hf_gprscdr_servedIMEISV, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, { &hf_gprscdr_rATType , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, { &hf_gprscdr_mSTimeZone , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_03, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_03 }, { &hf_gprscdr_cAMELChargingInformation, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, { &hf_gprscdr_listOfServiceData_01, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceConditionV750 }, { NULL, 0, 0, 0, NULL } @@ -2906,6 +3030,19 @@ dissect_gprscdr_ChangeCondition(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in } + +static int +dissect_gprscdr_T_userLocationInformation_08(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 184 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 2); + + + + return offset; +} + + static const ber_sequence_t EPCQoSInformation_sequence[] = { { &hf_gprscdr_qCI , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, { &hf_gprscdr_maxRequestedBandwithUL, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_INTEGER }, @@ -3022,10 +3159,23 @@ dissect_gprscdr_UWANUserLocationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U } + +static int +dissect_gprscdr_T_userLocationInformation_10(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 192 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 2); + + + + return offset; +} + + static const ber_sequence_t RelatedChangeOfCharCondition_sequence[] = { { &hf_gprscdr_changeCondition_01, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChangeCondition }, { &hf_gprscdr_changeTime , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_11, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_10 }, { &hf_gprscdr_presenceReportingAreaStatus, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaStatus }, { &hf_gprscdr_userCSGInformation, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UserCSGInformation }, { &hf_gprscdr_rATType , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, @@ -3073,7 +3223,7 @@ static const ber_sequence_t ChangeOfCharCondition_sequence[] = { { &hf_gprscdr_dataVolumeGPRSDownlink, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DataVolumeGPRS }, { &hf_gprscdr_changeCondition_01, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_gprscdr_ChangeCondition }, { &hf_gprscdr_changeTime , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_09, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_08 }, { &hf_gprscdr_ePCQoSInformation, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EPCQoSInformation }, { &hf_gprscdr_chargingID , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ChargingID }, { &hf_gprscdr_presenceReportingAreaStatus, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaStatus }, @@ -3211,7 +3361,7 @@ static const ber_sequence_t SGSNSMORecord_set[] = { { &hf_gprscdr_servingNodeiPv6Address_01, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress }, { &hf_gprscdr_mMEName , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DiameterIdentity }, { &hf_gprscdr_mMERealm , BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DiameterIdentity }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_08, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, { &hf_gprscdr_retransmission, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL }, { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id }, { &hf_gprscdr_userLocationInfoTime, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, @@ -3254,7 +3404,7 @@ static const ber_sequence_t SGSNSMTRecord_set[] = { { &hf_gprscdr_servingNodeiPv6Address_01, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress }, { &hf_gprscdr_mMEName , BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DiameterIdentity }, { &hf_gprscdr_mMERealm , BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_DiameterIdentity }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_08, BER_CLASS_CON, 25, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, { &hf_gprscdr_retransmission, BER_CLASS_CON, 26, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NULL }, { &hf_gprscdr_servingNodePLMNIdentifier, BER_CLASS_CON, 27, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PLMN_Id }, { &hf_gprscdr_userLocationInfoTime, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, @@ -3514,6 +3664,19 @@ dissect_gprscdr_GGSNMBMSRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int static int +dissect_gprscdr_T_userLocationInformation_06(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 168 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 2); + + + + return offset; +} + + + +static int dissect_gprscdr_SGWChange(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); @@ -3551,6 +3714,19 @@ dissect_gprscdr_PresenceReportingAreaInfo(gboolean implicit_tag _U_, tvbuff_t *t static int +dissect_gprscdr_T_lastUserLocationInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 172 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 2); + + + + return offset; +} + + + +static int dissect_gprscdr_UNIPDUCPOnlyFlag(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL); @@ -3611,7 +3787,7 @@ static const ber_sequence_t SGWRecord_set[] = { { &hf_gprscdr_servedIMEI , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, { &hf_gprscdr_rATType , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, { &hf_gprscdr_mSTimeZone , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_06, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_06 }, { &hf_gprscdr_sGWChange , BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SGWChange }, { &hf_gprscdr_servingNodeType, BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ServingNodeType }, { &hf_gprscdr_p_GWAddressUsed, BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_gprscdr_GSNAddress }, @@ -3631,7 +3807,7 @@ static const ber_sequence_t SGWRecord_set[] = { { &hf_gprscdr_userLocationInfoTime, BER_CLASS_CON, 52, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeStamp }, { &hf_gprscdr_cNOperatorSelectionEnt, BER_CLASS_CON, 53, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNOperatorSelectionEntity }, { &hf_gprscdr_presenceReportingAreaInfo, BER_CLASS_CON, 54, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaInfo }, - { &hf_gprscdr_lastUserLocationInformation, BER_CLASS_CON, 55, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_lastUserLocationInformation, BER_CLASS_CON, 55, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_lastUserLocationInformation }, { &hf_gprscdr_lastMSTimeZone, BER_CLASS_CON, 56, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone }, { &hf_gprscdr_enhancedDiagnostics, BER_CLASS_CON, 57, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EnhancedDiagnostics }, { &hf_gprscdr_cPCIoTEPSOptimisationIndicator, BER_CLASS_CON, 59, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CPCIoTEPSOptimisationIndicator }, @@ -3651,6 +3827,19 @@ dissect_gprscdr_SGWRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs } + +static int +dissect_gprscdr_T_userLocationInformation_07(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 176 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 2); + + + + return offset; +} + + static const asn_namedbit ServiceConditionChange_bits[] = { { 0, &hf_gprscdr_ServiceConditionChange_qoSChange, -1, -1, "qoSChange", NULL }, { 1, &hf_gprscdr_ServiceConditionChange_sGSNChange, -1, -1, "sGSNChange", NULL }, @@ -3703,6 +3892,19 @@ dissect_gprscdr_ServiceConditionChange(gboolean implicit_tag _U_, tvbuff_t *tvb } + +static int +dissect_gprscdr_T_userLocationInformation_09(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 188 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 2); + + + + return offset; +} + + static const ber_sequence_t SEQUENCE_OF_ServiceSpecificInfo_sequence_of[1] = { { &hf_gprscdr_serviceSpecificInfo_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_gprscdr_ServiceSpecificInfo }, }; @@ -3727,8 +3929,21 @@ dissect_gprscdr_ADCRuleBaseName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in } + +static int +dissect_gprscdr_T_userLocationInformation_11(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 196 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 2); + + + + return offset; +} + + static const ber_sequence_t RelatedChangeOfServiceCondition_sequence[] = { - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_12, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_11 }, { &hf_gprscdr_threeGPP2UserLocationInformation, BER_CLASS_CON, 24, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, { &hf_gprscdr_presenceReportingAreaStatus, BER_CLASS_CON, 28, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaStatus }, { &hf_gprscdr_userCSGInformation, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_UserCSGInformation }, @@ -3842,7 +4057,7 @@ static const ber_sequence_t ChangeOfServiceCondition_sequence[] = { { &hf_gprscdr_serviceIdentifier, BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_ServiceIdentifier }, { &hf_gprscdr_pSFurnishChargingInformation, BER_CLASS_CON, 18, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PSFurnishChargingInformation }, { &hf_gprscdr_aFRecordInformation, BER_CLASS_CON, 19, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_AFRecordInformation }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_10, BER_CLASS_CON, 20, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_09 }, { &hf_gprscdr_eventBasedChargingInformation, BER_CLASS_CON, 21, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EventBasedChargingInformation }, { &hf_gprscdr_timeQuotaMechanism, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_TimeQuotaMechanism }, { &hf_gprscdr_serviceSpecificInfo, BER_CLASS_CON, 23, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ServiceSpecificInfo }, @@ -3897,6 +4112,19 @@ dissect_gprscdr_TWANUserLocationInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U } + +static int +dissect_gprscdr_T_lastUserLocationInformation_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 180 "./asn1/gprscdr/gprscdr.cnf" + + offset = dissect_gprscdr_uli(tvb, actx, tree, 2); + + + + return offset; +} + + static const value_string gprscdr_NBIFOMMode_vals[] = { { 0, "uEINITIATED" }, { 1, "nETWORKINITIATED" }, @@ -3990,7 +4218,7 @@ static const ber_sequence_t PGWRecord_set[] = { { &hf_gprscdr_servedIMEI , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, { &hf_gprscdr_rATType , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, { &hf_gprscdr_mSTimeZone , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_07, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_userLocationInformation_07 }, { &hf_gprscdr_cAMELChargingInformation, BER_CLASS_CON, 33, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, { &hf_gprscdr_listOfServiceData_02, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition }, { &hf_gprscdr_servingNodeType, BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ServingNodeType }, @@ -4014,7 +4242,7 @@ static const ber_sequence_t PGWRecord_set[] = { { &hf_gprscdr_cNOperatorSelectionEnt, BER_CLASS_CON, 54, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_CNOperatorSelectionEntity }, { &hf_gprscdr_ePCQoSInformation, BER_CLASS_CON, 55, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EPCQoSInformation }, { &hf_gprscdr_presenceReportingAreaInfo, BER_CLASS_CON, 56, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_PresenceReportingAreaInfo }, - { &hf_gprscdr_lastUserLocationInformation, BER_CLASS_CON, 57, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_lastUserLocationInformation_01, BER_CLASS_CON, 57, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_T_lastUserLocationInformation_01 }, { &hf_gprscdr_lastMSTimeZone, BER_CLASS_CON, 58, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone }, { &hf_gprscdr_enhancedDiagnostics, BER_CLASS_CON, 59, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_EnhancedDiagnostics }, { &hf_gprscdr_nBIFOMMode , BER_CLASS_CON, 60, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_NBIFOMMode }, @@ -4148,7 +4376,7 @@ static const ber_sequence_t TDFRecord_set[] = { { &hf_gprscdr_servedIMEI , BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gsm_map_IMEI }, { &hf_gprscdr_rATType , BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_RATType }, { &hf_gprscdr_mSTimeZone , BER_CLASS_CON, 31, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_MSTimeZone }, - { &hf_gprscdr_userLocationInformation, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, + { &hf_gprscdr_userLocationInformation_08, BER_CLASS_CON, 32, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_OCTET_STRING }, { &hf_gprscdr_listOfServiceData_02, BER_CLASS_CON, 34, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ChangeOfServiceCondition }, { &hf_gprscdr_servingNodeType, BER_CLASS_CON, 35, BER_FLAGS_IMPLTAG, dissect_gprscdr_SEQUENCE_OF_ServingNodeType }, { &hf_gprscdr_servedMNNAI , BER_CLASS_CON, 36, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_gprscdr_SubscriptionID }, @@ -4377,7 +4605,7 @@ static const ber_choice_t GPRSRecord_choice[] = { int dissect_gprscdr_GPRSRecord(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 144 "./asn1/gprscdr/gprscdr.cnf" +#line 200 "./asn1/gprscdr/gprscdr.cnf" proto_item *item; gint branch_taken, t_offset = offset; gint32 tag; @@ -4418,7 +4646,7 @@ int dissect_gprscdr_GPRSRecord_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, pr /*--- End of included file: packet-gprscdr-fn.c ---*/ -#line 68 "./asn1/gprscdr/packet-gprscdr-template.c" +#line 101 "./asn1/gprscdr/packet-gprscdr-template.c" @@ -4770,7 +4998,7 @@ proto_register_gprscdr(void) { &hf_gprscdr_userLocationInformation, { "userLocationInformation", "gprscdr.userLocationInformation", FT_BYTES, BASE_NONE, NULL, 0, - "OCTET_STRING", HFILL }}, + NULL, HFILL }}, { &hf_gprscdr_cAMELChargingInformation, { "cAMELChargingInformation", "gprscdr.cAMELChargingInformation", FT_BYTES, BASE_NONE, NULL, 0, @@ -4783,10 +5011,18 @@ proto_register_gprscdr(void) { "causeForRecClosing", "gprscdr.causeForRecClosing", FT_INT32, BASE_DEC, VALS(gprscdr_CauseForRecClosing_vals), 0, NULL, HFILL }}, + { &hf_gprscdr_userLocationInformation_01, + { "userLocationInformation", "gprscdr.userLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "T_userLocationInformation_01", HFILL }}, { &hf_gprscdr_pSFurnishChargingInformation, { "pSFurnishChargingInformation", "gprscdr.pSFurnishChargingInformation_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_gprscdr_userLocationInformation_02, + { "userLocationInformation", "gprscdr.userLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "T_userLocationInformation_02", HFILL }}, { &hf_gprscdr_listOfServiceData, { "listOfServiceData", "gprscdr.listOfServiceData", FT_UINT32, BASE_DEC, NULL, 0, @@ -4795,6 +5031,10 @@ proto_register_gprscdr(void) { "ChangeOfServiceConditionV651", "gprscdr.ChangeOfServiceConditionV651_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_gprscdr_userLocationInformation_03, + { "userLocationInformation", "gprscdr.userLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "T_userLocationInformation_03", HFILL }}, { &hf_gprscdr_listOfServiceData_01, { "listOfServiceData", "gprscdr.listOfServiceData", FT_UINT32, BASE_DEC, NULL, 0, @@ -4903,6 +5143,10 @@ proto_register_gprscdr(void) { "failureHandlingContinue", "gprscdr.failureHandlingContinue", FT_BOOLEAN, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_gprscdr_userLocationInformation_04, + { "userLocationInformation", "gprscdr.userLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "T_userLocationInformation_04", HFILL }}, { &hf_gprscdr_ratingGroup, { "ratingGroup", "gprscdr.ratingGroup", FT_INT32, BASE_DEC, NULL, 0, @@ -4971,6 +5215,10 @@ proto_register_gprscdr(void) { "AFRecordInformation", "gprscdr.AFRecordInformation_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_gprscdr_userLocationInformation_05, + { "userLocationInformation", "gprscdr.userLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "T_userLocationInformation_05", HFILL }}, { &hf_gprscdr_eventBasedChargingInformation, { "eventBasedChargingInformation", "gprscdr.eventBasedChargingInformation_element", FT_NONE, BASE_NONE, NULL, 0, @@ -5079,6 +5327,10 @@ proto_register_gprscdr(void) { "servingNodePLMNIdentifier", "gprscdr.servingNodePLMNIdentifier", FT_BYTES, BASE_NONE, NULL, 0, "PLMN_Id", HFILL }}, + { &hf_gprscdr_userLocationInformation_06, + { "userLocationInformation", "gprscdr.userLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "T_userLocationInformation_06", HFILL }}, { &hf_gprscdr_sGWChange, { "sGWChange", "gprscdr.sGWChange", FT_BOOLEAN, BASE_NONE, NULL, 0, @@ -5166,7 +5418,7 @@ proto_register_gprscdr(void) { &hf_gprscdr_lastUserLocationInformation, { "lastUserLocationInformation", "gprscdr.lastUserLocationInformation", FT_BYTES, BASE_NONE, NULL, 0, - "OCTET_STRING", HFILL }}, + NULL, HFILL }}, { &hf_gprscdr_lastMSTimeZone, { "lastMSTimeZone", "gprscdr.lastMSTimeZone", FT_BYTES, BASE_NONE, NULL, 0, @@ -5199,6 +5451,10 @@ proto_register_gprscdr(void) { "p-GWAddress", "gprscdr.p_GWAddress", FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0, "GSNAddress", HFILL }}, + { &hf_gprscdr_userLocationInformation_07, + { "userLocationInformation", "gprscdr.userLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "T_userLocationInformation_07", HFILL }}, { &hf_gprscdr_listOfServiceData_02, { "listOfServiceData", "gprscdr.listOfServiceData", FT_UINT32, BASE_DEC, NULL, 0, @@ -5227,6 +5483,10 @@ proto_register_gprscdr(void) { "ePCQoSInformation", "gprscdr.ePCQoSInformation_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, + { &hf_gprscdr_lastUserLocationInformation_01, + { "lastUserLocationInformation", "gprscdr.lastUserLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "T_lastUserLocationInformation_01", HFILL }}, { &hf_gprscdr_nBIFOMMode, { "nBIFOMMode", "gprscdr.nBIFOMMode", FT_UINT32, BASE_DEC, VALS(gprscdr_NBIFOMMode_vals), 0, @@ -5251,6 +5511,10 @@ proto_register_gprscdr(void) { "chargingPerIPCANSessionIndicator", "gprscdr.chargingPerIPCANSessionIndicator", FT_UINT32, BASE_DEC, VALS(gprscdr_ChargingPerIPCANSessionIndicator_vals), 0, NULL, HFILL }}, + { &hf_gprscdr_userLocationInformation_08, + { "userLocationInformation", "gprscdr.userLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "OCTET_STRING", HFILL }}, { &hf_gprscdr_tDFAddress, { "tDFAddress", "gprscdr.tDFAddress", FT_UINT32, BASE_DEC, VALS(gprscdr_IPAddress_vals), 0, @@ -5555,6 +5819,10 @@ proto_register_gprscdr(void) { "changeCondition", "gprscdr.changeCondition", FT_UINT32, BASE_DEC, VALS(gprscdr_ChangeCondition_vals), 0, NULL, HFILL }}, + { &hf_gprscdr_userLocationInformation_09, + { "userLocationInformation", "gprscdr.userLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "T_userLocationInformation_08", HFILL }}, { &hf_gprscdr_presenceReportingAreaStatus, { "presenceReportingAreaStatus", "gprscdr.presenceReportingAreaStatus", FT_UINT32, BASE_DEC, VALS(gprscdr_PresenceReportingAreaStatus_vals), 0, @@ -5583,6 +5851,10 @@ proto_register_gprscdr(void) { "qoSInformationNeg", "gprscdr.qoSInformationNeg_element", FT_NONE, BASE_NONE, NULL, 0, "EPCQoSInformation", HFILL }}, + { &hf_gprscdr_userLocationInformation_10, + { "userLocationInformation", "gprscdr.userLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "T_userLocationInformation_09", HFILL }}, { &hf_gprscdr_serviceSpecificInfo, { "serviceSpecificInfo", "gprscdr.serviceSpecificInfo", FT_UINT32, BASE_DEC, NULL, 0, @@ -5703,6 +5975,14 @@ proto_register_gprscdr(void) { "pSFFDAppendIndicator", "gprscdr.pSFFDAppendIndicator", FT_BOOLEAN, BASE_NONE, NULL, 0, "FFDAppendIndicator", HFILL }}, + { &hf_gprscdr_userLocationInformation_11, + { "userLocationInformation", "gprscdr.userLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "T_userLocationInformation_10", HFILL }}, + { &hf_gprscdr_userLocationInformation_12, + { "userLocationInformation", "gprscdr.userLocationInformation", + FT_BYTES, BASE_NONE, NULL, 0, + "T_userLocationInformation_11", HFILL }}, { &hf_gprscdr_sPLMNDLRateControlValue, { "sPLMNDLRateControlValue", "gprscdr.sPLMNDLRateControlValue", FT_INT32, BASE_DEC, NULL, 0, @@ -6101,7 +6381,7 @@ proto_register_gprscdr(void) NULL, HFILL }}, /*--- End of included file: packet-gprscdr-hfarr.c ---*/ -#line 78 "./asn1/gprscdr/packet-gprscdr-template.c" +#line 111 "./asn1/gprscdr/packet-gprscdr-template.c" }; /* List of subtrees */ @@ -6110,6 +6390,7 @@ proto_register_gprscdr(void) &ett_gprscdr_timestamp, &ett_gprscdr_plmn_id, &ett_gprscdr_managementextension_information, + &ett_gprscdr_userlocationinformation, /*--- Included file: packet-gprscdr-ettarr.c ---*/ #line 1 "./asn1/gprscdr/packet-gprscdr-ettarr.c" @@ -6201,7 +6482,7 @@ proto_register_gprscdr(void) &ett_gprscdr_UWANUserLocationInfo, /*--- End of included file: packet-gprscdr-ettarr.c ---*/ -#line 87 "./asn1/gprscdr/packet-gprscdr-template.c" +#line 121 "./asn1/gprscdr/packet-gprscdr-template.c" }; static ei_register_info ei[] = { |