linux/net/ipv6
Herbert Xu 732c8bd590 [IPSEC]: Fix BEET output
The IPv6 BEET output function is incorrectly including the inner
header in the payload to be protected.  This causes a crash as
the packet doesn't actually have that many bytes for a second
header.

The IPv4 BEET output on the other hand is broken when it comes
to handling an inner IPv6 header since it always assumes an
inner IPv4 header.

This patch fixes both by making sure that neither BEET output
function touches the inner header at all.  All access is now
done through the protocol-independent cb structure.  Two new
attributes are added to make this work, the IP header length
and the IPv4 option length.  They're filled in by the inner
mode's output function.

Thanks to Joakim Koskela for finding this problem.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-03-26 16:51:09 -07:00
..
netfilter [NETFILTER]: {ip,ip6,nfnetlink}_queue: fix SKB_LINEAR_ASSERT when mangling packet data 2008-02-19 17:17:52 -08:00
Kconfig [IPV6] KCONFIG: Fix description about IPV6_TUNNEL. 2008-03-20 16:13:58 -07:00
Makefile [IPV6]: Make the ipv6/sysctl_net_ipv6.c compilation cleaner 2008-01-28 14:56:29 -08:00
addrconf.c [IPV6]: Add missing initializations of the new nl_info.nl_net field 2008-02-26 18:42:37 -08:00
addrconf_core.c
addrlabel.c [IPV6] ADDRLABEL: Fix double free on label deletion. 2008-01-28 15:46:02 -08:00
af_inet6.c [IPV6]: Fix hardcoded removing of old module code 2008-02-17 22:34:53 -08:00
ah6.c [IPSEC]: Fix bogus usage of u64 on input sequence number 2008-02-12 22:50:35 -08:00
anycast.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
datagram.c [NETNS][IPV6]: inet6_addr - check ipv6 address per namespace 2008-01-28 15:01:44 -08:00
esp6.c [IPSEC]: Fix bogus usage of u64 on input sequence number 2008-02-12 22:50:35 -08:00
exthdrs.c [NETNS][IPV6]: inet6_addr - make ipv6_chk_home_addr namespace aware 2008-01-28 15:01:46 -08:00
exthdrs_core.c
fib6_rules.c [NETNS]: FIB rules API cleanup. 2008-01-28 15:08:13 -08:00
icmp.c [ICMP]: Restore pskb_pull calls in receive function 2008-02-05 03:15:50 -08:00
inet6_connection_sock.c
inet6_hashtables.c [INET]: Fix accidentally broken inet(6)_hash_connect's port offset calculations. 2008-02-05 03:14:44 -08:00
ip6_fib.c [IPV6]: Use BUG_ON instead of if + BUG in fib6_del_route. 2008-02-18 20:50:42 -08:00
ip6_flowlabel.c [NET]: Add some acquires/releases sparse annotations. 2008-01-28 15:00:31 -08:00
ip6_input.c [IPv6] RAW: Compact the API for the kernel 2008-01-28 14:54:29 -08:00
ip6_output.c [IPV6]: Fix reversed local_df test in ip6_fragment 2008-02-14 23:49:37 -08:00
ip6_tunnel.c [INET]: Don't create tunnels with '%' in name. 2008-02-26 23:51:04 -08:00
ipcomp6.c [IPCOMP]: Disable BH on output when using shared tfm 2008-02-28 11:23:17 -08:00
ipv6_sockglue.c [NET]: prot_inuse cleanups and optimizations 2008-01-28 15:00:36 -08:00
mcast.c [NET]: Add some acquires/releases sparse annotations. 2008-01-28 15:00:31 -08:00
mip6.c [XFRM]: constify 'struct xfrm_type' 2008-01-31 19:27:20 -08:00
ndisc.c [NEIGH]: Fix race between pneigh deletion and ipv6's ndisc_recv_ns (v3). 2008-03-24 14:48:59 -07:00
netfilter.c [NETFILTER]: constify nf_afinfo 2008-01-28 14:59:05 -08:00
proc.c [IPV6]: Use proc_create() to setup ->proc_fops first 2008-02-28 14:13:46 -08:00
protocol.c
raw.c [RAW]: Wrong content of the /proc/net/raw6. 2008-01-31 19:27:26 -08:00
reassembly.c [NETNS][FRAGS]: Make the pernet subsystem for fragments. 2008-01-28 15:10:40 -08:00
route.c [IPV6]: Add missing initializations of the new nl_info.nl_net field 2008-02-26 18:42:37 -08:00
sit.c [INET]: Don't create tunnels with '%' in name. 2008-02-26 23:51:04 -08:00
sysctl_net_ipv6.c [IPV6] SYSCTL: Fix possible memory leakage in error path. 2008-02-27 12:06:38 -08:00
tcp_ipv6.c [SOCK] proto: Add hashinfo member to struct proto 2008-02-03 04:28:52 -08:00
tunnel6.c [IPV6]: Replace sk_buff ** with sk_buff * in input handlers 2007-10-15 12:50:28 -07:00
udp.c [NETNS]: Udp sockets per-net lookup. 2008-01-31 19:28:21 -08:00
udp_impl.h [IPV6] UDPLITE: Sparse: Declare non-static symbols in header. 2008-01-28 15:10:26 -08:00
udplite.c [IPV6] UDP,UDPLITE: Sparse: {__udp6_lib,udp,udplite}_err() are of void. 2008-01-28 15:10:25 -08:00
xfrm6_input.c [IPSEC]: Fix transport-mode async resume on intput without netfilter 2008-01-28 15:00:10 -08:00
xfrm6_mode_beet.c [IPSEC]: Fix BEET output 2008-03-26 16:51:09 -07:00
xfrm6_mode_ro.c [IPSEC]: Make x->lastused an unsigned long 2008-01-28 14:53:52 -08:00
xfrm6_mode_transport.c
xfrm6_mode_tunnel.c [IPSEC]: Fix inter address family IPsec tunnel handling. 2008-03-24 14:51:51 -07:00
xfrm6_output.c [IPSEC]: Fix inter address family IPsec tunnel handling. 2008-03-24 14:51:51 -07:00
xfrm6_policy.c [NET]: should explicitely initialize atomic_t field in struct dst_ops 2008-01-31 19:27:23 -08:00
xfrm6_state.c [IPSEC]: Fix BEET output 2008-03-26 16:51:09 -07:00
xfrm6_tunnel.c [XFRM]: constify 'struct xfrm_type' 2008-01-31 19:27:20 -08:00