[XFRM]: Netfilter IPsec output hooks
authorPatrick McHardy <kaber@trash.net>
Sat, 7 Jan 2006 07:01:48 +0000 (23:01 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Sat, 7 Jan 2006 20:57:28 +0000 (12:57 -0800)
commit16a6677fdf1d1194f688f8291b06fbaff248c353
tree61badedc44ed88eb8f39e082d1abf114252cc686
parentee2e6841b934d76cb944a3390bbea84da777d4fa
[XFRM]: Netfilter IPsec output hooks

Call netfilter hooks before IPsec transforms. Packets visit the
FORWARD/LOCAL_OUT and POST_ROUTING hook before the first encapsulation
and the LOCAL_OUT and POST_ROUTING hook before each following tunnel mode
transform.

Patch from Herbert Xu <herbert@gondor.apana.org.au>:

Move the loop from dst_output into xfrm4_output/xfrm6_output since they're
the only ones who need to it. xfrm{4,6}_output_one() processes the first SA
all subsequent transport mode SAs and is called in a loop that calls the
netfilter hooks between each two calls.

In order to avoid the tail call issue, I've added the inline function
nf_hook which is nf_hook_slow plus the empty list check.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netfilter.h
include/net/dst.h
net/ipv4/xfrm4_output.c
net/ipv6/xfrm6_output.c