[NET]: Make ipip/ip6_tunnel independant of XFRM
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
c877efb207
commit
0303770deb
@@ -273,7 +273,7 @@ static void ipip_tunnel_uninit(struct net_device *dev)
|
||||
dev_put(dev);
|
||||
}
|
||||
|
||||
static void ipip_err(struct sk_buff *skb, void *__unused)
|
||||
static void ipip_err(struct sk_buff *skb, u32 info)
|
||||
{
|
||||
#ifndef I_WISH_WORLD_WERE_PERFECT
|
||||
|
||||
@@ -852,11 +852,39 @@ static int __init ipip_fb_tunnel_init(struct net_device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_INET_TUNNEL
|
||||
static struct xfrm_tunnel ipip_handler = {
|
||||
.handler = ipip_rcv,
|
||||
.err_handler = ipip_err,
|
||||
};
|
||||
|
||||
static inline int ipip_register(void)
|
||||
{
|
||||
return xfrm4_tunnel_register(&ipip_handler);
|
||||
}
|
||||
|
||||
static inline int ipip_unregister(void)
|
||||
{
|
||||
return xfrm4_tunnel_deregister(&ipip_handler);
|
||||
}
|
||||
#else
|
||||
static struct net_protocol ipip_protocol = {
|
||||
.handler = ipip_rcv,
|
||||
.err_handler = ipip_err,
|
||||
.no_policy = 1,
|
||||
};
|
||||
|
||||
static inline int ipip_register(void)
|
||||
{
|
||||
return inet_add_protocol(&ipip_protocol, IPPROTO_IPIP);
|
||||
}
|
||||
|
||||
static inline int ipip_unregister(void)
|
||||
{
|
||||
return inet_del_protocol(&ipip_protocol, IPPROTO_IPIP);
|
||||
}
|
||||
#endif
|
||||
|
||||
static char banner[] __initdata =
|
||||
KERN_INFO "IPv4 over IPv4 tunneling driver\n";
|
||||
|
||||
@@ -866,7 +894,7 @@ static int __init ipip_init(void)
|
||||
|
||||
printk(banner);
|
||||
|
||||
if (xfrm4_tunnel_register(&ipip_handler) < 0) {
|
||||
if (ipip_register() < 0) {
|
||||
printk(KERN_INFO "ipip init: can't register tunnel\n");
|
||||
return -EAGAIN;
|
||||
}
|
||||
@@ -888,13 +916,13 @@ static int __init ipip_init(void)
|
||||
err2:
|
||||
free_netdev(ipip_fb_tunnel_dev);
|
||||
err1:
|
||||
xfrm4_tunnel_deregister(&ipip_handler);
|
||||
ipip_unregister();
|
||||
goto out;
|
||||
}
|
||||
|
||||
static void __exit ipip_fini(void)
|
||||
{
|
||||
if (xfrm4_tunnel_deregister(&ipip_handler) < 0)
|
||||
if (ipip_unregister() < 0)
|
||||
printk(KERN_INFO "ipip close: can't deregister tunnel\n");
|
||||
|
||||
unregister_netdev(ipip_fb_tunnel_dev);
|
||||
|
Reference in New Issue
Block a user