[IPSEC]: changing API of xfrm6_tunnel_register
This patch changes xfrm6_tunnel register and deregister interface to prepare for solving the conflict of device tunnels with inter address family IPsec tunnel. There is no device which conflicts with IPv4 over IPv6 IPsec tunnel. Signed-off-by: Kazunori MIYAZAWA <miyazawa@linux-ipv6.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
c73cb5a2d6
commit
73d605d1ab
@ -339,17 +339,29 @@ static struct xfrm6_tunnel xfrm6_tunnel_handler = {
|
||||
.priority = 2,
|
||||
};
|
||||
|
||||
static struct xfrm6_tunnel xfrm46_tunnel_handler = {
|
||||
.handler = xfrm6_tunnel_rcv,
|
||||
.err_handler = xfrm6_tunnel_err,
|
||||
.priority = 2,
|
||||
};
|
||||
|
||||
static int __init xfrm6_tunnel_init(void)
|
||||
{
|
||||
if (xfrm_register_type(&xfrm6_tunnel_type, AF_INET6) < 0)
|
||||
return -EAGAIN;
|
||||
|
||||
if (xfrm6_tunnel_register(&xfrm6_tunnel_handler)) {
|
||||
if (xfrm6_tunnel_register(&xfrm6_tunnel_handler, AF_INET6)) {
|
||||
xfrm_unregister_type(&xfrm6_tunnel_type, AF_INET6);
|
||||
return -EAGAIN;
|
||||
}
|
||||
if (xfrm6_tunnel_register(&xfrm46_tunnel_handler, AF_INET)) {
|
||||
xfrm6_tunnel_deregister(&xfrm6_tunnel_handler, AF_INET6);
|
||||
xfrm_unregister_type(&xfrm6_tunnel_type, AF_INET6);
|
||||
return -EAGAIN;
|
||||
}
|
||||
if (xfrm6_tunnel_spi_init() < 0) {
|
||||
xfrm6_tunnel_deregister(&xfrm6_tunnel_handler);
|
||||
xfrm6_tunnel_deregister(&xfrm46_tunnel_handler, AF_INET);
|
||||
xfrm6_tunnel_deregister(&xfrm6_tunnel_handler, AF_INET6);
|
||||
xfrm_unregister_type(&xfrm6_tunnel_type, AF_INET6);
|
||||
return -EAGAIN;
|
||||
}
|
||||
@ -359,7 +371,8 @@ static int __init xfrm6_tunnel_init(void)
|
||||
static void __exit xfrm6_tunnel_fini(void)
|
||||
{
|
||||
xfrm6_tunnel_spi_fini();
|
||||
xfrm6_tunnel_deregister(&xfrm6_tunnel_handler);
|
||||
xfrm6_tunnel_deregister(&xfrm46_tunnel_handler, AF_INET);
|
||||
xfrm6_tunnel_deregister(&xfrm6_tunnel_handler, AF_INET6);
|
||||
xfrm_unregister_type(&xfrm6_tunnel_type, AF_INET6);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user