[NETFILTER]: nf_conntrack: use hashtable for expectations
authorPatrick McHardy <kaber@trash.net>
Sun, 8 Jul 2007 05:33:47 +0000 (22:33 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Wed, 11 Jul 2007 05:17:59 +0000 (22:17 -0700)
commita71c085562bcc99e8b711cab4222bff1f6e955da
tree7de563d406e8e9e44065b53c664f837f97f8b3fe
parente9c1b084e17ca225b6be731b819308ee0f9e04b8
[NETFILTER]: nf_conntrack: use hashtable for expectations

Currently all expectations are kept on a global list that

- needs to be searched for every new conncetion
- needs to be walked for evicting expectations when a master connection
  has reached its limit
- needs to be walked on connection destruction for connections that
  have open expectations

This is obviously not good, especially when considering helpers like
H.323 that register *lots* of expectations and can set up permanent
expectations, but it also allows for an easy DoS against firewalls
using connection tracking helpers.

Use a hashtable for expectations to avoid incurring the search overhead
for every new connection. The default hash size is 1/256 of the conntrack
hash table size, this can be overriden using a module parameter.

This patch only introduces the hash table for expectation lookups and
keeps other users to reduce the noise, the following patches will get
rid of it completely.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/netfilter/nf_conntrack_core.h
include/net/netfilter/nf_conntrack_expect.h
net/netfilter/nf_conntrack_expect.c