diff options
author | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2012-11-12 03:55:46 +0000 |
---|---|---|
committer | Martin Mathieson <martin.r.mathieson@googlemail.com> | 2012-11-12 03:55:46 +0000 |
commit | 0aebd579e3be3595a1324bcd3bbe688e60cf5e46 (patch) | |
tree | 0dae3163baafaf55feee706b07e15d4812b46741 /epan/dissectors/packet-tcp.h | |
parent | 748f35f1e154c7c4bd26758f78e85b7e4b02e6ea (diff) |
Show SACK information in TCP graphs. Also add a generated field for the
number of SACK ranges found in the SACK option.
This involved extending the IP options framework to include an extra
void* data field, which in the case of TCP is filled in with the tap
struct - other users currently pass NULL.
I first implemented the graph to sort the SACK ranges and show (in red)
the unacknowledged regions between them, but this became confusing where
the number of ranges is limited by TCP padding bytes. i.e. you can't
tell how many SACKs could have been encoded, so some of the gaps between
ranges may already have been received.
svn path=/trunk/; revision=46006
Diffstat (limited to 'epan/dissectors/packet-tcp.h')
-rw-r--r-- | epan/dissectors/packet-tcp.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/epan/dissectors/packet-tcp.h b/epan/dissectors/packet-tcp.h index 5e35abaddc..f2e7e92a91 100644 --- a/epan/dissectors/packet-tcp.h +++ b/epan/dissectors/packet-tcp.h @@ -62,6 +62,12 @@ typedef struct tcpheader { guint32 th_stream; /* this stream index field is included to help differentiate when address/port pairs are reused */ address ip_src; address ip_dst; + + /* This is the absolute maximum we could find in TCP options (RFC2018, section 3) */ + #define MAX_TCP_SACK_RANGES 4 + guint8 num_sack_ranges; + guint32 sack_left_edge[MAX_TCP_SACK_RANGES]; + guint32 sack_right_edge[MAX_TCP_SACK_RANGES]; } tcp_info_t; /* |