On Mon, Jan 28, 2019 at 01:36:44PM +1000, David Gwynne wrote: > > > > On 27 Dec 2018, at 5:42 pm, Claudio Jeker <cje...@diehard.n-r-g.com> wrote: > > > > On Wed, Dec 26, 2018 at 09:27:59PM +0100, Denis Fondras wrote: > >> Resend because of nasty typo :/ > >> > >> On Mon, Dec 24, 2018 at 08:43:10PM -0200, Martin Pieuchot wrote: > >>> I'm not happy with adding the IFF_MULTICAST flag and SIOC{ADD,DEL}MULTI > >>> ioctls. It seems to be a common pattern between in existing > >>> pseudo-driver, > >>> so this shouldn't block you. However I'd greatly appreciate if you > >>> could explain to us which code is asking for this and if this could be > >>> improved. > >>> > >> > >> Interface needs IFF_MULTICAST when enabling IPv6 as per in6_ifattach(). > >> When an address is configured, the interface joins multicast groups with > >> in6_joingroup() (hence use SIOCADDMULTI) but only if IFF_MULTICAST is set. > >> It is > >> useful for interfaces extern-facing interfaces, not so much for internal > >> (like > >> mpe) as they won't process all-{nodes, routers} packets. > >> > >> We may remove the test in in6_ifattach() because there are many tests > >> through > >> the stack. It works if I disable the test in in6_ifattach() and remove the > >> IFF_MULTICAST. However I haven't tested further so it may break elsewhere. > >> > > > > Doing IFF_MULTICAST on a true IFF_POINTOPOINT interface is indeed trivial > > and save. I think that bit of the mpe(4) diff is OK and I would not go and > > try to work around this in in6 code. IPv6 requires multicast and it was an > > oversight in mpe(4) to not add it. > > My current thinking on this is that IFF_MULTICAST should be used by v6 to > decide if an interface can do neighbour discovery or not, it should not be > used to decide if an interface can have an IPv6 address assigned or not. You > should be able to assign v6 to any interface that can transport it, but if it > can't do ND then you'll need to statically assign prefixes. Assigning > prefixes is what bgpd implementing VPNv6 would be doing, and it would work > fine. > > This might mean we don't need IFF_MULTICAST on the layer three p2p tunnel > interfaces...
On a pure p2p tunnel multicast is for free and so IFF_MULTICAST can be set without issues. On a point to multipoint interface like mpe(4) setting IFF_MULTICAST would have some implications since the interface would support multicast which requires to send the packet to more than one endpoint. This is doable but I think not implemented (and nobody cares about that). So keeping mpe(4) IFF_MULTICAST free would make sense. Yes, ND needs local-multicast (not sure if that is a requirement for IPv6 in itself). I would say no but for that our stack needs changes. -- :wq Claudio