[NETFILTER]: Fix xfrm lookup in ip_route_me_harder/ip6_route_me_harder
authorPatrick McHardy <kaber@trash.net>
Sat, 7 Jan 2006 07:04:54 +0000 (23:04 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Sat, 7 Jan 2006 20:57:33 +0000 (12:57 -0800)
commit3e3850e989c5d2eb1aab6f0fd9257759f0f4cbc6
treefa05d1de4767bc30e77442ffbacfe8bd8dd2213d
parent8cdfab8a43bb4b3da686ea503a702cb6f9f6a803
[NETFILTER]: Fix xfrm lookup in ip_route_me_harder/ip6_route_me_harder

ip_route_me_harder doesn't use the port numbers of the xfrm lookup and
uses ip_route_input for non-local addresses which doesn't do a xfrm
lookup, ip6_route_me_harder doesn't do a xfrm lookup at all.

Use xfrm_decode_session and do the lookup manually, make sure both
only do the lookup if the packet hasn't been transformed already.

Makeing sure the lookup only happens once needs a new field in the
IP6CB, which exceeds the size of skb->cb. The size of skb->cb is
increased to 48b. Apparently the IPv6 mobile extensions need some
more room anyway.

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