aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-dccp.c
diff options
context:
space:
mode:
authorJoão Valverde <joao.valverde@tecnico.ulisboa.pt>2015-10-05 11:53:07 +0100
committerMichael Mann <mmann78@netscape.net>2015-10-05 18:10:48 +0000
commita459ac72a2c01ec12d186907837aff891e3e223b (patch)
tree01328590650245061ae8d78c02f14c8fbdde0381 /epan/dissectors/packet-dccp.c
parentd52322efb3ab782871312950876803334ec018b9 (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.c59
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
}
},