diff --git a/epan/dissectors/packet-gsm_a_common.c b/epan/dissectors/packet-gsm_a_common.c index 068b91cd5b..aec3d34744 100644 --- a/epan/dissectors/packet-gsm_a_common.c +++ b/epan/dissectors/packet-gsm_a_common.c @@ -1863,17 +1863,17 @@ de_mid(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_st a_bigbuf[0] = Dgt1_9_bcd.out[(oct & 0xf0) >> 4]; curr_offset++; - poctets = tvb_get_ephemeral_string(tvb, curr_offset, len - (curr_offset - offset)); + //poctets = tvb_get_ephemeral_string(tvb, curr_offset, len - (curr_offset - offset)); - my_dgt_tbcd_unpack(&a_bigbuf[1], poctets, len - (curr_offset - offset), - &Dgt1_9_bcd); + //my_dgt_tbcd_unpack(&a_bigbuf[1], poctets, len - (curr_offset - offset), + // &Dgt1_9_bcd); proto_tree_add_string_format(tree, ((oct & 0x07) == 3) ? hf_gsm_a_imeisv : hf_gsm_a_imsi, tvb, curr_offset - 1, len - (curr_offset - offset) + 1, a_bigbuf, "BCD Digits: %s", - a_bigbuf); + tvb_bcd_dig_to_ep_str(tvb, curr_offset - 1, -1, NULL, TRUE)); if (sccp_assoc && ! sccp_assoc->calling_party) { sccp_assoc->calling_party = se_strdup_printf( diff --git a/epan/dissectors/packet-gsm_a_common.h b/epan/dissectors/packet-gsm_a_common.h index d05d2256e1..869099998a 100644 --- a/epan/dissectors/packet-gsm_a_common.h +++ b/epan/dissectors/packet-gsm_a_common.h @@ -606,7 +606,7 @@ guint16 de_sm_pco(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gc guint16 de_sm_qos(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); guint16 de_sm_pflow_id(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); guint16 de_sm_tflow_temp(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); - +guint16 de_time_zone(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_); guint16 de_gmm_drx_param(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); guint16 de_gmm_ms_net_cap(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); guint16 de_gmm_rai(tvbuff_t *tvb, proto_tree *tree, guint32 offset, guint len, gchar *add_string, int string_len); diff --git a/epan/dissectors/packet-gtpv2.c b/epan/dissectors/packet-gtpv2.c index 42a0d249c6..e810761b78 100644 --- a/epan/dissectors/packet-gtpv2.c +++ b/epan/dissectors/packet-gtpv2.c @@ -263,7 +263,6 @@ static int hf_gtpv2_charging_id = -1; static int hf_gtpv2_charging_characteristic = -1; static int hf_gtpv2_bearer_flag_ppc = -1; static int hf_gtpv2_bearer_flag_vb = -1; -static int hf_gtpv2_ue_time_zone = -1; static int hf_gtpv2_ue_time_zone_dst = -1; static int hf_gtpv2_fq_csid_type = -1; static int hf_gtpv2_fq_csid_nr = -1; @@ -2330,8 +2329,12 @@ dissect_gtpv2_ue_time_zone(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr { int offset = 0; - proto_tree_add_item(tree, hf_gtpv2_ue_time_zone, tvb, offset, 1, FALSE); - + /* + * UE Time Zone is used to indicate the offset between universal time and local time in steps of 15 minutes of where the + * UE currently resides. The "Time Zone" field uses the same format as the "Time Zone" IE in 3GPP TS 24.008 [5]. + * (packet-gsm_a_dtap.c) + */ + de_time_zone(tvb, tree, offset, 1, NULL, 0); offset= offset+ 1; proto_tree_add_item(tree, hf_gtpv2_ue_time_zone_dst, tvb, offset, 1, FALSE); @@ -4153,12 +4156,6 @@ void proto_register_gtpv2(void) FT_UINT8, BASE_DEC, NULL, 0x1c, NULL, HFILL} }, - - {&hf_gtpv2_ue_time_zone, - {"Time Zone","gtpv2.ue_time_zone", - FT_UINT8, BASE_DEC, NULL,0x0, - NULL, HFILL} - }, {&hf_gtpv2_ue_time_zone_dst, {"Daylight Saving Time","gtpv2.ue_time_zone_dst", FT_UINT8, BASE_DEC, VALS(gtpv2_ue_time_zone_dst_vals),0x03,