aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-tcp.h
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-tcp.h')
-rw-r--r--epan/dissectors/packet-tcp.h32
1 files changed, 27 insertions, 5 deletions
diff --git a/epan/dissectors/packet-tcp.h b/epan/dissectors/packet-tcp.h
index 043d398a29..071d5c7709 100644
--- a/epan/dissectors/packet-tcp.h
+++ b/epan/dissectors/packet-tcp.h
@@ -13,6 +13,7 @@
#include "ws_symbol_export.h"
#include <epan/conversation.h>
+#include <epan/reassemble.h>
#include <epan/wmem_scopes.h>
#ifdef __cplusplus
@@ -26,9 +27,9 @@ extern "C" {
#define TH_PUSH 0x0008
#define TH_ACK 0x0010
#define TH_URG 0x0020
-#define TH_ECN 0x0040
+#define TH_ECE 0x0040
#define TH_CWR 0x0080
-#define TH_NS 0x0100
+#define TH_AE 0x0100
#define TH_RES 0x0E00 /* 3 reserved bits */
#define TH_MASK 0x0FFF
@@ -88,6 +89,7 @@ typedef struct tcpheader {
guint16 th_sport;
guint16 th_dport;
guint8 th_hlen;
+ gboolean th_use_ace;
guint16 th_flags;
guint32 th_stream; /* this stream index field is included to help differentiate when address/port pairs are reused */
address ip_src;
@@ -143,6 +145,9 @@ tcp_dissect_pdus(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
guint (*get_pdu_len)(packet_info *, tvbuff_t *, int, void*),
dissector_t dissect_pdu, void* dissector_data);
+extern const reassembly_table_functions
+tcp_reassembly_table_functions;
+
extern struct tcp_multisegment_pdu *
pdu_store_sequencenumber_of_next_pdu(packet_info *pinfo, guint32 seq, guint32 nxtpdu, wmem_tree_t *multisegment_pdus);
@@ -166,6 +171,9 @@ struct tcp_acked {
guint32 dupack_frame; /* dup ack to frame # */
guint32 bytes_in_flight; /* number of bytes in flight */
guint32 push_bytes_sent; /* bytes since the last PSH flag */
+
+ guint32 new_data_seq; /* For segments with old data,
+ where new data starts */
};
/* One instance of this structure is created for each pdu that spans across
@@ -296,14 +304,14 @@ typedef enum {
typedef struct tcp_analyze_seq_flow_info_t {
tcp_unacked_t *segments;/* List of segments for which we haven't seen an ACK */
guint16 segment_count; /* How many unacked segments we're currently storing */
- guint32 lastack; /* Last seen ack for the reverse flow */
+ guint32 lastack; /* Last seen ack for the reverse flow */
nstime_t lastacktime; /* Time of the last ack packet */
guint32 lastnondupack; /* frame number of last seen non dupack */
guint32 dupacknum; /* dupack number */
guint32 nextseq; /* highest seen nextseq */
guint32 maxseqtobeacked;/* highest seen continuous seq number (without hole in the stream) from the fwd party,
* this is the maximum seq number that can be acked by the rev party in normal case.
- * If the rev party sends an ACK beyond this seq number it indicates TCP_A_ACK_LOST_PACKET contition */
+ * If the rev party sends an ACK beyond this seq number it indicates TCP_A_ACK_LOST_PACKET condition */
guint32 nextseqframe; /* frame number for segment with highest
* sequence number
*/
@@ -312,6 +320,8 @@ typedef struct tcp_analyze_seq_flow_info_t {
* fast retransmissions and outoforder
*/
+ guint8 lastacklen; /* length of the last fwd ACK packet - 0 means pure ACK */
+
/*
* Handling of SACK blocks
* Copied from tcpheader
@@ -368,6 +378,9 @@ typedef struct _tcp_flow_t {
*/
wmem_tree_t *multisegment_pdus;
+ /* A sorted list of pending out-of-order segments. */
+ wmem_list_t *ooo_segments;
+
/* Process info, currently discovered via IPFIX */
tcp_process_info_t* process_info;
@@ -387,7 +400,7 @@ struct mptcp_analysis {
mptcp_meta_flow_t meta_flow[2];
guint32 stream; /* Keep track of unique mptcp stream (per MP_CAPABLE handshake) */
- guint8 hmac_algo; /* hmac decided after negociation */
+ guint8 hmac_algo; /* hmac decided after negotiation */
wmem_list_t* subflows; /* List of subflows (tcp_analysis) */
/* identifier of the tcp stream that saw the initial 3WHS with MP_CAPABLE option */
@@ -480,6 +493,14 @@ struct tcp_analysis {
* connection or left before it was terminated explicitly
*/
guint8 conversation_completeness;
+
+ /* Stores the value as a String to be displayed in the appropriate field */
+ gchar *conversation_completeness_str;
+
+ /* Track AccECN support */
+ gboolean had_acc_ecn_setup_syn;
+ gboolean had_acc_ecn_setup_syn_ack;
+ gboolean had_acc_ecn_option;
};
/* Structure that keeps per packet data. First used to be able
@@ -488,6 +509,7 @@ struct tcp_analysis {
*/
struct tcp_per_packet_data_t {
nstime_t ts_del;
+ guint8 tcp_snd_manual_analysis;
};
/* Structure that keeps per packet data. Some operations are cpu-intensive and are