|
@@ -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) ||
|