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 | ||