forked from osmocom/wireshark
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>
This commit is contained in:
parent
8ee06279ff
commit
877caf478b
|
@ -140,6 +140,62 @@ GPRSRecord
|
|||
|
||||
offset = decode_qos_umts(tvb, 0, actx->pinfo, tree, hfi->name, 0);
|
||||
|
||||
#.FN_BODY GGSNPDPRecord/userLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 1);
|
||||
|
||||
#.FN_BODY GGSNPDPRecordV750/userLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 1);
|
||||
|
||||
#.FN_BODY EGSNPDPRecord/userLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 1);
|
||||
|
||||
#.FN_BODY EGSNPDPRecordV750/userLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 1);
|
||||
|
||||
#.FN_BODY ChangeOfCharConditionV651/userLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 1);
|
||||
|
||||
#.FN_BODY ChangeOfServiceConditionV750/userLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 1);
|
||||
|
||||
#.FN_BODY SGWRecord/userLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
|
||||
|
||||
#.FN_BODY SGWRecord/lastUserLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
|
||||
|
||||
#.FN_BODY PGWRecord/userLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
|
||||
|
||||
#.FN_BODY PGWRecord/lastUserLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
|
||||
|
||||
#.FN_BODY ChangeOfCharCondition/userLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
|
||||
|
||||
#.FN_BODY ChangeOfServiceCondition/userLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
|
||||
|
||||
#.FN_BODY RelatedChangeOfCharCondition/userLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
|
||||
|
||||
#.FN_BODY RelatedChangeOfServiceCondition/userLocationInformation
|
||||
|
||||
offset = dissect_gprscdr_uli(tvb, actx, tree, 2);
|
||||
|
||||
#.FN_BODY GPRSRecord VAL_PTR = &branch_taken
|
||||
proto_item *item;
|
||||
gint branch_taken, t_offset = offset;
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
#include "packet-e212.h"
|
||||
#include "packet-gprscdr.h"
|
||||
#include "packet-gtp.h"
|
||||
#include "packet-gtpv2.h"
|
||||
|
||||
#define PNAME "GPRS CDR"
|
||||
#define PSNAME "GPRSCDR"
|
||||
|
@ -48,6 +49,7 @@ 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;
|
||||
#include "packet-gprscdr-ett.c"
|
||||
|
||||
static expert_field ei_gprscdr_not_dissected = EI_INIT;
|
||||
|
@ -64,6 +66,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;
|
||||
}
|
||||
|
||||
#include "packet-gprscdr-fn.c"
|
||||
|
||||
|
||||
|
@ -83,6 +116,7 @@ proto_register_gprscdr(void)
|
|||
&ett_gprscdr_timestamp,
|
||||
&ett_gprscdr_plmn_id,
|
||||
&ett_gprscdr_managementextension_information,
|
||||
&ett_gprscdr_userlocationinformation,
|
||||
#include "packet-gprscdr-ettarr.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 }
|
||||
};
|
||||
|
@ -2375,6 +2447,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,
|
||||
|
@ -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 },
|
||||
|
@ -3513,6 +3663,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);
|
||||
|
@ -3550,6 +3713,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[] = {
|
||||
|
|
|
@ -6130,26 +6130,15 @@ gchar *dissect_radius_user_loc(proto_tree * tree, tvbuff_t * tvb, packet_info* p
|
|||
* 7.7.51 User Location Information
|
||||
*/
|
||||
|
||||
static int
|
||||
decode_gtp_usr_loc_inf(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, session_args_t * args _U_)
|
||||
void
|
||||
dissect_gtp_uli(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, session_args_t * args _U_)
|
||||
{
|
||||
|
||||
guint16 length;
|
||||
proto_tree *ext_tree;
|
||||
guint8 geo_loc_type;
|
||||
proto_item* ti;
|
||||
|
||||
length = tvb_get_ntohs(tvb, offset + 1);
|
||||
ext_tree = proto_tree_add_subtree(tree, tvb, offset, 3 + length, ett_gtp_ies[GTP_EXT_USR_LOC_INF], NULL,
|
||||
val_to_str_ext_const(GTP_EXT_USR_LOC_INF, >p_val_ext, "Unknown"));
|
||||
|
||||
offset++;
|
||||
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset = offset + 2;
|
||||
|
||||
/* Geographic Location Type */
|
||||
geo_loc_type = tvb_get_guint8(tvb, offset);
|
||||
ti = proto_tree_add_uint(ext_tree, hf_gtp_uli_geo_loc_type, tvb, offset, 1, geo_loc_type);
|
||||
ti = proto_tree_add_uint(tree, hf_gtp_uli_geo_loc_type, tvb, offset, 1, geo_loc_type);
|
||||
|
||||
offset++;
|
||||
|
||||
|
@ -6159,22 +6148,22 @@ decode_gtp_usr_loc_inf(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tr
|
|||
* Identification (CGI) of where the user currently is registered.
|
||||
* CGI is defined in sub-clause 4.3.1 of 3GPP TS 23.003 [2].
|
||||
*/
|
||||
dissect_e212_mcc_mnc(tvb, pinfo, ext_tree, offset, E212_CGI, TRUE);
|
||||
dissect_e212_mcc_mnc(tvb, pinfo, tree, offset, E212_CGI, TRUE);
|
||||
offset+=3;
|
||||
proto_tree_add_item(ext_tree, hf_gtp_lac, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tree, hf_gtp_lac, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset+=2;
|
||||
proto_tree_add_item(ext_tree, hf_gtp_cgi_ci, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tree, hf_gtp_cgi_ci, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
break;
|
||||
case 1:
|
||||
/* Geographic Location field included and it holds the Service
|
||||
* Area Identity (SAI) of where the user currently is registered.
|
||||
* SAI is defined in sub-clause 9.2.3.9 of 3GPP TS 25.413 [7].
|
||||
*/
|
||||
dissect_e212_mcc_mnc(tvb, pinfo, ext_tree, offset, E212_SAI, TRUE);
|
||||
dissect_e212_mcc_mnc(tvb, pinfo, tree, offset, E212_SAI, TRUE);
|
||||
offset+=3;
|
||||
proto_tree_add_item(ext_tree, hf_gtp_lac, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tree, hf_gtp_lac, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset+=2;
|
||||
proto_tree_add_item(ext_tree, hf_gtp_sai_sac, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tree, hf_gtp_sai_sac, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
break;
|
||||
case 2:
|
||||
/* Geographic Location field included and it holds the Routing
|
||||
|
@ -6182,19 +6171,36 @@ decode_gtp_usr_loc_inf(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tr
|
|||
* registered. RAI is defined in sub-clause 4.2 of 3GPP TS 23.003
|
||||
* [2].
|
||||
*/
|
||||
dissect_e212_mcc_mnc(tvb, pinfo, ext_tree, offset, E212_RAI, TRUE);
|
||||
dissect_e212_mcc_mnc(tvb, pinfo, tree, offset, E212_RAI, TRUE);
|
||||
offset+=3;
|
||||
proto_tree_add_item(ext_tree, hf_gtp_lac, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tree, hf_gtp_lac, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset+=2;
|
||||
proto_tree_add_item(ext_tree, hf_gtp_rai_rac, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
proto_tree_add_item(tree, hf_gtp_rai_rac, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
break;
|
||||
default:
|
||||
expert_add_info(pinfo, ti, &ei_gtp_ext_geo_loc_type);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
decode_gtp_usr_loc_inf(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, session_args_t * args _U_)
|
||||
{
|
||||
|
||||
guint16 length;
|
||||
proto_tree *ext_tree;
|
||||
|
||||
length = tvb_get_ntohs(tvb, offset + 1);
|
||||
ext_tree = proto_tree_add_subtree(tree, tvb, offset, 3 + length, ett_gtp_ies[GTP_EXT_USR_LOC_INF], NULL,
|
||||
val_to_str_ext_const(GTP_EXT_USR_LOC_INF, >p_val_ext, "Unknown"));
|
||||
|
||||
offset++;
|
||||
proto_tree_add_item(ext_tree, hf_gtp_ext_length, tvb, offset, 2, ENC_BIG_ENDIAN);
|
||||
offset = offset + 2;
|
||||
|
||||
dissect_gtp_uli(tvb, offset, pinfo, ext_tree, args);
|
||||
|
||||
return 3 + length;
|
||||
|
||||
}
|
||||
|
||||
static const value_string daylight_saving_time_vals[] = {
|
||||
|
|
|
@ -180,4 +180,6 @@ gboolean is_cause_accepted(guint8 cause, guint32 version);
|
|||
|
||||
int decode_qos_umts(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, const gchar * qos_str, guint8 type);
|
||||
|
||||
void dissect_gtp_uli(tvbuff_t * tvb, int offset, packet_info * pinfo, proto_tree * tree, session_args_t * args _U_);
|
||||
|
||||
#endif /* __PACKET_GTP_H*/
|
||||
|
|
Loading…
Reference in New Issue