diff options
Diffstat (limited to 'net/bridge/br_input.c')
| -rw-r--r-- | net/bridge/br_input.c | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index f3ac1e858ee1..f06ee39c73fd 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c @@ -60,7 +60,7 @@ int br_handle_frame_finish(struct sk_buff *skb)  	br = p->br;  	br_fdb_update(br, p, eth_hdr(skb)->h_source); -	if (is_multicast_ether_addr(dest) && +	if (!is_broadcast_ether_addr(dest) && is_multicast_ether_addr(dest) &&  	    br_multicast_rcv(br, p, skb))  		goto drop; @@ -77,7 +77,9 @@ int br_handle_frame_finish(struct sk_buff *skb)  	dst = NULL; -	if (is_multicast_ether_addr(dest)) { +	if (is_broadcast_ether_addr(dest)) +		skb2 = skb; +	else if (is_multicast_ether_addr(dest)) {  		mdst = br_mdb_get(br, skb);  		if (mdst || BR_INPUT_SKB_CB_MROUTERS_ONLY(skb)) {  			if ((mdst && mdst->mglist) ||  |