From Toshihiro KATAOKA:

The decoded MSISDN AVP in 3GPP diameter AVP and the decoded MSISDN IE in 3GPP
GTPv2 IE are not correct. 
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=4638

svn path=/trunk/; revision=32377
This commit is contained in:
Anders Broman 2010-04-05 07:37:04 +00:00
parent fa1b1e9143
commit b3607a98ae
2 changed files with 25 additions and 3 deletions

View File

@ -43,6 +43,7 @@
#include "packet-gsm_map.h"
#include "packet-gsm_a_common.h"
#include "packet-e164.h"
#include "packet-e212.h"
/* Initialize the protocol and registered fields */
@ -54,6 +55,7 @@ static int hf_diameter_3gpp_ipaddr = -1;
static int hf_diameter_3gpp_mbms_required_qos_prio = -1;
static int hf_diameter_3gpp_tmgi = -1;
static int hf_diameter_mbms_service_id = -1;
static int hf_diameter_address_digits = -1;
static gint diameter_3gpp_msisdn_ett = -1;
static gint diameter_3gpp_tmgi_ett = -1;
@ -69,11 +71,15 @@ dissect_diameter_3gpp_msisdn(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tr
proto_item* item;
proto_tree *sub_tree;
int offset = 0;
const char *digit_str;
item = proto_tree_add_item(tree, hf_diameter_3gpp_msisdn, tvb, offset, 6, FALSE);
sub_tree = proto_item_add_subtree(item,diameter_3gpp_msisdn_ett);
dissect_gsm_map_msisdn(tvb, pinfo, sub_tree);
dissect_e164_cc(tvb, sub_tree, offset, TRUE);
digit_str = unpack_digits(tvb, 1);
proto_tree_add_string(sub_tree, hf_diameter_address_digits, tvb, 1, -1, digit_str);
return tvb_length(tvb);
@ -222,6 +228,11 @@ proto_register_diameter_3gpp(void)
FT_UINT24, BASE_HEX, NULL, 0x0,
NULL, HFILL }
},
{ &hf_diameter_address_digits,
{ "Address digits", "diameter.3gpp.address_digits",
FT_STRING, BASE_NONE, NULL, 0,
NULL, HFILL }
},
};
/* Setup protocol subtree array */

View File

@ -40,6 +40,7 @@
#include "packet-gsm_a_common.h"
#include "packet-gsm_map.h"
#include "packet-e164.h"
#include "packet-e212.h"
/*GTPv2 Message->GTP Header(SB)*/
@ -109,6 +110,7 @@ static int hf_gtpv2_ambr_down= -1;
static int hf_gtpv2_ip_address_ipv4= -1;
static int hf_gtpv2_ip_address_ipv6= -1;
static int hf_gtpv2_mei= -1;
static int hf_gtpv2_address_digits = -1;
static int hf_gtpv2_bearer_qos_pvi= -1;
static int hf_gtpv2_bearer_qos_pl= -1;
@ -626,9 +628,13 @@ dissect_gtpv2_mei(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto
* Editor's note: MSISDN coding will be defined in TS 24.301.
*/
static void
dissect_gtpv2_msisdn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 instance _U_)
dissect_gtpv2_msisdn(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *item _U_, guint16 length _U_, guint8 instance _U_)
{
dissect_gsm_map_msisdn(tvb, pinfo, tree);
const char *digit_str;
dissect_e164_cc(tvb, tree, 0, TRUE);
digit_str = unpack_digits(tvb, 1);
proto_tree_add_string(tree, hf_gtpv2_address_digits, tvb, 1, -1, digit_str);
}
/*
@ -2215,6 +2221,11 @@ void proto_register_gtpv2(void)
FT_UINT8, BASE_DEC, VALS(gtpv2_node_type_vals), 0x0,
NULL, HFILL}
},
{ &hf_gtpv2_address_digits,
{ "Address digits", "gtpv2.address_digits",
FT_STRING, BASE_NONE, NULL, 0,
NULL, HFILL }
},
};