forked from Minki/linux
[IPV6] MCAST: Ensure to check multicast listener(s).
In ip6_mc_input(), we need to check whether we have listener(s) for
the packet.
After commit ae7bf20a63
, all packets
for multicast destinations are delivered to upper layer if
IFF_PROMISC or IFF_ALLMULTI is set.
In fact, bug was rather ancient; the original (before the commit)
intent of the dev->flags check was to skip the ipv6_chk_mcast_addr()
call, assuming L2 filters packets appropriately, but it was even not
true.
Let's explicitly check our multicast list.
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Acked-by: David L Stevens <dlstevens@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
9f09243890
commit
4c7966b86b
@ -239,8 +239,7 @@ int ip6_mc_input(struct sk_buff *skb)
|
|||||||
IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), IPSTATS_MIB_INMCASTPKTS);
|
IP6_INC_STATS_BH(ip6_dst_idev(skb->dst), IPSTATS_MIB_INMCASTPKTS);
|
||||||
|
|
||||||
hdr = ipv6_hdr(skb);
|
hdr = ipv6_hdr(skb);
|
||||||
deliver = unlikely(skb->dev->flags & (IFF_PROMISC|IFF_ALLMULTI)) ||
|
deliver = ipv6_chk_mcast_addr(skb->dev, &hdr->daddr, NULL);
|
||||||
ipv6_chk_mcast_addr(skb->dev, &hdr->daddr, NULL);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IPv6 multicast router mode isnt currently supported.
|
* IPv6 multicast router mode isnt currently supported.
|
||||||
|
Loading…
Reference in New Issue
Block a user