aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/net/act_api.h
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2022-08-26 15:32:24 +0200
committerFlorian Westphal <fw@strlen.de>2022-09-07 15:43:51 +0200
commitd9a6f0d0df1899ff9086a57abc600e414f4b8cdd (patch)
treef2470ad7b4cd6b21b2b22049d0163d0b143ab2bd /include/net/act_api.h
parentMerge branch 'macsec-offload-mlx5' (diff)
downloadwireguard-linux-d9a6f0d0df1899ff9086a57abc600e414f4b8cdd.tar.xz
wireguard-linux-d9a6f0d0df1899ff9086a57abc600e414f4b8cdd.zip
netfilter: conntrack: prepare tcp_in_window for ternary return value
tcp_in_window returns true if the packet is in window and false if it is not. If its outside of window, packet will be treated as INVALID. There are corner cases where the packet should still be tracked, because rulesets may drop or log such packets, even though they can occur during normal operation, such as overly delayed acks. In extreme cases, connection may hang forever because conntrack state differs from real state. There is no retransmission for ACKs. In case of ACK loss after conntrack processing, its possible that a connection can be stuck because the actual retransmits are considered stale ("SEQ is under the lower bound (already ACKed data retransmitted)". The problem is made worse by carrier-grade-nat which can also result in stale packets from old connections to get treated as 'recent' packets in conntrack (it doesn't support tcp timestamps at this time). Prepare tcp_in_window() to return an enum that tells the desired action (in-window/accept, bogus/drop). A third action (accept the packet as in-window, but do not change state) is added in a followup patch. Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'include/net/act_api.h')
0 files changed, 0 insertions, 0 deletions