diff options
author | João Valverde <joao.valverde@tecnico.ulisboa.pt> | 2015-10-05 11:53:07 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2015-10-05 18:10:48 +0000 |
commit | a459ac72a2c01ec12d186907837aff891e3e223b (patch) | |
tree | 01328590650245061ae8d78c02f14c8fbdde0381 /epan/dissectors/packet-dccp.c | |
parent | d52322efb3ab782871312950876803334ec018b9 (diff) |
Add BASE_PT_ field display types
Avoid displaying duplicate port numbers with transport name resolution disabled and
make some dissector code simpler.
Introduces port_with_resolution_to_str_buf() function and amends UDP/TCP/DCCP/SCTP to
use the new field display type.
Change-Id: Ifb97810b9c669ccbb1a310a2c0ffd6e2b63af210
Reviewed-on: https://code.wireshark.org/review/10625
Petri-Dish: Michael Mann <mmann78@netscape.net>
Reviewed-by: João Valverde <j@v6e.pt>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-dccp.c')
-rw-r--r-- | epan/dissectors/packet-dccp.c | 59 |
1 files changed, 26 insertions, 33 deletions
diff --git a/epan/dissectors/packet-dccp.c b/epan/dissectors/packet-dccp.c index 0caef2e8b6..9e6dd39788 100644 --- a/epan/dissectors/packet-dccp.c +++ b/epan/dissectors/packet-dccp.c @@ -56,6 +56,8 @@ #include <epan/expert.h> #include <epan/conversation.h> #include <epan/tap.h> +#include <wsutil/utf8_entities.h> + #include "packet-dccp.h" /* @@ -607,6 +609,7 @@ dissect_dccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ guint advertised_dccp_header_len = 0; guint options_len = 0; e_dccphdr *dccph; + gchar *src_port_str, *dst_port_str; dccph = wmem_new0(wmem_packet_scope(), e_dccphdr); @@ -618,43 +621,33 @@ dissect_dccp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_ col_set_str(pinfo->cinfo, COL_PROTOCOL, "DCCP"); col_clear(pinfo->cinfo, COL_INFO); - dccp_item = proto_tree_add_item(tree, proto_dccp, tvb, offset, -1, ENC_NA); - dccp_tree = proto_item_add_subtree(dccp_item, ett_dccp); - /* Extract generic header */ dccph->sport = tvb_get_ntohs(tvb, offset); - proto_tree_add_uint_format_value(dccp_tree, hf_dccp_srcport, tvb, - offset, 2, dccph->sport, - "%s (%u)", - dccp_port_to_display(wmem_packet_scope(), dccph->sport), - dccph->sport); + dccph->dport = tvb_get_ntohs(tvb, offset); + + src_port_str = dccp_port_to_display(wmem_packet_scope(), dccph->sport); + dst_port_str = dccp_port_to_display(wmem_packet_scope(), dccph->dport); + col_add_lstr(pinfo->cinfo, COL_INFO, + src_port_str, + " "UTF8_RIGHTWARDS_ARROW" ", + dst_port_str, + COL_ADD_LSTR_TERMINATOR); + + dccp_item = proto_tree_add_item(tree, proto_dccp, tvb, offset, -1, ENC_NA); if (dccp_summary_in_tree) { - proto_item_append_text(dccp_item, ", Src Port: %s (%u)", - dccp_port_to_display(wmem_packet_scope(), dccph->sport), dccph->sport); + proto_item_append_text(dccp_item, ", Src Port: %s (%u), Dst Port: %s (%u)", + src_port_str, dccph->sport, + dst_port_str, dccph->dport); } - col_add_fstr(pinfo->cinfo, COL_INFO, - "%s ", dccp_port_to_display(wmem_packet_scope(), dccph->sport)); - hidden_item = - proto_tree_add_uint(dccp_tree, hf_dccp_port, tvb, offset, 2, - dccph->sport); + dccp_tree = proto_item_add_subtree(dccp_item, ett_dccp); + + proto_tree_add_item(dccp_tree, hf_dccp_srcport, tvb, offset, 2, ENC_BIG_ENDIAN); + hidden_item = proto_tree_add_item(dccp_tree, hf_dccp_port, tvb, offset, 2, ENC_BIG_ENDIAN); PROTO_ITEM_SET_HIDDEN(hidden_item); offset += 2; - dccph->dport = tvb_get_ntohs(tvb, offset); - proto_tree_add_uint_format_value(dccp_tree, hf_dccp_dstport, tvb, - offset, 2, dccph->dport, - "%s (%u)", - dccp_port_to_display(wmem_packet_scope(), dccph->dport), - dccph->dport); - if (dccp_summary_in_tree) { - proto_item_append_text(dccp_item, ", Dst Port: %s (%u)", - dccp_port_to_display(wmem_packet_scope(), dccph->dport), dccph->dport); - } - col_append_fstr(pinfo->cinfo, COL_INFO, " > %s", - dccp_port_to_display(wmem_packet_scope(), dccph->dport)); - hidden_item = - proto_tree_add_uint(dccp_tree, hf_dccp_port, tvb, offset, 2, - dccph->dport); + proto_tree_add_item(dccp_tree, hf_dccp_dstport, tvb, offset, 2, ENC_BIG_ENDIAN); + hidden_item = proto_tree_add_item(dccp_tree, hf_dccp_port, tvb, offset, 2, ENC_BIG_ENDIAN); PROTO_ITEM_SET_HIDDEN(hidden_item); offset += 2; @@ -1054,7 +1047,7 @@ proto_register_dccp(void) &hf_dccp_srcport, { "Source Port", "dccp.srcport", - FT_UINT16, BASE_DEC, NULL, 0x0, + FT_UINT16, BASE_PT_DCCP, NULL, 0x0, NULL, HFILL } }, @@ -1062,7 +1055,7 @@ proto_register_dccp(void) &hf_dccp_dstport, { "Destination Port", "dccp.dstport", - FT_UINT16, BASE_DEC, NULL, 0x0, + FT_UINT16, BASE_PT_DCCP, NULL, 0x0, NULL, HFILL } }, @@ -1070,7 +1063,7 @@ proto_register_dccp(void) &hf_dccp_port, { "Source or Destination Port", "dccp.port", - FT_UINT16, BASE_DEC, NULL, 0x0, + FT_UINT16, BASE_PT_DCCP, NULL, 0x0, NULL, HFILL } }, |