aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToke Høiland-Jørgensen <toke@toke.dk>2021-05-10 19:49:43 +0200
committerOndrej Zajicek (work) <santiago@crfreenet.org>2021-05-10 19:49:43 +0200
commitb17adf073594974b05a60ddaaa6e36da4eac4831 (patch)
treec54df56f466b6cdcce6b6fd97524b74e62db261c
parent2a0af925b83f699d126cf0e733a49c75ffd86033 (diff)
downloadbird-b17adf073594974b05a60ddaaa6e36da4eac4831.tar.gz
BSD: Propagate OS-level IFF_MULTICAST to internal IF_MULTICAST flag
The BSD code did not propagate the OS-level IFF_MULTICAST flag to the Bird-internal IF_MULTICAST flag, which causes problems with Wireguard interfaces on FreeBSD. The Linux sysdep code does propagate the flag already, so just copy over the same check and flag update.
-rw-r--r--sysdep/bsd/krt-sock.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sysdep/bsd/krt-sock.c b/sysdep/bsd/krt-sock.c
index ea0cc4d9..5c905bc9 100644
--- a/sysdep/bsd/krt-sock.c
+++ b/sysdep/bsd/krt-sock.c
@@ -665,6 +665,9 @@ krt_read_ifinfo(struct ks_msg *msg, int scan)
else
f.flags |= IF_MULTIACCESS; /* NBMA */
+ if (fl & IFF_MULTICAST)
+ f.flags |= IF_MULTICAST;
+
iface = if_update(&f);
if (!scan)