]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/bridge/br_input.c
Merge branch 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/linville...
[linux-2.6-omap-h63xx.git] / net / bridge / br_input.c
index dad4094897530c3ffb97d1ba998b9acfd7ac7891..bfa4d8c333f7b727946e40c4c33e159d4fdbfe2f 100644 (file)
@@ -19,7 +19,8 @@
 #include <linux/netfilter_bridge.h>
 #include "br_private.h"
 
-const unsigned char bridge_ula[6] = { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 };
+/* Bridge group multicast address 802.1d (pg 51). */
+const u8 br_group_address[ETH_ALEN] = { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 };
 
 static void br_pass_frame_up(struct net_bridge *br, struct sk_buff *skb)
 {
@@ -65,6 +66,7 @@ int br_handle_frame_finish(struct sk_buff *skb)
        }
 
        if (is_multicast_ether_addr(dest)) {
+               br->statistics.multicast++;
                br_flood_forward(br, skb, !passedup);
                if (!passedup)
                        br_pass_frame_up(br, skb);
@@ -110,7 +112,7 @@ static int br_handle_local_finish(struct sk_buff *skb)
  */
 static inline int is_link_local(const unsigned char *dest)
 {
-       return memcmp(dest, bridge_ula, 5) == 0 && (dest[5] & 0xf0) == 0;
+       return memcmp(dest, br_group_address, 5) == 0 && (dest[5] & 0xf0) == 0;
 }
 
 /*
@@ -124,9 +126,6 @@ int br_handle_frame(struct net_bridge_port *p, struct sk_buff **pskb)
        struct sk_buff *skb = *pskb;
        const unsigned char *dest = eth_hdr(skb)->h_dest;
 
-       if (p->state == BR_STATE_DISABLED)
-               goto err;
-
        if (!is_valid_ether_addr(eth_hdr(skb)->h_source))
                goto err;