diff options
author | Allan Stephens <allan.stephens@windriver.com> | 2006-06-26 02:39:31 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2006-06-26 02:39:31 -0400 |
commit | 260082471ed3f6d751e9767e5a278d4e495d83f7 (patch) | |
tree | 5bf904b9cdc16ae877f562e5d4909827c00d9fd5 /net/tipc/link.c | |
parent | 9688243b635ecede23fe4492ba23f36439398095 (diff) |
[TIPC]: Links now validate destination node specified by incoming messages.
This fix prevents link flopping and name table inconsistency problems arising
when a node is assigned a different <Z.C.N> value than it used previously.
(Changing the <Z.C.N> value causes other nodes to have two link endpoints
sending to the same MAC address using two different destination <Z.C.N> values,
requiring the receiving node to filter out the unwanted messages.)
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Signed-off-by: Per Liden <per.liden@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/link.c')
-rw-r--r-- | net/tipc/link.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/net/tipc/link.c b/net/tipc/link.c index 784b24b6d102..955b87d9b46c 100644 --- a/net/tipc/link.c +++ b/net/tipc/link.c | |||
@@ -1720,6 +1720,11 @@ void tipc_recv_msg(struct sk_buff *head, struct tipc_bearer *tb_ptr) | |||
1720 | link_recv_non_seq(buf); | 1720 | link_recv_non_seq(buf); |
1721 | continue; | 1721 | continue; |
1722 | } | 1722 | } |
1723 | |||
1724 | if (unlikely(!msg_short(msg) && | ||
1725 | (msg_destnode(msg) != tipc_own_addr))) | ||
1726 | goto cont; | ||
1727 | |||
1723 | n_ptr = tipc_node_find(msg_prevnode(msg)); | 1728 | n_ptr = tipc_node_find(msg_prevnode(msg)); |
1724 | if (unlikely(!n_ptr)) | 1729 | if (unlikely(!n_ptr)) |
1725 | goto cont; | 1730 | goto cont; |