aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorJakub Zawadzki <darkjames-ws@darkjames.pl>2015-06-08 22:22:55 -0400
committerMichael Mann <mmann78@netscape.net>2015-06-10 14:52:26 +0000
commit547059d82655e4dd0577e8a869b9c23be093419c (patch)
tree1d3d827ccfba2fa4968055e0071331409942c189 /epan
parent963db3ad1fcce119a0eba0816f2858213e00c45f (diff)
Provide port names for TCP ports so they can be used in filter expressions.
Bug: 594 Change-Id: Ib41c4c753e24ac78b39463ab1daae7fd00631230 Reviewed-on: https://code.wireshark.org/review/8851 Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-tcp.c30
1 files changed, 27 insertions, 3 deletions
diff --git a/epan/dissectors/packet-tcp.c b/epan/dissectors/packet-tcp.c
index 82a6fa6ff1..3cfbb35470 100644
--- a/epan/dissectors/packet-tcp.c
+++ b/epan/dissectors/packet-tcp.c
@@ -5110,18 +5110,20 @@ tcp_init(void)
void
proto_register_tcp(void)
{
+ static value_string tcp_ports[65536+1];
+
static hf_register_info hf[] = {
{ &hf_tcp_srcport,
- { "Source Port", "tcp.srcport", FT_UINT16, BASE_DEC, NULL, 0x0,
+ { "Source Port", "tcp.srcport", FT_UINT16, BASE_DEC, VALS(tcp_ports), 0x0,
NULL, HFILL }},
{ &hf_tcp_dstport,
- { "Destination Port", "tcp.dstport", FT_UINT16, BASE_DEC, NULL, 0x0,
+ { "Destination Port", "tcp.dstport", FT_UINT16, BASE_DEC, VALS(tcp_ports), 0x0,
NULL, HFILL }},
{ &hf_tcp_port,
- { "Source or Destination Port", "tcp.port", FT_UINT16, BASE_DEC, NULL, 0x0,
+ { "Source or Destination Port", "tcp.port", FT_UINT16, BASE_DEC, VALS(tcp_ports), 0x0,
NULL, HFILL }},
{ &hf_tcp_stream,
@@ -5962,6 +5964,28 @@ proto_register_tcp(void)
module_t *tcp_module;
expert_module_t* expert_tcp;
+ {
+ int i, j;
+ gboolean transport_name_old = gbl_resolv_flags.transport_name;
+
+ gbl_resolv_flags.transport_name = TRUE;
+ for (i = 0, j = 0; i <= 65535; i++) {
+ const char *serv = tcp_port_to_display(NULL, i);
+
+ if (serv) {
+ value_string *p = &tcp_ports[j++];
+
+ p->value = i;
+ p->strptr = serv;
+ }
+ }
+ /* NULL terminate */
+ tcp_ports[j].value = 0;
+ tcp_ports[j].strptr = NULL;
+
+ gbl_resolv_flags.transport_name = transport_name_old;
+ }
+
proto_tcp = proto_register_protocol("Transmission Control Protocol", "TCP", "tcp");
register_dissector("tcp", dissect_tcp, proto_tcp);
proto_register_field_array(proto_tcp, hf, array_length(hf));