299 lines
9.0 KiB
INI
299 lines
9.0 KiB
INI
# gprscdr.cnf
|
|
# Anders Broman 2011
|
|
|
|
#.IMPORT ../gsm_map/gsm_map-exp.cnf
|
|
|
|
#.MODULE
|
|
|
|
#.OMIT_ASSIGNMENT
|
|
CalledNumber
|
|
CauseForTerm
|
|
ChargeIndicator
|
|
DataVolumeOctets
|
|
MscNo
|
|
SystemType
|
|
NodeAddress
|
|
ServiceContextID
|
|
ChangeLocationV651
|
|
SubscriberEquipmentNumber
|
|
SubscriberEquipmentType
|
|
Session-Id
|
|
PriorityType
|
|
MessageClass
|
|
# 6.4 If these are needed MBMS asn1 should be added.
|
|
MSCAddress
|
|
|
|
#.EXPORTS
|
|
GPRSCallEventRecord
|
|
GPRSCallEventRecord_PDU
|
|
GPRSRecord
|
|
GPRSRecord_PDU
|
|
|
|
#.CLASS ATTRIBUTE
|
|
&id ObjectIdentifierType
|
|
&Value
|
|
|
|
#.CLASS CONTEXT
|
|
&id ObjectIdentifierType
|
|
&Value
|
|
|
|
#.FIELD_RENAME
|
|
IPBinaryAddress/iPBinV6Address iPBinV6Address_choice
|
|
#.FIELD_ATTR
|
|
IPBinaryAddress/iPBinV6Address ABBREV=iPBinV6Address_choice
|
|
|
|
#.PDU
|
|
GPRSCallEventRecord
|
|
GPRSRecord
|
|
|
|
|
|
# Get the OID
|
|
#.FN_PARS ManagementExtension/identifier FN_VARIANT = _str VAL_PTR = &obj_id
|
|
|
|
#.FN_BODY ManagementExtension/information
|
|
|
|
proto_tree *ext_tree;
|
|
ext_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_gprscdr_managementextension_information, NULL, "Information");
|
|
if (obj_id){
|
|
offset=call_ber_oid_callback(obj_id, tvb, offset, actx->pinfo, ext_tree, NULL);
|
|
}else{
|
|
proto_tree_add_expert(ext_tree, actx->pinfo, &ei_gprscdr_not_dissected, tvb, offset, -1);
|
|
}
|
|
|
|
#.FN_BODY TimeStamp VAL_PTR = ¶meter_tvb
|
|
/*
|
|
*
|
|
* The contents of this field are a compact form of the UTCTime format
|
|
* containing local time plus an offset to universal time. Binary coded
|
|
* decimal encoding is employed for the digits to reduce the storage and
|
|
* transmission overhead
|
|
* e.g. YYMMDDhhmmssShhmm
|
|
* where
|
|
* YY = Year 00 to 99 BCD encoded
|
|
* MM = Month 01 to 12 BCD encoded
|
|
* DD = Day 01 to 31 BCD encoded
|
|
* hh = hour 00 to 23 BCD encoded
|
|
* mm = minute 00 to 59 BCD encoded
|
|
* ss = second 00 to 59 BCD encoded
|
|
* S = Sign 0 = "+", "-" ASCII encoded
|
|
* hh = hour 00 to 23 BCD encoded
|
|
* mm = minute 00 to 59 BCD encoded
|
|
*/
|
|
|
|
tvbuff_t *parameter_tvb;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if (!parameter_tvb)
|
|
return offset;
|
|
|
|
proto_item_append_text(actx->created_item, " (UTC %%x-%%x-%%x %%x:%%x:%%x %%s%%x:%%x)",
|
|
tvb_get_guint8(parameter_tvb,0), /* Year */
|
|
tvb_get_guint8(parameter_tvb,1), /* Month */
|
|
tvb_get_guint8(parameter_tvb,2), /* Day */
|
|
tvb_get_guint8(parameter_tvb,3), /* Hour */
|
|
tvb_get_guint8(parameter_tvb,4), /* Minute */
|
|
tvb_get_guint8(parameter_tvb,5), /* Second */
|
|
tvb_get_string_enc(wmem_packet_scope(), parameter_tvb,6,1,ENC_ASCII|ENC_NA), /* Sign */
|
|
tvb_get_guint8(parameter_tvb,7), /* Hour */
|
|
tvb_get_guint8(parameter_tvb,8) /* Minute */
|
|
);
|
|
|
|
#.FN_BODY MSTimeZone VAL_PTR = ¶meter_tvb
|
|
/*
|
|
*
|
|
* 1.Octet: Time Zone and 2. Octet: Daylight saving time, see TS 29.060 [75]
|
|
*/
|
|
tvbuff_t *parameter_tvb;
|
|
guint8 data, data2;
|
|
char sign;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if (!parameter_tvb)
|
|
return offset;
|
|
|
|
data = tvb_get_guint8(parameter_tvb, 0);
|
|
sign = (data & 0x08) ? '-' : '+';
|
|
data = (data >> 4) + (data & 0x07) * 10;
|
|
|
|
data2 = tvb_get_guint8(tvb, 1) & 0x3;
|
|
|
|
proto_item_append_text(actx->created_item, " (GMT %%c %%d hours %%d minutes %%s)",
|
|
sign,
|
|
data / 4,
|
|
data %% 4 * 15,
|
|
val_to_str_const(data2, gprscdr_daylight_saving_time_vals, "Unknown")
|
|
);
|
|
|
|
#.FN_BODY PLMN-Id VAL_PTR = ¶meter_tvb
|
|
tvbuff_t *parameter_tvb;
|
|
proto_tree *subtree;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if (!parameter_tvb)
|
|
return offset;
|
|
|
|
subtree = proto_item_add_subtree(actx->created_item, ett_gprscdr_plmn_id);
|
|
dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, subtree, 0, E212_NONE, TRUE);
|
|
|
|
#.FN_BODY QoSInformation
|
|
|
|
/* This octet string is a 1:1 copy of the contents (i.e. starting with octet 4) of the
|
|
* Quality of Service (QoS) Profile information element specified in 29.060, ch7.7.34.
|
|
*
|
|
*/
|
|
|
|
header_field_info *hfi;
|
|
hfi = proto_registrar_get_nth(hf_index);
|
|
|
|
offset = decode_qos_umts(tvb, 0, actx->pinfo, tree, hfi->name, 0);
|
|
|
|
#.FN_BODY EPCQoSInformation/aRP
|
|
proto_tree *ext_tree_arp;
|
|
guint length;
|
|
|
|
/*
|
|
* 8.86 Allocation/Retention Priority (ARP)
|
|
* 3GPP TS 29.274
|
|
*/
|
|
|
|
length = tvb_reported_length(tvb);
|
|
ext_tree_arp = proto_tree_add_subtree(tree, tvb, 0, length, ett_gprscdr_eps_qos_arp, NULL, "aRP");
|
|
|
|
dissect_gtpv2_arp(tvb, actx->pinfo, ext_tree_arp, NULL, length, 0, 0, NULL);
|
|
|
|
offset = length;
|
|
|
|
|
|
#.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 PDPType
|
|
proto_tree *ext_tree_pdp_pdn_type;
|
|
guint length;
|
|
|
|
length = tvb_reported_length(tvb);
|
|
|
|
if(length == 1) {
|
|
/*
|
|
* PDN/EPS Bearer
|
|
* TS 29.274
|
|
* 8.34 PDN Type
|
|
*/
|
|
ext_tree_pdp_pdn_type = proto_tree_add_subtree(tree, tvb, 0, length, ett_gprscdr_pdp_pdn_type, NULL, "pDNType");
|
|
dissect_gtpv2_pdn_type(tvb, actx->pinfo, ext_tree_pdp_pdn_type, NULL, length, 0, 0, NULL);
|
|
offset = length;
|
|
}
|
|
else {
|
|
/* PDP context
|
|
* TS 29.060
|
|
* 7.7.27 End User Address
|
|
* Octet 4-5
|
|
*/
|
|
ext_tree_pdp_pdn_type = proto_tree_add_subtree(tree, tvb, 0, length, ett_gprscdr_pdp_pdn_type, NULL, "pDPType");
|
|
offset = de_sm_pdp_addr(tvb, ext_tree_pdp_pdn_type, actx->pinfo, 0, length, NULL, 0);
|
|
}
|
|
|
|
|
|
#.FN_BODY GPRSRecord VAL_PTR = &branch_taken
|
|
proto_item *item;
|
|
gint branch_taken, t_offset = offset;
|
|
gint32 tag;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if(branch_taken == -1){
|
|
get_ber_identifier(tvb, t_offset, NULL, NULL, &tag);
|
|
item = proto_tree_add_uint(tree, hf_index, tvb, t_offset, 1, tag);
|
|
dissect_ber_identifier(actx->pinfo, tree, tvb, t_offset, NULL, NULL, &tag);
|
|
expert_add_info_format(actx->pinfo, item, &ei_gprscdr_choice_not_found,
|
|
"Record type(BER choice) not found: %%u", tag);
|
|
}
|
|
#.TYPE_ATTR
|
|
IPBinV4Address TYPE = FT_IPv4 DISPLAY = BASE_NONE
|
|
IPBinV6Address TYPE = FT_IPv6 DISPLAY = BASE_NONE
|
|
RATType TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(gprscdr_rat_type_vals)
|
|
EPCQoSInformation/maxRequestedBandwithUL TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
EPCQoSInformation/maxRequestedBandwithDL TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
EPCQoSInformation/guaranteedBitrateUL TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
EPCQoSInformation/guaranteedBitrateDL TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
EPCQoSInformation/aPNAggregateMaxBitrateUL TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
EPCQoSInformation/aPNAggregateMaxBitrateDL TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
EPCQoSInformation/extendedMaxRequestedBWUL TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
EPCQoSInformation/extendedMaxRequestedBWDL TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
EPCQoSInformation/extendedGBRUL TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
EPCQoSInformation/extendedGBRDL TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
EPCQoSInformation/extendedAPNAMBRUL TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
EPCQoSInformation/extendedAPNAMBRDL TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
CSGId TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
RatingGroupId TYPE = FT_UINT32 DISPLAY = BASE_DEC
|
|
#.END
|
|
|
|
#
|
|
# Editor modelines - https://www.wireshark.org/tools/modelines.html
|
|
#
|
|
# Local variables:
|
|
# c-basic-offset: 2
|
|
# tab-width: 8
|
|
# indent-tabs-mode: nil
|
|
# End:
|
|
#
|
|
# vi: set shiftwidth=2 tabstop=8 expandtab:
|
|
# :indentSize=2:tabSize=8:noTabs=true:
|
|
#
|