Commit bafa29e3 authored by Ying Xue's avatar Ying Xue Committed by David S. Miller
Browse files

tipc: make tipc random value aware of net namespace

After namespace is supported, each namespace should own its private
random value. So the global variable representing the random value
must be moved to tipc_net structure.
Signed-off-by: default avatarYing Xue <>
Tested-by: default avatarTero Aho <>
Reviewed-by: default avatarJon Maloy <>
Signed-off-by: default avatarDavid S. Miller <>
parent a62fbcce
......@@ -44,9 +44,6 @@
#include <linux/module.h>
/* global variables used by multiple sub-systems within TIPC */
int tipc_random __read_mostly;
/* configurable TIPC parameters */
int tipc_net_id __read_mostly;
int sysctl_tipc_rmem[3] __read_mostly; /* min/default/max */
......@@ -58,6 +55,7 @@ static int __net_init tipc_init_net(struct net *net)
tn->net_id = 4711;
tn->own_addr = 0;
get_random_bytes(&tn->random, sizeof(int));
......@@ -109,8 +107,6 @@ static int __init tipc_init(void)
sysctl_tipc_rmem[2] = TIPC_CONN_OVERLOAD_LIMIT;
get_random_bytes(&tipc_random, sizeof(tipc_random));
err = tipc_netlink_start();
if (err)
goto out_netlink;
......@@ -76,14 +76,10 @@ extern int tipc_net_id __read_mostly;
extern int sysctl_tipc_rmem[3] __read_mostly;
extern int sysctl_tipc_named_timeout __read_mostly;
* Other global variables
extern int tipc_random __read_mostly;
struct tipc_net {
u32 own_addr;
int net_id;
int random;
/* Node table and node list */
spinlock_t node_list_lock;
......@@ -88,7 +88,7 @@ static void tipc_disc_init_msg(struct net *net, struct sk_buff *buf, u32 type,
msg = buf_msg(buf);
tipc_msg_init(net, msg, LINK_CONFIG, type, INT_H_SIZE, dest_domain);
msg_set_non_seq(msg, 1);
msg_set_node_sig(msg, tipc_random);
msg_set_node_sig(msg, tn->random);
msg_set_dest_domain(msg, dest_domain);
msg_set_bc_netid(msg, tn->net_id);
b_ptr->media->addr2msg(msg_media_addr(msg), &b_ptr->addr);
......@@ -289,7 +289,7 @@ struct tipc_link *tipc_link_create(struct tipc_node *n_ptr,
tipc_msg_init(n_ptr->net, msg, LINK_PROTOCOL, RESET_MSG, INT_H_SIZE,
msg_set_size(msg, sizeof(l_ptr->proto_msg));
msg_set_session(msg, (tipc_random & 0xffff));
msg_set_session(msg, (tn->random & 0xffff));
msg_set_bearer_id(msg, b_ptr->identity);
strcpy((char *)msg_data(msg), if_name);
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment