Commit | Line | Data |
---|---|---|
9fb9cbb1 YK |
1 | #ifndef _NF_CONNTRACK_TCP_H |
2 | #define _NF_CONNTRACK_TCP_H | |
3 | /* TCP tracking. */ | |
4 | ||
5 | /* This is exposed to userspace (ctnetlink) */ | |
6 | enum tcp_conntrack { | |
7 | TCP_CONNTRACK_NONE, | |
8 | TCP_CONNTRACK_SYN_SENT, | |
9 | TCP_CONNTRACK_SYN_RECV, | |
10 | TCP_CONNTRACK_ESTABLISHED, | |
11 | TCP_CONNTRACK_FIN_WAIT, | |
12 | TCP_CONNTRACK_CLOSE_WAIT, | |
13 | TCP_CONNTRACK_LAST_ACK, | |
14 | TCP_CONNTRACK_TIME_WAIT, | |
15 | TCP_CONNTRACK_CLOSE, | |
16 | TCP_CONNTRACK_LISTEN, | |
17 | TCP_CONNTRACK_MAX, | |
18 | TCP_CONNTRACK_IGNORE | |
19 | }; | |
20 | ||
21 | /* Window scaling is advertised by the sender */ | |
22 | #define IP_CT_TCP_FLAG_WINDOW_SCALE 0x01 | |
23 | ||
24 | /* SACK is permitted by the sender */ | |
25 | #define IP_CT_TCP_FLAG_SACK_PERM 0x02 | |
26 | ||
27 | /* This sender sent FIN first */ | |
28 | #define IP_CT_TCP_FLAG_CLOSE_INIT 0x03 | |
29 | ||
30 | #ifdef __KERNEL__ | |
31 | ||
32 | struct ip_ct_tcp_state { | |
33 | u_int32_t td_end; /* max of seq + len */ | |
34 | u_int32_t td_maxend; /* max of ack + max(win, 1) */ | |
35 | u_int32_t td_maxwin; /* max(win) */ | |
36 | u_int8_t td_scale; /* window scale factor */ | |
37 | u_int8_t loose; /* used when connection picked up from the middle */ | |
38 | u_int8_t flags; /* per direction options */ | |
39 | }; | |
40 | ||
41 | struct ip_ct_tcp | |
42 | { | |
43 | struct ip_ct_tcp_state seen[2]; /* connection parameters per direction */ | |
44 | u_int8_t state; /* state of the connection (enum tcp_conntrack) */ | |
45 | /* For detecting stale connections */ | |
46 | u_int8_t last_dir; /* Direction of the last packet (enum ip_conntrack_dir) */ | |
47 | u_int8_t retrans; /* Number of retransmitted packets */ | |
48 | u_int8_t last_index; /* Index of the last packet */ | |
49 | u_int32_t last_seq; /* Last sequence number seen in dir */ | |
50 | u_int32_t last_ack; /* Last sequence number seen in opposite dir */ | |
51 | u_int32_t last_end; /* Last seq + len */ | |
52 | }; | |
53 | ||
54 | #endif /* __KERNEL__ */ | |
55 | ||
56 | #endif /* _NF_CONNTRACK_TCP_H */ |