mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-19 21:21:09 +00:00
tipc: make tipc socket support net namespace
Now tipc socket table is statically allocated as a global variable. Through it, we can look up one socket instance with port ID, insert a new socket instance to the table, and delete a socket from the table. But when tipc supports net namespace, each namespace must own its specific socket table. So the global variable of socket table must be redefined in tipc_net structure. As a concequence, a new socket table will be allocated when a new namespace is created, and a socket table will be deallocated when namespace is destroyed. Signed-off-by: Ying Xue <ying.xue@windriver.com> Tested-by: Tero Aho <Tero.Aho@coriant.com> Reviewed-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1da465683a
commit
e05b31f4bf
6 changed files with 43 additions and 33 deletions
|
@ -55,17 +55,20 @@ int sysctl_tipc_rmem[3] __read_mostly; /* min/default/max */
|
|||
static int __net_init tipc_init_net(struct net *net)
|
||||
{
|
||||
struct tipc_net *tn = net_generic(net, tipc_net_id);
|
||||
int err;
|
||||
|
||||
tn->net_id = 4711;
|
||||
INIT_LIST_HEAD(&tn->node_list);
|
||||
spin_lock_init(&tn->node_list_lock);
|
||||
|
||||
return 0;
|
||||
err = tipc_sk_rht_init(net);
|
||||
return err;
|
||||
}
|
||||
|
||||
static void __net_exit tipc_exit_net(struct net *net)
|
||||
{
|
||||
tipc_net_stop(net);
|
||||
tipc_sk_rht_destroy(net);
|
||||
}
|
||||
|
||||
static struct pernet_operations tipc_net_ops = {
|
||||
|
@ -95,10 +98,6 @@ static int __init tipc_init(void)
|
|||
if (err)
|
||||
goto out_pernet;
|
||||
|
||||
err = tipc_sk_rht_init();
|
||||
if (err)
|
||||
goto out_reftbl;
|
||||
|
||||
err = tipc_nametbl_init();
|
||||
if (err)
|
||||
goto out_nametbl;
|
||||
|
@ -136,8 +135,6 @@ out_socket:
|
|||
out_netlink:
|
||||
tipc_nametbl_stop();
|
||||
out_nametbl:
|
||||
tipc_sk_rht_destroy();
|
||||
out_reftbl:
|
||||
unregister_pernet_subsys(&tipc_net_ops);
|
||||
out_pernet:
|
||||
pr_err("Unable to start in single node mode\n");
|
||||
|
@ -153,7 +150,6 @@ static void __exit tipc_exit(void)
|
|||
tipc_nametbl_stop();
|
||||
tipc_socket_stop();
|
||||
tipc_unregister_sysctl();
|
||||
tipc_sk_rht_destroy();
|
||||
|
||||
pr_info("Deactivated\n");
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue