[INET]: Introduce tunnel4/tunnel6
Basically this patch moves the generic tunnel protocol stuff out of xfrm4_tunnel/xfrm6_tunnel and moves it into the new files of tunnel4.c and tunnel6 respectively. The reason for this is that the problem that Hugo uncovered is only the tip of the iceberg. The real problem is that when we removed the dependency of ipip on xfrm4_tunnel we didn't really consider the module case at all. For instance, as it is it's possible to build both ipip and xfrm4_tunnel as modules and if the latter is loaded then ipip simply won't load. After considering the alternatives I've decided that the best way out of this is to restore the dependency of ipip on the non-xfrm-specific part of xfrm4_tunnel. This is acceptable IMHO because the intention of the removal was really to be able to use ipip without the xfrm subsystem. This is still preserved by this patch. So now both ipip/xfrm4_tunnel depend on the new tunnel4.c which handles the arbitration between the two. The order of processing is determined by a simple integer which ensures that ipip gets processed before xfrm4_tunnel. The situation for ICMP handling is a little bit more complicated since we may not have enough information to determine who it's for. It's not a big deal at the moment since the xfrm ICMP handlers are basically no-ops. In future we can deal with this when we look at ICMP caching in general. The user-visible change to this is the removal of the TUNNEL Kconfig prompts. This makes sense because it can only be used through IPCOMP as it stands. The addition of the new modules shouldn't introduce any problems since module dependency will cause them to be loaded. Oh and I also turned some unnecessary pskb's in IPv6 related to this patch to skb's. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
f0088a50e7
commit
d2acc3479c
@@ -88,7 +88,7 @@ config INET6_IPCOMP
|
||||
tristate "IPv6: IPComp transformation"
|
||||
depends on IPV6
|
||||
select XFRM
|
||||
select INET6_TUNNEL
|
||||
select INET6_XFRM_TUNNEL
|
||||
select CRYPTO
|
||||
select CRYPTO_DEFLATE
|
||||
---help---
|
||||
@@ -97,19 +97,18 @@ config INET6_IPCOMP
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
config INET6_XFRM_TUNNEL
|
||||
tristate
|
||||
select INET6_TUNNEL
|
||||
default n
|
||||
|
||||
config INET6_TUNNEL
|
||||
tristate "IPv6: tunnel transformation"
|
||||
depends on IPV6
|
||||
select XFRM
|
||||
---help---
|
||||
Support for generic IPv6-in-IPv6 tunnel transformation, which is
|
||||
required by the IPv6-in-IPv6 tunneling module as well as tunnel mode
|
||||
IPComp.
|
||||
|
||||
If unsure, say Y.
|
||||
tristate
|
||||
default n
|
||||
|
||||
config IPV6_TUNNEL
|
||||
tristate "IPv6: IPv6-in-IPv6 tunnel"
|
||||
select INET6_TUNNEL
|
||||
depends on IPV6
|
||||
---help---
|
||||
Support for IPv6-in-IPv6 tunnels described in RFC 2473.
|
||||
|
Reference in New Issue
Block a user