Skip to content

Commit

Permalink
net: Simplify ipip pernet operations.
Browse files Browse the repository at this point in the history
Take advantage of the new pernet automatic storage management,
and stop using compatibility network namespace functions.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Eric W. Biederman authored and David S. Miller committed Dec 2, 2009
1 parent cfb8fbf commit 86de8a6
Showing 1 changed file with 6 additions and 18 deletions.
24 changes: 6 additions & 18 deletions net/ipv4/ipip.c
Original file line number Diff line number Diff line change
Expand Up @@ -775,17 +775,8 @@ static void ipip_destroy_tunnels(struct ipip_net *ipn, struct list_head *head)

static int ipip_init_net(struct net *net)
{
struct ipip_net *ipn = net_generic(net, ipip_net_id);
int err;
struct ipip_net *ipn;

err = -ENOMEM;
ipn = kzalloc(sizeof(struct ipip_net), GFP_KERNEL);
if (ipn == NULL)
goto err_alloc;

err = net_assign_generic(net, ipip_net_id, ipn);
if (err < 0)
goto err_assign;

ipn->tunnels[0] = ipn->tunnels_wc;
ipn->tunnels[1] = ipn->tunnels_l;
Expand All @@ -812,29 +803,26 @@ static int ipip_init_net(struct net *net)
free_netdev(ipn->fb_tunnel_dev);
err_alloc_dev:
/* nothing */
err_assign:
kfree(ipn);
err_alloc:
return err;
}

static void ipip_exit_net(struct net *net)
{
struct ipip_net *ipn;
struct ipip_net *ipn = net_generic(net, ipip_net_id);
LIST_HEAD(list);

ipn = net_generic(net, ipip_net_id);
rtnl_lock();
ipip_destroy_tunnels(ipn, &list);
unregister_netdevice_queue(ipn->fb_tunnel_dev, &list);
unregister_netdevice_many(&list);
rtnl_unlock();
kfree(ipn);
}

static struct pernet_operations ipip_net_ops = {
.init = ipip_init_net,
.exit = ipip_exit_net,
.id = &ipip_net_id,
.size = sizeof(struct ipip_net),
};

static int __init ipip_init(void)
Expand All @@ -848,7 +836,7 @@ static int __init ipip_init(void)
return -EAGAIN;
}

err = register_pernet_gen_device(&ipip_net_id, &ipip_net_ops);
err = register_pernet_device(&ipip_net_ops);
if (err)
xfrm4_tunnel_deregister(&ipip_handler, AF_INET);

Expand All @@ -860,7 +848,7 @@ static void __exit ipip_fini(void)
if (xfrm4_tunnel_deregister(&ipip_handler, AF_INET))
printk(KERN_INFO "ipip close: can't deregister tunnel\n");

unregister_pernet_gen_device(ipip_net_id, &ipip_net_ops);
unregister_pernet_device(&ipip_net_ops);
}

module_init(ipip_init);
Expand Down

0 comments on commit 86de8a6

Please sign in to comment.