]> asedeno.scripts.mit.edu Git - linux.git/commit
netfilter: nf_conntrack: resolve clash for matching conntracks
authorMartynas Pumputis <martynas@weave.works>
Mon, 2 Jul 2018 14:52:14 +0000 (16:52 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 18 Jul 2018 09:26:38 +0000 (11:26 +0200)
commited07d9a021df6da53456663a76999189badc432a
tree71792f8056beb0e7b8ba7192ef437bf2debbc97c
parent5c789e131cbb997a528451564ea4613e812fc718
netfilter: nf_conntrack: resolve clash for matching conntracks

This patch enables the clash resolution for NAT (disabled in
"590b52e10d41") if clashing conntracks match (i.e. both tuples are equal)
and a protocol allows it.

The clash might happen for a connections-less protocol (e.g. UDP) when
two threads in parallel writes to the same socket and consequent calls
to "get_unique_tuple" return the same tuples (incl. reply tuples).

In this case it is safe to perform the resolution, as the losing CT
describes the same mangling as the winning CT, so no modifications to
the packet are needed, and the result of rules traversal for the loser's
packet stays valid.

Signed-off-by: Martynas Pumputis <martynas@weave.works>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_conntrack_core.c