diff options
Diffstat (limited to 'net/tipc')
-rw-r--r-- | net/tipc/discover.c | 3 | ||||
-rw-r--r-- | net/tipc/msg.h | 10 | ||||
-rw-r--r-- | net/tipc/node.c | 1 | ||||
-rw-r--r-- | net/tipc/node.h | 7 |
4 files changed, 21 insertions, 0 deletions
diff --git a/net/tipc/discover.c b/net/tipc/discover.c index a00e5f811569..7ae1b4c33aeb 100644 --- a/net/tipc/discover.c +++ b/net/tipc/discover.c | |||
@@ -82,6 +82,7 @@ static struct sk_buff *tipc_disc_init_msg(u32 type, | |||
82 | msg = buf_msg(buf); | 82 | msg = buf_msg(buf); |
83 | tipc_msg_init(msg, LINK_CONFIG, type, INT_H_SIZE, dest_domain); | 83 | tipc_msg_init(msg, LINK_CONFIG, type, INT_H_SIZE, dest_domain); |
84 | msg_set_non_seq(msg, 1); | 84 | msg_set_non_seq(msg, 1); |
85 | msg_set_node_sig(msg, tipc_random); | ||
85 | msg_set_dest_domain(msg, dest_domain); | 86 | msg_set_dest_domain(msg, dest_domain); |
86 | msg_set_bc_netid(msg, tipc_net_id); | 87 | msg_set_bc_netid(msg, tipc_net_id); |
87 | b_ptr->media->addr2msg(&b_ptr->addr, msg_media_addr(msg)); | 88 | b_ptr->media->addr2msg(&b_ptr->addr, msg_media_addr(msg)); |
@@ -128,6 +129,7 @@ void tipc_disc_recv_msg(struct sk_buff *buf, struct tipc_bearer *b_ptr) | |||
128 | u32 orig = msg_prevnode(msg); | 129 | u32 orig = msg_prevnode(msg); |
129 | u32 net_id = msg_bc_netid(msg); | 130 | u32 net_id = msg_bc_netid(msg); |
130 | u32 type = msg_type(msg); | 131 | u32 type = msg_type(msg); |
132 | u32 signature = msg_node_sig(msg); | ||
131 | int link_fully_up; | 133 | int link_fully_up; |
132 | 134 | ||
133 | media_addr.broadcast = 1; | 135 | media_addr.broadcast = 1; |
@@ -197,6 +199,7 @@ void tipc_disc_recv_msg(struct sk_buff *buf, struct tipc_bearer *b_ptr) | |||
197 | } | 199 | } |
198 | 200 | ||
199 | /* Accept discovery message & send response, if necessary */ | 201 | /* Accept discovery message & send response, if necessary */ |
202 | n_ptr->signature = signature; | ||
200 | link_fully_up = link_working_working(link); | 203 | link_fully_up = link_working_working(link); |
201 | 204 | ||
202 | if ((type == DSC_REQ_MSG) && !link_fully_up && !b_ptr->blocked) { | 205 | if ((type == DSC_REQ_MSG) && !link_fully_up && !b_ptr->blocked) { |
diff --git a/net/tipc/msg.h b/net/tipc/msg.h index 7b0cda167107..2ec13b731811 100644 --- a/net/tipc/msg.h +++ b/net/tipc/msg.h | |||
@@ -517,6 +517,16 @@ static inline void msg_set_seq_gap(struct tipc_msg *m, u32 n) | |||
517 | msg_set_bits(m, 1, 16, 0x1fff, n); | 517 | msg_set_bits(m, 1, 16, 0x1fff, n); |
518 | } | 518 | } |
519 | 519 | ||
520 | static inline u32 msg_node_sig(struct tipc_msg *m) | ||
521 | { | ||
522 | return msg_bits(m, 1, 0, 0xffff); | ||
523 | } | ||
524 | |||
525 | static inline void msg_set_node_sig(struct tipc_msg *m, u32 n) | ||
526 | { | ||
527 | msg_set_bits(m, 1, 0, 0xffff, n); | ||
528 | } | ||
529 | |||
520 | 530 | ||
521 | /* | 531 | /* |
522 | * Word 2 | 532 | * Word 2 |
diff --git a/net/tipc/node.c b/net/tipc/node.c index 7bc45e135fb4..153425997cce 100644 --- a/net/tipc/node.c +++ b/net/tipc/node.c | |||
@@ -112,6 +112,7 @@ struct tipc_node *tipc_node_create(u32 addr) | |||
112 | } | 112 | } |
113 | list_add_tail(&n_ptr->list, &temp_node->list); | 113 | list_add_tail(&n_ptr->list, &temp_node->list); |
114 | n_ptr->block_setup = WAIT_PEER_DOWN; | 114 | n_ptr->block_setup = WAIT_PEER_DOWN; |
115 | n_ptr->signature = INVALID_NODE_SIG; | ||
115 | 116 | ||
116 | tipc_num_nodes++; | 117 | tipc_num_nodes++; |
117 | 118 | ||
diff --git a/net/tipc/node.h b/net/tipc/node.h index e1b78a2199c2..7bf526af1dfb 100644 --- a/net/tipc/node.h +++ b/net/tipc/node.h | |||
@@ -42,6 +42,11 @@ | |||
42 | #include "net.h" | 42 | #include "net.h" |
43 | #include "bearer.h" | 43 | #include "bearer.h" |
44 | 44 | ||
45 | /* | ||
46 | * Out-of-range value for node signature | ||
47 | */ | ||
48 | #define INVALID_NODE_SIG 0x10000 | ||
49 | |||
45 | /* Flags used to block (re)establishment of contact with a neighboring node */ | 50 | /* Flags used to block (re)establishment of contact with a neighboring node */ |
46 | 51 | ||
47 | #define WAIT_PEER_DOWN 0x0001 /* wait to see that peer's links are down */ | 52 | #define WAIT_PEER_DOWN 0x0001 /* wait to see that peer's links are down */ |
@@ -61,6 +66,7 @@ | |||
61 | * @block_setup: bit mask of conditions preventing link establishment to node | 66 | * @block_setup: bit mask of conditions preventing link establishment to node |
62 | * @link_cnt: number of links to node | 67 | * @link_cnt: number of links to node |
63 | * @permit_changeover: non-zero if node has redundant links to this system | 68 | * @permit_changeover: non-zero if node has redundant links to this system |
69 | * @signature: node instance identifier | ||
64 | * @bclink: broadcast-related info | 70 | * @bclink: broadcast-related info |
65 | * @supportable: non-zero if node supports TIPC b'cast link capability | 71 | * @supportable: non-zero if node supports TIPC b'cast link capability |
66 | * @supported: non-zero if node supports TIPC b'cast capability | 72 | * @supported: non-zero if node supports TIPC b'cast capability |
@@ -86,6 +92,7 @@ struct tipc_node { | |||
86 | int working_links; | 92 | int working_links; |
87 | int block_setup; | 93 | int block_setup; |
88 | int permit_changeover; | 94 | int permit_changeover; |
95 | u32 signature; | ||
89 | struct { | 96 | struct { |
90 | u8 supportable; | 97 | u8 supportable; |
91 | u8 supported; | 98 | u8 supported; |