diff options
author | Allan Stephens <allan.stephens@windriver.com> | 2006-06-25 23:39:31 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2006-06-25 23:39:31 -0700 |
commit | 260082471ed3f6d751e9767e5a278d4e495d83f7 (patch) | |
tree | 5bf904b9cdc16ae877f562e5d4909827c00d9fd5 /net/tipc/link.c | |
parent | 9688243b635ecede23fe4492ba23f36439398095 (diff) | |
download | linux-260082471ed3f6d751e9767e5a278d4e495d83f7.tar.gz linux-260082471ed3f6d751e9767e5a278d4e495d83f7.tar.bz2 linux-260082471ed3f6d751e9767e5a278d4e495d83f7.zip |
[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) 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; |