diff --git a/net/bird2/Makefile b/net/bird2/Makefile --- a/net/bird2/Makefile +++ b/net/bird2/Makefile @@ -1,5 +1,5 @@ PORTNAME= bird -DISTVERSION= 2.0.10 +DISTVERSION= 2.0.11 CATEGORIES= net MASTER_SITES= https://bird.network.cz/download/ PKGNAMESUFFIX= 2 @@ -10,6 +10,9 @@ LICENSE= GPLv2 +FLAVORS= base netlink +netlink_PKGNAMESUFFIX= 2-netlink + USES= bison cpe gmake ncurses readline CONFLICTS= bird @@ -57,4 +60,14 @@ CONFIGURE_ARGS+=--with-protocols="${RT_PROT}" RPKI_LIB_DEPENDS= libssh.so:security/libssh +.include + +.if ${FLAVOR:U} == netlink +CONFIGURE_ARGS+=--with-sysconfig=bsd-netlink +EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-netlink +.if ${OSVERSION} < 1400073 +BROKEN=No netlink support +.endif +.endif + .include diff --git a/net/bird2/distinfo b/net/bird2/distinfo --- a/net/bird2/distinfo +++ b/net/bird2/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1656504519 -SHA256 (bird-2.0.10.tar.gz) = 7ed341ddd8dc87fa9736586b3515447a8436fec442d65f4022155ab9de1ffd5a -SIZE (bird-2.0.10.tar.gz) = 1276546 +TIMESTAMP = 1670848920 +SHA256 (bird-2.0.11.tar.gz) = 60a7b83b67b9d089d2a745a11fddd12461f631abc7b645b6c085adf90b3f55d6 +SIZE (bird-2.0.11.tar.gz) = 1301502 diff --git a/net/bird2/files/extra-patch-netlink b/net/bird2/files/extra-patch-netlink new file mode 100644 --- /dev/null +++ b/net/bird2/files/extra-patch-netlink @@ -0,0 +1,31 @@ +From d890c5cca7f6239ddd7ea605e45854658f50d39b Mon Sep 17 00:00:00 2001 +From: Alexander Chernikov +Date: Tue, 13 Sep 2022 12:08:58 +0000 +Subject: [PATCH 1/1] FreeBSD: add netlink support + +Netlink can be enabled by picking new sysconfig target: +./configure --with-sysconfig=bsd-netlink +--- + sysdep/bsd-netlink/Makefile | 9 +++++++++ + sysdep/cf/bsd-netlink.h | 34 ++++++++++++++++++++++++++++++++++ + sysdep/cf/linux.h | 2 ++ + sysdep/linux/netlink.c | 7 ++++++- + 4 files changed, 51 insertions(+), 1 deletion(-) + create mode 100644 sysdep/bsd-netlink/Makefile + create mode 100644 sysdep/cf/bsd-netlink.h + +diff --git sysdep/bsd-netlink/Makefile sysdep/bsd-netlink/Makefile +new file mode 100644 +index 00000000..90b639a4 +--- /dev/null ++++ sysdep/bsd-netlink/Makefile +@@ -0,0 +1,9 @@ ++src := $(s)../linux/netlink.c ++obj := $(objdir)/sysdep/bsd-netlink/netlink.o ++$(obj): $(src) ++ $(E)echo CC -o $@ -c $< ++ $(Q)$(CC) $(CFLAGS) -MMD -MP -o $@ -c $< ++$(all-daemon) ++$(conf-y-targets): $(s)../linux/netlink.Y ++ ++tests_objs := $(tests_objs) $(obj) diff --git a/net/bird2/files/patch-sysdep_bsd_sysio.h b/net/bird2/files/patch-sysdep_bsd_sysio.h new file mode 100644 --- /dev/null +++ b/net/bird2/files/patch-sysdep_bsd_sysio.h @@ -0,0 +1,48 @@ +diff --git sysdep/bsd/sysio.h sysdep/bsd/sysio.h +index f1887fb4..5167a5dd 100644 +--- sysdep/bsd/sysio.h ++++ sysdep/bsd/sysio.h +@@ -48,11 +48,16 @@ + static inline int + sk_setup_multicast4(sock *s) + { +- struct in_addr ifa = ip4_to_in4(s->iface->sysdep); + u8 ttl = s->ttl; + u8 n = 0; + + /* This defines where should we send _outgoing_ multicasts */ ++#ifdef __FreeBSD__ ++ struct ip_mreqn ifa = { .imr_ifindex = s->iface->index }; ++#else ++ struct in_addr ifa = ip4_to_in4(s->iface->sysdep); ++#endif ++ + if (setsockopt(s->fd, IPPROTO_IP, IP_MULTICAST_IF, &ifa, sizeof(ifa)) < 0) + ERR("IP_MULTICAST_IF"); + +@@ -68,8 +73,11 @@ sk_setup_multicast4(sock *s) + static inline int + sk_join_group4(sock *s, ip_addr maddr) + { ++#ifdef __FreeBSD__ ++ struct ip_mreqn mr = { .imr_multiaddr = ipa_to_in4(maddr), .imr_ifindex = s->iface->index }; ++#else + struct ip_mreq mr = INIT_MREQ4(maddr, s->iface); +- ++#endif + if (setsockopt(s->fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mr, sizeof(mr)) < 0) + ERR("IP_ADD_MEMBERSHIP"); + +@@ -79,8 +87,11 @@ sk_join_group4(sock *s, ip_addr maddr) + static inline int + sk_leave_group4(sock *s, ip_addr maddr) + { ++#ifdef __FreeBSD__ ++ struct ip_mreqn mr = { .imr_multiaddr = ipa_to_in4(maddr), .imr_ifindex = s->iface->index }; ++#else + struct ip_mreq mr = INIT_MREQ4(maddr, s->iface); +- ++#endif + if (setsockopt(s->fd, IPPROTO_IP, IP_DROP_MEMBERSHIP, &mr, sizeof(mr)) < 0) + ERR("IP_ADD_MEMBERSHIP"); + diff --git a/net/bird2/files/patch-sysdep_linux_netlink.c b/net/bird2/files/patch-sysdep_linux_netlink.c new file mode 100644 --- /dev/null +++ b/net/bird2/files/patch-sysdep_linux_netlink.c @@ -0,0 +1,22 @@ +--- sysdep/linux/netlink.c.orig 2022-12-15 15:03:21 UTC ++++ sysdep/linux/netlink.c +@@ -27,15 +27,15 @@ + #include "lib/hash.h" + #include "conf/conf.h" + ++#ifdef CONFIG_FREEBSD_NETLINK ++#include ++#include ++#endif + #ifdef CONFIG_LINUX_NETLINK + #include + #include + #include + #include +-#endif +-#ifdef CONFIG_FREEBSD_NETLINK +-#include +-#include + #endif + + #ifdef HAVE_MPLS_KERNEL