summaryrefslogtreecommitdiff
path: root/sysdep/bsd/krt-sock.c
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 /sysdep/bsd/krt-sock.c
parent2a0af925b83f699d126cf0e733a49c75ffd86033 (diff)
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.
Diffstat (limited to 'sysdep/bsd/krt-sock.c')
-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)