Ondrej Zajicek <[email protected]> writes: > 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.
Alright, I'll send a patch for that then :) >> > 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.) OK, fine with me; I'll send an updated patch that adds a warning instead of dropping the check... -Toke
