[PATCH] net/bird2: add multicast patch from bird mailing list

Jason A. Donenfeld Jason at zx2c4.com
Fri Apr 16 05:14:28 UTC 2021


This patch was made in response to a FreeBSD networking discussion and
is important in enabling babel support on interfaces that are neither
pointtopoint nor broadcast.

The upstream patch submission is:
https://bird.network.cz/pipermail/bird-users/2021-April/015415.html
---
 net/bird2/files/patch-babel.c | 55 +++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)
 create mode 100644 net/bird2/files/patch-babel.c

diff --git a/net/bird2/files/patch-babel.c b/net/bird2/files/patch-babel.c
new file mode 100644
index 000000000000..67181656fa07
--- /dev/null
+++ b/net/bird2/files/patch-babel.c
@@ -0,0 +1,55 @@
+From 70bb0dc8e041212fd9ee03e79c7b3301abf782ce Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= <toke at toke.dk>
+Date: Thu, 15 Apr 2021 15:44:50 +0200
+Subject: [PATCH] babel: Drop check for IF_MULTICAST interface flag
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The babel protocol code was checking interfaces for the IF_MULTICAST flag
+and refusing to run if this isn't present. However, there are cases where
+this flag doesn't correspond to the actual capability of sending multicast
+packets. For instance, Wireguard interfaces on FreeBSD doesn't set the
+required flags, but Babel will run just fine over such an interface given
+the right configuration.
+
+Since we're also checking for the presence of a link-local addresses right
+below the flag check, we don't really need it. So let's just drop the check
+and trust that users will only configure Babel on interfaces that can
+handle the traffic.
+
+Reported-by: Stefan Haller <stefan.haller at stha.de>
+Signed-off-by: Toke Høiland-Jørgensen <toke at toke.dk>
+---
+ proto/babel/babel.c | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/proto/babel/babel.c b/proto/babel/babel.c
+index 4b6b9d7f..297b86b0 100644
+--- a/proto/babel/babel.c
++++ b/proto/babel/babel.c
+@@ -1658,10 +1658,6 @@ babel_if_notify(struct proto *P, unsigned flags, struct iface *iface)
+     if (!(iface->flags & IF_UP))
+       return;
+ 
+-    /* We only speak multicast */
+-    if (!(iface->flags & IF_MULTICAST))
+-      return;
+-
+     /* Ignore ifaces without link-local address */
+     if (!iface->llv6)
+       return;
+@@ -1736,10 +1732,6 @@ babel_reconfigure_ifaces(struct babel_proto *p, struct babel_config *cf)
+     if (!(iface->flags & IF_UP))
+       continue;
+ 
+-    /* Ignore non-multicast ifaces */
+-    if (!(iface->flags & IF_MULTICAST))
+-      continue;
+-
+     /* Ignore ifaces without link-local address */
+     if (!iface->llv6)
+       continue;
+-- 
+2.31.1
+
-- 
2.31.1



More information about the freebsd-ports mailing list