aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-01-30 00:02:20 +0100
committerPascal Quantin <pascal.quantin@gmail.com>2015-01-30 11:19:29 +0000
commit14a869c705f91bc4e4fa056380b865f7ba02cc78 (patch)
tree52b50438040bf1e7fb2b15bd3bc066dc692c3a28 /asn1
parenta614212aa80a831f91ec3a2b17760d4f2c02bdeb (diff)
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')
-rw-r--r--asn1/gsm_map/gsm_map.cnf30
-rw-r--r--asn1/gsm_map/packet-gsm_map-template.c4
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 = &parameter_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 = &parameter_tvb
@@ -541,29 +543,31 @@ actx->pinfo->p2p_dir = P2P_DIR_RECV;
#.FN_BODY USSD-String VAL_PTR = &parameter_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 = &parameter_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"
};