summaryrefslogtreecommitdiff
path: root/net/tipc
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2006-06-26 10:39:31 +0400
committerDavid S. Miller <davem@davemloft.net>2006-06-26 10:39:31 +0400
commit260082471ed3f6d751e9767e5a278d4e495d83f7 (patch)
tree5bf904b9cdc16ae877f562e5d4909827c00d9fd5 /net/tipc
parent9688243b635ecede23fe4492ba23f36439398095 (diff)
downloadlinux-260082471ed3f6d751e9767e5a278d4e495d83f7.tar.xz
[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')
-rw-r--r--net/tipc/link.c5
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)
link_recv_non_seq(buf);
continue;
}
+
+ if (unlikely(!msg_short(msg) &&
+ (msg_destnode(msg) != tipc_own_addr)))
+ goto cont;
+
n_ptr = tipc_node_find(msg_prevnode(msg));
if (unlikely(!n_ptr))
goto cont;