From 15242944f41f167f95db95d5b6fe01192bfc2f3c Mon Sep 17 00:00:00 2001 From: Allan Stephens Date: Thu, 7 Apr 2011 14:57:53 -0400 Subject: [PATCH] --- yaml --- r: 266108 b: refs/heads/master c: 9f6bdcd4286145e812058e4111e906e9830514d8 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/tipc/bcast.c | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index c850712f8406..3ac9afbb44de 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 693d03ae3c2bafd7caca1cf4ade9f23f107e33c1 +refs/heads/master: 9f6bdcd4286145e812058e4111e906e9830514d8 diff --git a/trunk/net/tipc/bcast.c b/trunk/net/tipc/bcast.c index 8d298526a5c1..bead28b5efff 100644 --- a/trunk/net/tipc/bcast.c +++ b/trunk/net/tipc/bcast.c @@ -39,6 +39,7 @@ #include "link.h" #include "port.h" #include "bcast.h" +#include "name_distr.h" #define MAX_PKT_DEFAULT_MCAST 1500 /* bcast link max packet size (fixed) */ @@ -445,6 +446,8 @@ void tipc_bclink_recv_pkt(struct sk_buff *buf) goto unlock; if (unlikely(msg_user(msg) == BCAST_PROTOCOL)) { + if (msg_type(msg) != STATE_MSG) + goto unlock; if (msg_destnode(msg) == tipc_own_addr) { tipc_bclink_acknowledge(node, msg_bcast_ack(msg)); tipc_node_unlock(node); @@ -480,7 +483,10 @@ void tipc_bclink_recv_pkt(struct sk_buff *buf) } if (likely(msg_isdata(msg))) { tipc_node_unlock(node); - tipc_port_recv_mcast(buf, NULL); + if (likely(msg_mcast(msg))) + tipc_port_recv_mcast(buf, NULL); + else + buf_discard(buf); } else if (msg_user(msg) == MSG_BUNDLER) { bcl->stats.recv_bundles++; bcl->stats.recv_bundled += msg_msgcnt(msg); @@ -493,9 +499,12 @@ void tipc_bclink_recv_pkt(struct sk_buff *buf) bcl->stats.recv_fragmented++; tipc_node_unlock(node); tipc_net_route_msg(buf); + } else if (msg_user(msg) == NAME_DISTRIBUTOR) { + tipc_node_unlock(node); + tipc_named_recv(buf); } else { tipc_node_unlock(node); - tipc_net_route_msg(buf); + buf_discard(buf); } buf = NULL; tipc_node_lock(node);