mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
[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>
This commit is contained in:
committed by
David S. Miller
parent
ee2e6841b9
commit
16a6677fdf
@@ -225,16 +225,7 @@ static inline void dst_set_expires(struct dst_entry *dst, int timeout)
|
||||
/* Output packet to network from transport. */
|
||||
static inline int dst_output(struct sk_buff *skb)
|
||||
{
|
||||
int err;
|
||||
|
||||
for (;;) {
|
||||
err = skb->dst->output(skb);
|
||||
|
||||
if (likely(err == 0))
|
||||
return err;
|
||||
if (unlikely(err != NET_XMIT_BYPASS))
|
||||
return err;
|
||||
}
|
||||
return skb->dst->output(skb);
|
||||
}
|
||||
|
||||
/* Input packet from network to transport. */
|
||||
|
||||
Reference in New Issue
Block a user