Commit Graph

26 Commits

Author SHA1 Message Date
Alexander Gryanko 9fff62e2a8 Qt, http2: Add Follow HTTP/2 Stream functionality
The HTTP/2 protocol multiplexes a single TCP connection into multiple
independent streams. The Follow TCP output can interleave multiple
HTTP/2 streams, making it harder to analyze a single HTTP/2 stream.

Add the ability to select HTTP/2 Streams within a TCP stream.
Internally, the HTTP/2 dissector now stores the known Stream IDs in a
set for every TCP session which allows an amortized O(n) lookup time for
the previous/next/max Stream ID.

[Peter: make the dissector responsible for clamping the HTTP/2 Stream ID
instead of the Qt code, that should permit future optimizations.]

Change-Id: I5d78f29904ae8f227ae36e1a883155c0ed719200
Reviewed-on: https://code.wireshark.org/review/32221
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Alexander Gryanko <xpahos@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2019-09-22 05:29:30 +00:00
Kevin Hogan f9207b0f6c Qt: Restore ability to display RTT by sequence number
Adds a checkbox to the TCP Stream Dialog's "Round-trip-time"
graph tab that allows user to choose sequence number
on the x-axis rather than time.

Bug: 13740
Change-Id: Iaf881318437c7eecd16cf6c1f8745283ce9b4a7d
Reviewed-on: https://code.wireshark.org/review/23376
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2017-09-20 08:43:02 +00:00
Roland Knall ddfc1d37cc Qt: Move utils to separate utils directory
Following the move for widgets directory, moving utils
to the utils directory. Guidelines for this directory are:

 - Generic use but not a widget
 - Utility functionality used by many classes
 
 Note: additionally all includes affected by this move have been changed
 to absolute path includes, instead of relative ones.

Change-Id: I019ae4b6e6f6d06a5745a63ed195edbd36fb936b
Reviewed-on: https://code.wireshark.org/review/22602
Petri-Dish: Roland Knall <rknall@gmail.com>
Reviewed-by: Roland Knall <rknall@gmail.com>
2017-07-26 10:11:55 +00:00
Stig Bjørlykke 7f96ffe5d4 Qt: Capitalize "Select SACKs" in tcptrace graph.
Change-Id: I2d0b433fec482431f6ccfe6f8fe6576193fc7773
Reviewed-on: https://code.wireshark.org/review/21863
Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
2017-05-31 18:54:05 +00:00
Kevin Hogan 799827b503 Qt: Add Goodput graph (ACK rate), and minor bug fixes
Add Goodput graph:
 - measures rate of ACKed bytes (including SACKed bytes)
 - useful to compare to throughput during slow-start to estimate
     bottleneck rate

Add graph selection checkboxes to multi-plot graphs:
 - most important for Throughput, since there are good cases
     for showing a subset of graphs at once
 - also added for Window Scale, since the addition is similar
     to that for Throughput

Minor bug fixes:
 - allow zoom rect to work when growing in any direction
     (not just right and up)
 - keep stray mouse clicks from re-doing a previous zoom
 - hide rubber band if active when keypress changes mouse mode
     to drag
 - allow mouse clicks on open space or grpah to return to default focus
     (i.e. focus on graph)

Change-Id: Id29356ceec810ebdbed9c3c0d8415416401fe643
Reviewed-on: https://code.wireshark.org/review/19718
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2017-01-22 14:41:49 +00:00
Kevin Hogan 3fae1366d1 Qt: add SACK graphs to tcptrace graph
Primarily, this adds visual indication of SACK blocks to tcptrace.
In addition:
 - cleaned up focus behavior for graph selector and spinboxes
 - added time-delay update to streamNumber spinBox
    (similar to behavior of maWindow spinBox)
 - changed ACK selection to select only SACKed responses
    (rather than all ACKs - SACKs seemed more useful to look at)

Change-Id: I47d9e98d54f14e4955008ecea791b77f805c8ba9
Reviewed-on: https://code.wireshark.org/review/19388
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2017-01-04 05:24:30 +00:00
Kevin Hogan 5f6732d74e Qt: minor updates to TCP stream dialog and throughput moving average
The time-based moving average code should use a constant window size
  as the denominator when calculating throughput.
Added QDoubleSpinbox widget to choose the time-based moving average size.
Also added (optional) ability to select ACK (reverse) packets as well as data
  packets when clicking on the base graph.
  (useful, for example, when examining SACK or DSACK packets)
Added CheckBox widget (with tooltip) for user to choose ACK selection

Change-Id: Ib3ba4f9be9e30aa8f3088b0b2d48b4ca214f7cc3
Reviewed-on: https://code.wireshark.org/review/19108
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2016-12-19 06:04:56 +00:00
Pascal Quantin ccca843a57 Activate word wrap for hintLabel defined as QLabel
Without this, a long hint string (like a wrong protocol name in the SSL UAT preference) will resize the window to match the string.
With this change, instead the hintLabel string is continuing on a new line to match currently configured window size

Change-Id: Ib8fcc7bd96585717f122b0921165c4d916442cb0
Reviewed-on: https://code.wireshark.org/review/11529
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2015-11-04 11:34:30 +00:00
Jim Young 460e1d8728 Qt: Horizontal- and vertical-only zoom modifier keys for IO and TCP Stream graphs.
Use lower case "x" or upper case "X" (Shift-X) to zoom in or out respectively only
the horizontal (X) axis.  Use lower case "y" or upper case "Y" (Shift-Y) to zoom
in or out respectively only the vertical (Y) axis.

Change-Id: I2f4de3c81795c289a626cc917d46ec0b1d620f49
Reviewed-on: https://code.wireshark.org/review/10894
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Gerald Combs <gerald@wireshark.org>
2015-10-10 01:15:14 +00:00
Jeff Morriss 14bc6d88b1 Remove some ununused/unmatched <resources/> tags.
Change-Id: I0f8e4381b27d1defeb5980692823d297d2f48bab
Reviewed-on: https://code.wireshark.org/review/5349
Petri-Dish: Jeff Morriss <jeff.morriss.ws@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-11-17 00:59:40 +00:00
Alexis La Goutte fca3746365 Enhance translation (rename toolTip to avoid similar string...)
Change-Id: I66a17871829a769fe6ffecb2becbb5f4cc7fa078
Reviewed-on: https://code.wireshark.org/review/1089
Reviewed-by: Gerald Combs <gerald@wireshark.org>
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-04-14 05:18:43 +00:00
Alexis La Goutte aa082ce786 Enhance translation (rename toolTip to avoid similar string...)
Change-Id: I23e30b445ac587e2702477afcf6b155ff21f23d4
Reviewed-on: https://code.wireshark.org/review/772
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2014-03-21 19:05:01 +00:00
Gerald Combs fc93c3a7c0 Sequence / flow diagram updates.
Add "Save As..." Add a context menu and keyboard shortcuts. Add a
tooltip.

svn path=/trunk/; revision=53263
2013-11-12 01:08:08 +00:00
Gerald Combs f36c727fb0 Add stream information to the hint label. Update our hint more often.
Add a "to do" list.

svn path=/trunk/; revision=52102
2013-09-16 17:28:42 +00:00
Gerald Combs 7f92257af8 More TCP stream graph updates.
Scan our segment list (and the capture file) once per stream. Switch the
stream selection control to a QSpinBox. Add graph type selection
actions. The context menu + shortcuts should now be complete. Add the
intitial tcptrace graph. Only ACKs and RWINs so far. A bunch of other
updates and fixes.

svn path=/trunk/; revision=52027
2013-09-13 22:29:05 +00:00
Gerald Combs 1ad683594d Add a context menu to the TCP stream graph which includes all of our
keyboard shortcuts.

svn path=/trunk/; revision=51996
2013-09-12 23:46:56 +00:00
Gerald Combs c1e9555ad3 Try different arrow glyphs.
svn path=/trunk/; revision=51992
2013-09-12 22:04:37 +00:00
Gerald Combs 07c3d057b8 Add previous/next stream navigation to the TCP stream graph dialog.
Add get_tcp_stream_count() to the TCP dissector and modify
graph_segment_list_get() to allow matching based solely on a stream.

Use text instead of icons for the mouse click behavior buttons. Remove
their PNG resources since we aren't using them any more. Fix setting the
cursor in the graph widget.

svn path=/trunk/; revision=51989
2013-09-12 21:37:47 +00:00
Gerald Combs 829c1ed25e Add the TCP window scaling graph. Add zoom selections.
Rename some methods. Add the ability to toggle time and sequence number
origins. Add more keyboard shortcuts. Comment out abs_secs abs_usecs in
the segment struct since it looks like we aren't using them. Make sure
we stay in the same TCP stream.

svn path=/trunk/; revision=51856
2013-09-09 01:40:06 +00:00
Gerald Combs abdac5bfac Add the TCP RTT graph.
Show the time values in ms instead of s. Add a button and keyboard
shortcut to switch the connection direction. Move more code to
tap-tcp-stream.c. Update our axis labels.

svn path=/trunk/; revision=51832
2013-09-08 01:25:27 +00:00
Gerald Combs 2dca89e7a3 Only add data points to the throughput graph if our time window has
advanced. Add a reset button.

svn path=/trunk/; revision=51811
2013-09-07 03:51:27 +00:00
Gerald Combs 03fd39d7f0 Throughput graph updates.
GTK+: Fix what appears to be an off-by-one error in the MA period (21
segments instead of 20). Throw away our initial segment length instead
of subtracting it from the moving sum, which skews the sum.

Qt: Add the througput graph. Use bits/s for the throughput y axis. Let
the user switch between graph types. The dialog hangs when doing this. I
haven't been able to track down the cause. Remove some unused code.

Both: Tell the user that we're using a 20 segment moving average. Move
more routines to tap-tcp-stream.[ch].

svn path=/trunk/; revision=51759
2013-09-04 23:15:59 +00:00
Gerald Combs 1d27c70838 Add an item tracer to the TCP stream graph. Enable packet selection.
QCustomPlot data sets are made up of keys (x axis by default) and values
(y axis). It looks like we can have multiple values for a given key
(i.e. we can show multiple sequence numbers for a given timestamp) but
QCPItemTracers can only be positioned by a key and not a key+value pair.
This makes our graph selection behavior a bit different compared to the
GTK+ version. We can only select one segment for a give timestamp but
our selection targets are much larger (the height of the graph).

Add a map for segment data so we don't have to iterate to find them. Use
UTF8_RIGHTWARDS_ARROW where appropriate. Set a window title. Tell the
user what will happen if he or she clicks. Disable graph selection.

svn path=/trunk/; revision=51604
2013-08-30 21:15:24 +00:00
Gerald Combs 25392c73f4 Let the QCustomPlot widget have focus.
svn path=/trunk/; revision=51555
2013-08-28 00:23:01 +00:00
Gerald Combs 66b8223688 Add initial mouse and keyboard controls. QCustomPlot uses different
mouse interactions than the GTK+ version, but they seem to match modern
UI conventions better. The keyboard shortcuts have been changed to match
modern UI conventions as well, but I'll try to support the old shortcuts
as much as possible.

svn path=/trunk/; revision=51554
2013-08-27 23:28:35 +00:00
Gerald Combs 6d731a3e79 Add TCP sequence number (Stevens-style) graphs.
Add the QCustomPlot widget. Thanks to Emanuel Eichhammer for granting a
license change. Move some common code from ui/gtk/tcp_graph.c to
ui/tap-tcp-stream.[ch]. Get rid of tcp_graph_selected_packet_enabled().
It was only used in the menu code and didn't match what we were doing
elsewhere.

Still quite a bit of work to do but it's a promising start.

svn path=/trunk/; revision=51538
2013-08-27 18:13:20 +00:00