aboutsummaryrefslogtreecommitdiffstats
path: root/net/tipc
diff options
context:
space:
mode:
authorYing Xue <ying.xue@windriver.com>2015-01-09 02:27:12 -0500
committerDavid S. Miller <davem@davemloft.net>2015-01-12 16:24:33 -0500
commitbafa29e34185fb70496bfd604dc9e4071049f023 (patch)
treead8c2ab58340a54061d7ddb3735f9bd72ea704b0 /net/tipc
parenta62fbccecd62bacb4416fc427239f5b43b25d05e (diff)
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: 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>
Diffstat (limited to 'net/tipc')
-rw-r--r--net/tipc/core.c6
-rw-r--r--net/tipc/core.h6
-rw-r--r--net/tipc/discover.c2
-rw-r--r--net/tipc/link.c2
4 files changed, 4 insertions, 12 deletions
diff --git a/net/tipc/core.c b/net/tipc/core.c
index 4a8b7955e0e0..674bd2698528 100644
--- a/net/tipc/core.c
+++ b/net/tipc/core.c
@@ -44,9 +44,6 @@
44 44
45#include <linux/module.h> 45#include <linux/module.h>
46 46
47/* global variables used by multiple sub-systems within TIPC */
48int tipc_random __read_mostly;
49
50/* configurable TIPC parameters */ 47/* configurable TIPC parameters */
51int tipc_net_id __read_mostly; 48int tipc_net_id __read_mostly;
52int sysctl_tipc_rmem[3] __read_mostly; /* min/default/max */ 49int sysctl_tipc_rmem[3] __read_mostly; /* min/default/max */
@@ -58,6 +55,7 @@ static int __net_init tipc_init_net(struct net *net)
58 55
59 tn->net_id = 4711; 56 tn->net_id = 4711;
60 tn->own_addr = 0; 57 tn->own_addr = 0;
58 get_random_bytes(&tn->random, sizeof(int));
61 INIT_LIST_HEAD(&tn->node_list); 59 INIT_LIST_HEAD(&tn->node_list);
62 spin_lock_init(&tn->node_list_lock); 60 spin_lock_init(&tn->node_list_lock);
63 61
@@ -109,8 +107,6 @@ static int __init tipc_init(void)
109 TIPC_CRITICAL_IMPORTANCE; 107 TIPC_CRITICAL_IMPORTANCE;
110 sysctl_tipc_rmem[2] = TIPC_CONN_OVERLOAD_LIMIT; 108 sysctl_tipc_rmem[2] = TIPC_CONN_OVERLOAD_LIMIT;
111 109
112 get_random_bytes(&tipc_random, sizeof(tipc_random));
113
114 err = tipc_netlink_start(); 110 err = tipc_netlink_start();
115 if (err) 111 if (err)
116 goto out_netlink; 112 goto out_netlink;
diff --git a/net/tipc/core.h b/net/tipc/core.h
index 639f562dddf3..817b2e9d4227 100644
--- a/net/tipc/core.h
+++ b/net/tipc/core.h
@@ -76,14 +76,10 @@ extern int tipc_net_id __read_mostly;
76extern int sysctl_tipc_rmem[3] __read_mostly; 76extern int sysctl_tipc_rmem[3] __read_mostly;
77extern int sysctl_tipc_named_timeout __read_mostly; 77extern int sysctl_tipc_named_timeout __read_mostly;
78 78
79/*
80 * Other global variables
81 */
82extern int tipc_random __read_mostly;
83
84struct tipc_net { 79struct tipc_net {
85 u32 own_addr; 80 u32 own_addr;
86 int net_id; 81 int net_id;
82 int random;
87 83
88 /* Node table and node list */ 84 /* Node table and node list */
89 spinlock_t node_list_lock; 85 spinlock_t node_list_lock;
diff --git a/net/tipc/discover.c b/net/tipc/discover.c
index 786411dea61c..5b40cb89ff0a 100644
--- a/net/tipc/discover.c
+++ b/net/tipc/discover.c
@@ -88,7 +88,7 @@ static void tipc_disc_init_msg(struct net *net, struct sk_buff *buf, u32 type,
88 msg = buf_msg(buf); 88 msg = buf_msg(buf);
89 tipc_msg_init(net, msg, LINK_CONFIG, type, INT_H_SIZE, dest_domain); 89 tipc_msg_init(net, msg, LINK_CONFIG, type, INT_H_SIZE, dest_domain);
90 msg_set_non_seq(msg, 1); 90 msg_set_non_seq(msg, 1);
91 msg_set_node_sig(msg, tipc_random); 91 msg_set_node_sig(msg, tn->random);
92 msg_set_dest_domain(msg, dest_domain); 92 msg_set_dest_domain(msg, dest_domain);
93 msg_set_bc_netid(msg, tn->net_id); 93 msg_set_bc_netid(msg, tn->net_id);
94 b_ptr->media->addr2msg(msg_media_addr(msg), &b_ptr->addr); 94 b_ptr->media->addr2msg(msg_media_addr(msg), &b_ptr->addr);
diff --git a/net/tipc/link.c b/net/tipc/link.c
index 997256769065..193bc1560677 100644
--- a/net/tipc/link.c
+++ b/net/tipc/link.c
@@ -289,7 +289,7 @@ struct tipc_link *tipc_link_create(struct tipc_node *n_ptr,
289 tipc_msg_init(n_ptr->net, msg, LINK_PROTOCOL, RESET_MSG, INT_H_SIZE, 289 tipc_msg_init(n_ptr->net, msg, LINK_PROTOCOL, RESET_MSG, INT_H_SIZE,
290 l_ptr->addr); 290 l_ptr->addr);
291 msg_set_size(msg, sizeof(l_ptr->proto_msg)); 291 msg_set_size(msg, sizeof(l_ptr->proto_msg));
292 msg_set_session(msg, (tipc_random & 0xffff)); 292 msg_set_session(msg, (tn->random & 0xffff));
293 msg_set_bearer_id(msg, b_ptr->identity); 293 msg_set_bearer_id(msg, b_ptr->identity);
294 strcpy((char *)msg_data(msg), if_name); 294 strcpy((char *)msg_data(msg), if_name);
295 295