blob: 22db9614b584ad0d5b6bc174c2eb3613a8b73dfd [file] [log] [blame]
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -08001#ifndef _NF_CONNTRACK_TCP_H
2#define _NF_CONNTRACK_TCP_H
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -08003
David Howells94d0ec52012-10-09 09:48:54 +01004#include <uapi/linux/netfilter/nf_conntrack_tcp.h>
Arnd Bergmann60c195c2009-02-26 00:51:43 +01005
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -08006
7struct ip_ct_tcp_state {
8 u_int32_t td_end; /* max of seq + len */
9 u_int32_t td_maxend; /* max of ack + max(win, 1) */
10 u_int32_t td_maxwin; /* max(win) */
Jozsef Kadlecsikbfcaa5022009-05-25 17:23:15 +020011 u_int32_t td_maxack; /* max of ack */
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080012 u_int8_t td_scale; /* window scale factor */
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080013 u_int8_t flags; /* per direction options */
14};
15
Eric Dumazetd94d9fe2009-11-04 09:50:58 -080016struct ip_ct_tcp {
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080017 struct ip_ct_tcp_state seen[2]; /* connection parameters per direction */
18 u_int8_t state; /* state of the connection (enum tcp_conntrack) */
19 /* For detecting stale connections */
20 u_int8_t last_dir; /* Direction of the last packet (enum ip_conntrack_dir) */
21 u_int8_t retrans; /* Number of retransmitted packets */
22 u_int8_t last_index; /* Index of the last packet */
23 u_int32_t last_seq; /* Last sequence number seen in dir */
24 u_int32_t last_ack; /* Last sequence number seen in opposite dir */
25 u_int32_t last_end; /* Last seq + len */
George Hansperc1fe3ca2006-09-20 12:03:23 -070026 u_int16_t last_win; /* Last window advertisement seen in dir */
Pablo Neira Ayusoc4832c72009-11-23 10:34:39 +010027 /* For SYN packets while we may be out-of-sync */
28 u_int8_t last_wscale; /* Last window scaling factor seen */
29 u_int8_t last_flags; /* Last flags set */
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080030};
31
Yasuyuki Kozakai9fb9cbb2005-11-09 16:38:16 -080032#endif /* _NF_CONNTRACK_TCP_H */