diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2015-01-30 00:02:20 +0100 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2015-01-30 11:19:29 +0000 |
commit | 14a869c705f91bc4e4fa056380b865f7ba02cc78 (patch) | |
tree | 52b50438040bf1e7fb2b15bd3bc066dc692c3a28 /asn1/gsm_map | |
parent | a614212aa80a831f91ec3a2b17760d4f2c02bdeb (diff) | |
download | wireshark-14a869c705f91bc4e4fa056380b865f7ba02cc78.tar.gz |
GSM MAP: display TBCD digits, USSD string and Location Number digits in a subtree
Bug: 10900
Change-Id: I01277633a1314e68363ef433f3b99b4138657330
Reviewed-on: https://code.wireshark.org/review/6850
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'asn1/gsm_map')
-rw-r--r-- | asn1/gsm_map/gsm_map.cnf | 30 | ||||
-rw-r--r-- | asn1/gsm_map/packet-gsm_map-template.c | 4 |
2 files changed, 21 insertions, 13 deletions
diff --git a/asn1/gsm_map/gsm_map.cnf b/asn1/gsm_map/gsm_map.cnf index 535d020085..9349fe724e 100644 --- a/asn1/gsm_map/gsm_map.cnf +++ b/asn1/gsm_map/gsm_map.cnf @@ -272,6 +272,7 @@ MAP-DialoguePDU B "0.4.0.0.1.1.1.1" "map-DialogueAS" #.FN_BODY TBCD-STRING VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb; const char *digit_str; + proto_tree *subtree; %(DEFAULT_BODY)s @@ -280,8 +281,9 @@ MAP-DialoguePDU B "0.4.0.0.1.1.1.1" "map-DialogueAS" if(tvb_reported_length(parameter_tvb)==0) return offset; + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_tbcd_digits); digit_str = tvb_bcd_dig_to_wmem_packet_str(parameter_tvb, 0, -1, NULL, FALSE); - proto_tree_add_string(tree, hf_gsm_map_TBCD_digits, parameter_tvb, 0, -1, digit_str); + proto_tree_add_string(subtree, hf_gsm_map_TBCD_digits, parameter_tvb, 0, -1, digit_str); #---------------------------------------------------------------------------------------- #.FN_BODY LongSignalInfo VAL_PTR = ¶meter_tvb @@ -541,29 +543,31 @@ actx->pinfo->p2p_dir = P2P_DIR_RECV; #.FN_BODY USSD-String VAL_PTR = ¶meter_tvb - tvbuff_t *parameter_tvb; - guint length; + tvbuff_t *parameter_tvb; + guint length; + proto_tree *subtree; %(DEFAULT_BODY)s if (!parameter_tvb) return offset; length = tvb_ensure_captured_length_remaining(parameter_tvb,0); + subtree = proto_item_add_subtree(actx->created_item, ett_gsm_map_ussd_string); switch(sms_encoding){ case SMS_ENCODING_7BIT: case SMS_ENCODING_7BIT_LANG: - proto_tree_add_string(tree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, length, ENC_3GPP_TS_23_038_7BITS|ENC_NA)); - break; + proto_tree_add_string(subtree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, length, ENC_3GPP_TS_23_038_7BITS|ENC_NA)); + break; case SMS_ENCODING_8BIT: - /* XXX - ASCII, or some extended ASCII? */ - proto_tree_add_string(tree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, length, ENC_ASCII|ENC_NA)); - break; + /* XXX - ASCII, or some extended ASCII? */ + proto_tree_add_string(subtree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, length, ENC_ASCII|ENC_NA)); + break; case SMS_ENCODING_UCS2: case SMS_ENCODING_UCS2_LANG: - proto_tree_add_string(tree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, length, ENC_UCS_2|ENC_BIG_ENDIAN)); - break; + proto_tree_add_string(subtree, hf_gsm_map_ussd_string, parameter_tvb, 0, length, tvb_get_string_enc(wmem_packet_scope(), parameter_tvb, 0, length, ENC_UCS_2|ENC_BIG_ENDIAN)); + break; default: - break; + break; } #.FN_FTR ForwardingOptions @@ -967,10 +971,10 @@ if (!actx->value_ptr) digit_str = tvb_bcd_dig_to_wmem_packet_str(tvb, 2, -1, NULL, FALSE); - proto_tree_add_string(tree, hf_gsm_map_locationnumber_digits, tvb, 2, -1, digit_str); + proto_tree_add_string(subtree, hf_gsm_map_locationnumber_digits, tvb, 2, -1, digit_str); if ((na == 3) && (np==1))/*International Number & E164*/ - dissect_e164_cc(tvb, tree, 2, E164_ENC_BCD); + dissect_e164_cc(tvb, subtree, 2, E164_ENC_BCD); #.FN_BODY EnhancedCheckIMEI-Arg/locationInformation VAL_PTR = ¶meter_tvb tvbuff_t *parameter_tvb; diff --git a/asn1/gsm_map/packet-gsm_map-template.c b/asn1/gsm_map/packet-gsm_map-template.c index 94517e8f17..91affad541 100644 --- a/asn1/gsm_map/packet-gsm_map-template.c +++ b/asn1/gsm_map/packet-gsm_map-template.c @@ -174,6 +174,8 @@ static gint ett_gsm_map_apn_str = -1; static gint ett_gsm_map_LocationNumber = -1; static gint ett_gsm_map_ericsson_locationInformation = -1; static gint ett_gsm_map_extention_data = -1; +static gint ett_gsm_map_tbcd_digits = -1; +static gint ett_gsm_map_ussd_string = -1; #include "packet-gsm_map-ett.c" @@ -2925,6 +2927,8 @@ void proto_register_gsm_map(void) { &ett_gsm_map_LocationNumber, &ett_gsm_map_ericsson_locationInformation, &ett_gsm_map_extention_data, + &ett_gsm_map_tbcd_digits, + &ett_gsm_map_ussd_string, #include "packet-gsm_map-ettarr.c" }; |