Below is a patch that allows MLD ICMP types without applying the interface filters to them. +-DLS [in-line & attached] diff -ruN linux-2.6.2/include/net/addrconf.h linux-2.6.2F1/include/net/addrconf
Why not in icmpv6_rcv()? we need to do pskb_pull() before touching type/code. Please do not remove this. We need to check destination (but not source) because the driver may be in "promisc." mode. --
"Hideaki YOSHIFUJI" <yoshfuji@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote on 02/06/2004 08:22:33 PM: I don't understand this question. It's needed every place *except* icmpv6_rcv(). Yes, you're right; I'll add
Sorry for any confusion. Yes, but it changes the original and traditional behavior. Well... It is okay not to check destination here with good hardware / driver. We however should check the destinati
Author: ldo Carvalho de Melo <acme@xxxxxxxxxxxxxxxx>
Date: Fri, 6 Feb 2004 22:40:42 -0800
Good idea; I'll incorporate all the comments, retest and repost. I think you mean (dev->flags & (IFF_PROMISC|IFF_ALLMULTI)) here, right? This certainly could be done and I had this in mind for the fu
Here's a revised version with all the comments incorporated. +-DLS diff -ruN linux-2.6.2/include/net/addrconf.h linux-2.6.2F2/include/net/addrconf.h -- linux-2.6.2/include/net/addrconf.h 2004-02-03 1
likely(!(skb->dev->flags & (IFF_PROMISC|IFF_ALLMULTI)))? Where is pskb_pull()? I'd suggest to check the protocol number != icmp there. After doing pskb_pull() in icmpv6_rcv(), we see type field. BTW,
"Hideaki YOSHIFUJI" <yoshfuji@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote on 02/09/2004 07:51:24 PM: If your question is "why use the deliver variable?", I left that because it'd need to be re-added when multic
No. My point is, !(skb->dev->flags & IFF_PROMISC|IFF_ALLMULTI) is likely true. And, let's concentrate on fixing the original bug: and seems needless to fix the bug. (Or you may want to submit another
"Hideaki YOSHIFUJI" <yoshfuji@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote on 02/10/2004 07:02:34 PM: Yes, "deliver" is set to the _expression_ that includes the check true, which is why the patch I sent has "if
David, they produce different assembly code. If we say deliver = likely(!(skb->dev->flags & (IFF_PROMISC|IFF_ALLMULTI))) || ipv6_chk_mcast_addr(skb->dev, &skb->nh.ipv6h->daddr, NULL); then we can run
Ok, here's what I hope is the final version of the patch, so we can finally put this to bed. :-) +-DLS diff -ruN linux-2.6.2/include/net/addrconf.h linux-2.6.2F2/include/net/addrconf.h -- linux-2.6.2
Well... You forgot to check if proto is IPPROTO_ICMPV6. (This is one reason why I want to check the icmpv6 code in icmpv6_rcv().) if (ipv6_addr_is_multicast(&hdr->daddr) && !ipv6_chk_mcast_addr(skb->
"Hideaki YOSHIFUJI" <yoshfuji@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote on 02/11/2004 06:03:28 PM: Arg! You're right! I had no idea what you were talking about with that comment about icmpv6_rcv() (the test c