On Mon, Apr 19, 2021 at 03:55:18PM +0200, Toke Høiland-Jørgensen wrote: > Ondrej Zajicek <[email protected]> writes: > > > Is there a reason why to disregard the IF_MULTICAST flag? This seems to me > > more like a bug in FreeBSD Wireguard implementation that should be fixed > > there. Is this flag properly checked on Linux, or is there some reason why > > the flag is missing? > > We did fix Wireguard - see: > https://git.zx2c4.com/wireguard-freebsd/patch/?id=a7a84a17faf784857f076e37aa4818f6b6c12a95 > > However, that didn't help, Babel still refused to use the interface. > Looking at krt-sock.c, the IF_MULTICAST flag is only set on > IFF_POINTOPOINT or IFF_BROADCAST on bsd. The Linux code (in netlink.c) > has a further: > > if (fl & IFF_MULTICAST) > f.flags |= IF_MULTICAST; > > beneath the other flag checks, so maybe that's really what's missing on > the BSD side?
Yes, it is likely that it is an issue in sysdep/bsd code. > > Routing protocols in BIRD generally follow this flag (and perhaps use > > it to switch to unicast-only mode), so i do not see why Babel should > > behave differently. > > Yeah, I do believe I originally copied that check from one of the other > protocols. I can see how it makes sense to check the flag and change > operation mode based on it, but given that Babel doesn't do that it just > seems kinda redundant? If the interface *actually* is unable to send > multicast packets, the subsequent socket operation is going to fail, and > at least that produces an error message instead of just silently > ignoring the interface like that flag check does :) Well, i am OK with generating a warning in cases of non-matching interface type, instead of ignoring it silently. (In contrast to iface down or missing lladdr, which should be silent, as it may correct later.) -- Elen sila lumenn' omentielvo Ondrej 'Santiago' Zajicek (email: [email protected]) OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net) "To err is human -- to blame it on a computer is even more so."
