aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Cochard <olivier@FreeBSD.org>2022-12-15 17:34:36 +0000
committerOlivier Cochard <olivier@FreeBSD.org>2022-12-15 17:57:16 +0000
commitaf97566029883a46fc4d58cf5e066f25cd075107 (patch)
tree4073abf7ea42b9d2bfd0f5f629a1a5509fa6afe8
parente2b972475b27ebc688f2bf9382486baaddb816bd (diff)
downloadports-af97566029883a46fc4d58cf5e066f25cd075107.tar.gz
ports-af97566029883a46fc4d58cf5e066f25cd075107.zip
net/bird2: Update to 2.0.11 and add netlink flavor
The netlink flavor is experimental and available on current only. ChangeLog: https://bird.network.cz/pipermail/bird-users/2022-December/016431.html Obtained from: melifaro Differential Revision: https://reviews.freebsd.org/D37588
-rw-r--r--net/bird2/Makefile15
-rw-r--r--net/bird2/distinfo6
-rw-r--r--net/bird2/files/extra-patch-netlink31
-rw-r--r--net/bird2/files/patch-sysdep_bsd_sysio.h48
-rw-r--r--net/bird2/files/patch-sysdep_linux_netlink.c22
5 files changed, 118 insertions, 4 deletions
diff --git a/net/bird2/Makefile b/net/bird2/Makefile
index eabdf825eae6..9a23335cc348 100644
--- 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 @@ WWW= https://bird.network.cz/
LICENSE= GPLv2
+FLAVORS= base netlink
+netlink_PKGNAMESUFFIX= 2-netlink
+
USES= bison cpe gmake ncurses readline
CONFLICTS= bird
@@ -57,4 +60,14 @@ STATIC_VARS= rt_prot+=static
CONFIGURE_ARGS+=--with-protocols="${RT_PROT}"
RPKI_LIB_DEPENDS= libssh.so:security/libssh
+.include <bsd.port.options.mk>
+
+.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 <bsd.port.mk>
diff --git a/net/bird2/distinfo b/net/bird2/distinfo
index 8e0364275638..3b3692fdba36 100644
--- 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
index 000000000000..fd58ddaed2b3
--- /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 <melifaro@FreeBSD.org>
+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
index 000000000000..2991c873126e
--- /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
index 000000000000..b84707c46be2
--- /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 <netlink/netlink.h>
++#include <netlink/netlink_route.h>
++#endif
+ #ifdef CONFIG_LINUX_NETLINK
+ #include <asm/types.h>
+ #include <linux/if.h>
+ #include <linux/netlink.h>
+ #include <linux/rtnetlink.h>
+-#endif
+-#ifdef CONFIG_FREEBSD_NETLINK
+-#include <netlink/netlink.h>
+-#include <netlink/netlink_route.h>
+ #endif
+
+ #ifdef HAVE_MPLS_KERNEL