Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
This commit is contained in:
commit
e12fe68ce3
305 changed files with 2767 additions and 1693 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) ||
|
||||
|
|
|
|||
|
|
@ -1379,8 +1379,11 @@ static int br_multicast_ipv4_rcv(struct net_bridge *br,
|
|||
if (unlikely(ip_fast_csum((u8 *)iph, iph->ihl)))
|
||||
return -EINVAL;
|
||||
|
||||
if (iph->protocol != IPPROTO_IGMP)
|
||||
if (iph->protocol != IPPROTO_IGMP) {
|
||||
if ((iph->daddr & IGMP_LOCAL_GROUP_MASK) != IGMP_LOCAL_GROUP)
|
||||
BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
len = ntohs(iph->tot_len);
|
||||
if (skb->len < len || len < ip_hdrlen(skb))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue