diff options
author | Pascal Quantin <pascal.quantin@gmail.com> | 2017-04-24 22:52:52 +0200 |
---|---|---|
committer | Pascal Quantin <pascal.quantin@gmail.com> | 2017-04-25 05:04:03 +0000 |
commit | dcaad43e1f65e8b99cbfed8b1b410e01eb1cad80 (patch) | |
tree | bda0b57edf558ed17bba08ce492afc82cd7562b5 /epan/dissectors/packet-gsm_sms.c | |
parent | cb089dd2ff20cd7cc165de303de075bcb6be3afc (diff) |
GSM SMS: add more lower layer info for reassembly and switch preference to on by default
Change-Id: I3faf15c326d14e246975094ad31431eba2404d8c
Ping-Bug: 13592
Reviewed-on: https://code.wireshark.org/review/21320
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-gsm_sms.c')
-rw-r--r-- | epan/dissectors/packet-gsm_sms.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/epan/dissectors/packet-gsm_sms.c b/epan/dissectors/packet-gsm_sms.c index dfed6ccb1a..b784008688 100644 --- a/epan/dissectors/packet-gsm_sms.c +++ b/epan/dissectors/packet-gsm_sms.c @@ -257,7 +257,7 @@ static expert_field ei_gsm_sms_unexpected_data_length = EI_INIT; static expert_field ei_gsm_sms_message_dissector_not_implemented = EI_INIT; static gboolean reassemble_sms = TRUE; -static gboolean reassemble_sms_with_lower_layers_info = FALSE; +static gboolean reassemble_sms_with_lower_layers_info = TRUE; static proto_tree *g_tree; /* 3GPP TS 23.038 version 7.0.0 Release 7 @@ -1974,15 +1974,24 @@ dis_field_ud(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset if (addr == NULL) addr = ""; /* check if lower layers provide additional info */ - gsm_map_packet_info = (gsm_map_packet_info_t*)p_get_proto_data(pinfo->pool, pinfo, proto_gsm_map, 0); - if (gsm_map_packet_info && reassemble_sms_with_lower_layers_info) { + if (reassemble_sms_with_lower_layers_info) { addr_info_strbuf = wmem_strbuf_new(wmem_packet_scope(), addr); - if (gsm_map_packet_info->rp_oa_id == GSM_MAP_RP_OA_MSISDN) - wmem_strbuf_append(addr_info_strbuf, gsm_map_packet_info->rp_oa_str); - else if (gsm_map_packet_info->rp_da_id == GSM_MAP_RP_DA_IMSI) - wmem_strbuf_append(addr_info_strbuf, gsm_map_packet_info->rp_da_str); - else if (gsm_map_packet_info->rp_da_id == GSM_MAP_RP_DA_LMSI) - wmem_strbuf_append(addr_info_strbuf, gsm_map_packet_info->rp_da_str); + if ((gsm_map_packet_info = (gsm_map_packet_info_t*)p_get_proto_data(pinfo->pool, pinfo, proto_gsm_map, 0)) != NULL) { + if (gsm_map_packet_info->rp_oa_id == GSM_MAP_RP_OA_MSISDN) + wmem_strbuf_append(addr_info_strbuf, gsm_map_packet_info->rp_oa_str); + else if (gsm_map_packet_info->rp_da_id == GSM_MAP_RP_DA_IMSI) + wmem_strbuf_append(addr_info_strbuf, gsm_map_packet_info->rp_da_str); + else if (gsm_map_packet_info->rp_da_id == GSM_MAP_RP_DA_LMSI) + wmem_strbuf_append(addr_info_strbuf, gsm_map_packet_info->rp_da_str); + } else if (proto_is_frame_protocol(pinfo->layers, "sip")) { + wmem_strbuf_append(addr_info_strbuf, "SIP"); + } else if (proto_is_frame_protocol(pinfo->layers, "gsm_a.rp")) { + wmem_strbuf_append(addr_info_strbuf, "RP"); + } else if (proto_is_frame_protocol(pinfo->layers, "etsi_cat")) { + wmem_strbuf_append(addr_info_strbuf, "CAT"); + } else if (proto_is_frame_protocol(pinfo->layers, "mbim")) { + wmem_strbuf_append(addr_info_strbuf, "MBIM"); + } addr_info = wmem_strbuf_finalize(addr_info_strbuf); } else { addr_info = addr; |