summaryrefslogtreecommitdiff
path: root/net/bridge/br_device.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2011-07-05 13:58:33 +0000
committerDavid S. Miller <davem@davemloft.net>2011-07-05 18:39:39 -0700
commit44661462ee1ee3c922754fc1f246867f0d01e7ea (patch)
treee0a040be7f73d3929d45e975ca0eef7025f8f93f /net/bridge/br_device.c
parent9b9cfe7cf663c16c0d93349cc0094bb28ae7135a (diff)
downloadkernel-common-44661462ee1ee3c922754fc1f246867f0d01e7ea.tar.gz
kernel-common-44661462ee1ee3c922754fc1f246867f0d01e7ea.tar.bz2
kernel-common-44661462ee1ee3c922754fc1f246867f0d01e7ea.zip
bridge: Always flood broadcast packets
As is_multicast_ether_addr returns true on broadcast packets as well, we need to explicitly exclude broadcast packets so that they're always flooded. This wasn't an issue before as broadcast packets were considered to be an unregistered multicast group, which were always flooded. However, as we now only flood such packets to router ports, this is no longer acceptable. Reported-by: Michael Guntsche <mike@it-loops.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_device.c')
-rw-r--r--net/bridge/br_device.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index c188c803c09c..32b8f9f7f79e 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -49,7 +49,9 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
skb_pull(skb, ETH_HLEN);
rcu_read_lock();
- if (is_multicast_ether_addr(dest)) {
+ if (is_broadcast_ether_addr(dest))
+ br_flood_deliver(br, skb);
+ else if (is_multicast_ether_addr(dest)) {
if (unlikely(netpoll_tx_running(dev))) {
br_flood_deliver(br, skb);
goto out;