netfilter: nat: convert nat bysrc hash to rhashtable
authorFlorian Westphal <fw@strlen.de>
Tue, 5 Jul 2016 10:07:24 +0000 (12:07 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 11 Jul 2016 10:07:57 +0000 (12:07 +0200)
commit870190a9ec9075205c0fa795a09fa931694a3ff1
treef64a75c7d307fe83217effade49522029ebdaa30
parent7c9664351980aaa6a4b8837a314360b3a4ad382a
netfilter: nat: convert nat bysrc hash to rhashtable

It did use a fixed-size bucket list plus single lock to protect add/del.

Unlike the main conntrack table we only need to add and remove keys.
Convert it to rhashtable to get table autosizing and per-bucket locking.

The maximum number of entries is -- as before -- tied to the number of
conntracks so we do not need another upperlimit.

The change does not handle rhashtable_remove_fast error, only possible
"error" is -ENOENT, and that is something that can happen legitimetely,
e.g. because nat module was inserted at a later time and no src manip
took place yet.

Tested with http-client-benchmark + httpterm with DNAT and SNAT rules
in place.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/net/netfilter/nf_conntrack.h
include/net/netfilter/nf_nat.h
net/netfilter/nf_nat_core.c