1
0
Fork 0
alistair23-linux/net/ipv6
Herbert Xu 36cf9acf93 [IPSEC]: Separate inner/outer mode processing on output
With inter-family transforms the inner mode differs from the outer
mode.  Attempting to handle both sides from the same function means
that it needs to handle both IPv4 and IPv6 which creates duplication
and confusion.

This patch separates the two parts on the output path so that each
function deals with one family only.

In particular, the functions xfrm4_extract_output/xfrm6_extract_output
moves the pertinent fields from the IPv4/IPv6 IP headers into a
neutral format stored in skb->cb.  This is then used by the outer mode
output functions to write the outer IP header.  In this way the output
function no longer has to know about the inner address family.

Since the extract functions are only called by tunnel modes (the only
modes that can support inter-family transforms), I've also moved the
xfrm*_tunnel_check_size calls into them.  This allows the correct ICMP
message to be sent as opposed to now where you might call icmp_send
with an IPv6 packet and vice versa.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
2008-01-28 14:53:45 -08:00
..
netfilter [NETFILTER]: ip6t_eui64: Fixes calculation of Universal/Local bit 2008-01-10 22:40:39 -08:00
Kconfig [IPV6] MIP6: Loadable module support for MIPv6. 2007-07-10 22:15:42 -07:00
Makefile [IPV6] MIP6: Loadable module support for MIPv6. 2007-07-10 22:15:42 -07:00
addrconf.c [NET]: Convert init_timer into setup_timer 2008-01-28 14:53:35 -08:00
addrconf_core.c [IPV6]: ipv6_addr_type() doesn't know about RFC4193 addresses. 2007-07-31 02:28:21 -07:00
af_inet6.c [TCP] splice: add tcp_splice_read() to IPV6 2008-01-28 14:53:32 -08:00
ah6.c cleanup asm/scatterlist.h includes 2007-11-02 08:47:06 +01:00
anycast.c [NET]: Make core networking code use seq_open_private 2007-10-10 16:55:33 -07:00
datagram.c [IPV6]: IPV6_MULTICAST_IF setting is ignored on link-local connect() 2008-01-08 23:52:21 -08:00
esp6.c [IPv6] ESP: Discard dummy packets introduced in rfc4303 2007-12-11 02:45:27 -08:00
exthdrs.c [NET]: Eliminate duplicate copies of dst_discard 2008-01-28 14:53:37 -08:00
exthdrs_core.c [NET] IPV6: Fix whitespace errors. 2007-02-10 23:19:42 -08:00
fib6_rules.c [INET]: Small possible memory leak in FIB rules 2007-11-10 22:12:03 -08:00
icmp.c [IPV6]: ICMP6_MIB_OUTMSGS increment duplicated 2008-01-21 03:05:20 -08:00
inet6_connection_sock.c [IPV6] __inet6_csk_dst_store(): fix check-after-use 2007-10-15 12:26:32 -07:00
inet6_hashtables.c [IPV6]: Mischecked tw match in __inet6_check_established. 2008-01-20 20:31:36 -08:00
ip6_fib.c [IPv6]: use container_of() macro in fib6_clean_node() 2007-10-10 16:54:58 -07:00
ip6_flowlabel.c [IPV6]: Fix again the fl6_sock_lookup() fixed locking 2007-10-18 05:38:48 -07:00
ip6_input.c [IPV6]: Replace sk_buff ** with sk_buff * in input handlers 2007-10-15 12:50:28 -07:00
ip6_output.c [IPV6]: Move nfheader_len into rt6_info 2008-01-28 14:53:37 -08:00
ip6_tunnel.c [INET]: Give outer DSCP directly to ip*_copy_dscp 2008-01-28 14:53:45 -08:00
ipcomp6.c [IPSEC]: Forbid BEET + ipcomp for now 2008-01-28 14:53:43 -08:00
ipv6_sockglue.c [IPV6]: Fix the return value of ipv6_getsockopt 2007-12-16 13:39:57 -08:00
mcast.c [NET]: Convert init_timer into setup_timer 2008-01-28 14:53:35 -08:00
mip6.c [IPSEC]: Replace x->type->{local,remote}_addr with flags 2008-01-28 14:53:41 -08:00
ndisc.c IPoIB: improve IPv4/IPv6 to IB mcast mapping functions 2008-01-25 14:15:37 -08:00
netfilter.c [NETFILTER]: Replace sk_buff ** with sk_buff * 2007-10-15 12:26:29 -07:00
proc.c [IPV6]: RFC 2011 compatibility broken 2008-01-21 03:05:43 -08:00
protocol.c [IPV6]: Decentralize EXPORT_SYMBOLs. 2007-04-25 22:23:36 -07:00
raw.c [IPV6]: Add raw6 drops counter. 2008-01-28 14:53:34 -08:00
reassembly.c [INET]: Consolidate frag queues freeing 2007-10-17 19:48:26 -07:00
route.c [NET]: Eliminate duplicate copies of dst_discard 2008-01-28 14:53:37 -08:00
sit.c [NET]: Treat the sign of the result of skb_headroom() consistently 2007-10-23 21:27:55 -07:00
sysctl_net_ipv6.c [INET]: Collect common frag sysctl variables together 2007-10-15 12:26:40 -07:00
tcp_ipv6.c [IPV6] TCPMD5: Fix deleting key operation. 2007-11-20 17:31:23 -08:00
tunnel6.c [IPV6]: Replace sk_buff ** with sk_buff * in input handlers 2007-10-15 12:50:28 -07:00
udp.c [IPV6]: Use the {DEFINE|REF}_PROTO_INUSE infrastructure 2007-11-07 04:08:59 -08:00
udp_impl.h [IPV6]: Replace sk_buff ** with sk_buff * in input handlers 2007-10-15 12:50:28 -07:00
udplite.c [IPV6]: Use the {DEFINE|REF}_PROTO_INUSE infrastructure 2007-11-07 04:08:59 -08:00
xfrm6_input.c [IPSEC]: Rename mode to outer_mode and add inner_mode 2007-10-17 21:35:51 -07:00
xfrm6_mode_beet.c [IPSEC]: Separate inner/outer mode processing on output 2008-01-28 14:53:45 -08:00
xfrm6_mode_ro.c [IPSEC]: Move x->outer_mode->output out of locked section 2008-01-28 14:53:44 -08:00
xfrm6_mode_transport.c [IPSEC]: Use IPv6 calling convention as the convention for x->mode->output 2007-10-10 16:55:54 -07:00
xfrm6_mode_tunnel.c [IPSEC]: Separate inner/outer mode processing on output 2008-01-28 14:53:45 -08:00
xfrm6_output.c [IPSEC]: Separate inner/outer mode processing on output 2008-01-28 14:53:45 -08:00
xfrm6_policy.c [IPSEC]: Merge common code into xfrm_bundle_create 2008-01-28 14:53:43 -08:00
xfrm6_state.c [IPSEC]: Separate inner/outer mode processing on output 2008-01-28 14:53:45 -08:00
xfrm6_tunnel.c [IPSEC]: Get nexthdr from caller in xfrm6_rcv_spi 2007-10-17 21:29:25 -07:00