diff options
Diffstat (limited to 'net/ipv4/ipip.c')
| -rw-r--r-- | net/ipv4/ipip.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/net/ipv4/ipip.c b/net/ipv4/ipip.c index eda04fed3379..2f302d3ac9a3 100644 --- a/net/ipv4/ipip.c +++ b/net/ipv4/ipip.c | |||
| @@ -130,7 +130,6 @@ struct ipip_net { | |||
| 130 | struct net_device *fb_tunnel_dev; | 130 | struct net_device *fb_tunnel_dev; |
| 131 | }; | 131 | }; |
| 132 | 132 | ||
| 133 | static void ipip_fb_tunnel_init(struct net_device *dev); | ||
| 134 | static void ipip_tunnel_init(struct net_device *dev); | 133 | static void ipip_tunnel_init(struct net_device *dev); |
| 135 | static void ipip_tunnel_setup(struct net_device *dev); | 134 | static void ipip_tunnel_setup(struct net_device *dev); |
| 136 | 135 | ||
| @@ -730,7 +729,7 @@ static void ipip_tunnel_init(struct net_device *dev) | |||
| 730 | ipip_tunnel_bind_dev(dev); | 729 | ipip_tunnel_bind_dev(dev); |
| 731 | } | 730 | } |
| 732 | 731 | ||
| 733 | static void ipip_fb_tunnel_init(struct net_device *dev) | 732 | static void __net_init ipip_fb_tunnel_init(struct net_device *dev) |
| 734 | { | 733 | { |
| 735 | struct ip_tunnel *tunnel = netdev_priv(dev); | 734 | struct ip_tunnel *tunnel = netdev_priv(dev); |
| 736 | struct iphdr *iph = &tunnel->parms.iph; | 735 | struct iphdr *iph = &tunnel->parms.iph; |
| @@ -773,7 +772,7 @@ static void ipip_destroy_tunnels(struct ipip_net *ipn, struct list_head *head) | |||
| 773 | } | 772 | } |
| 774 | } | 773 | } |
| 775 | 774 | ||
| 776 | static int ipip_init_net(struct net *net) | 775 | static int __net_init ipip_init_net(struct net *net) |
| 777 | { | 776 | { |
| 778 | struct ipip_net *ipn = net_generic(net, ipip_net_id); | 777 | struct ipip_net *ipn = net_generic(net, ipip_net_id); |
| 779 | int err; | 778 | int err; |
| @@ -806,7 +805,7 @@ err_alloc_dev: | |||
| 806 | return err; | 805 | return err; |
| 807 | } | 806 | } |
| 808 | 807 | ||
| 809 | static void ipip_exit_net(struct net *net) | 808 | static void __net_exit ipip_exit_net(struct net *net) |
| 810 | { | 809 | { |
| 811 | struct ipip_net *ipn = net_generic(net, ipip_net_id); | 810 | struct ipip_net *ipn = net_generic(net, ipip_net_id); |
| 812 | LIST_HEAD(list); | 811 | LIST_HEAD(list); |
| @@ -831,15 +830,14 @@ static int __init ipip_init(void) | |||
| 831 | 830 | ||
| 832 | printk(banner); | 831 | printk(banner); |
| 833 | 832 | ||
| 834 | if (xfrm4_tunnel_register(&ipip_handler, AF_INET)) { | 833 | err = register_pernet_device(&ipip_net_ops); |
| 834 | if (err < 0) | ||
| 835 | return err; | ||
| 836 | err = xfrm4_tunnel_register(&ipip_handler, AF_INET); | ||
| 837 | if (err < 0) { | ||
| 838 | unregister_pernet_device(&ipip_net_ops); | ||
| 835 | printk(KERN_INFO "ipip init: can't register tunnel\n"); | 839 | printk(KERN_INFO "ipip init: can't register tunnel\n"); |
| 836 | return -EAGAIN; | ||
| 837 | } | 840 | } |
| 838 | |||
| 839 | err = register_pernet_device(&ipip_net_ops); | ||
| 840 | if (err) | ||
| 841 | xfrm4_tunnel_deregister(&ipip_handler, AF_INET); | ||
| 842 | |||
| 843 | return err; | 841 | return err; |
| 844 | } | 842 | } |
| 845 | 843 | ||
