diff options
author | Jakub Zawadzki <darkjames-ws@darkjames.pl> | 2015-06-08 22:22:55 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2015-06-10 14:52:26 +0000 |
commit | 547059d82655e4dd0577e8a869b9c23be093419c (patch) | |
tree | 1d3d827ccfba2fa4968055e0071331409942c189 /epan | |
parent | 963db3ad1fcce119a0eba0816f2858213e00c45f (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.c | 30 |
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)); |