From: Lucian CRISTIAN Date: Fri, 24 Jan 2025 22:41:35 +0000 (+0200) Subject: frr: update to 10.2.1 X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=666db48f73a296b1ac4c8eb9d5a874912deefeca;p=feed%2Fpackages.git frr: update to 10.2.1 Signed-off-by: Lucian CRISTIAN --- diff --git a/net/frr/Makefile b/net/frr/Makefile index e0e5e1ee85..de69a07b69 100644 --- a/net/frr/Makefile +++ b/net/frr/Makefile @@ -7,15 +7,15 @@ include $(TOPDIR)/rules.mk PKG_NAME:=frr -PKG_VERSION:=8.5.1 +PKG_VERSION:=10.2.1 PKG_RELEASE:=1 -PKG_SOURCE_DATE:=2023-05-12 +PKG_SOURCE_DATE:=2025-01-21 PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz -PKG_SOURCE_VERSION:=05469ab2b553302c2a7032f4c89e4510dc3fa6d9 +PKG_SOURCE_VERSION:=989328c7e47c7bbcf3364d5424ac17f49fd05c57 PKG_SOURCE_URL:=https://codeload.github.com/FRRouting/frr/tar.gz/$(PKG_SOURCE_VERSION)? -PKG_HASH:=caf3fcf1998ecd9a08e67373921a2d4bf49dbfc707008d20a1d38fd1606ef298 +PKG_HASH:=d8ea2bad243cfcfd96b9b4a5dd524fe1deeb577cd535529babe24a02cae26f06 PKG_MAINTAINER:=Lucian Cristian PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION) @@ -49,8 +49,7 @@ PKG_CONFIG_DEPENDS:= \ CONFIG_FRR_INTERNAL \ CONFIG_FRR_SNMP \ CONFIG_FRR_NO_SNMP \ - CONFIG_PACKAGE_frr-libfrr \ - CONFIG_PACKAGE_frr-vtysh \ + CONFIG_PACKAGE_frr \ CONFIG_PACKAGE_frr-watchfrr \ CONFIG_PACKAGE_frr-zebra \ $(patsubst %,CONFIG_PACKAGE_frr-%,$(PKG_DAEMON_AVAILABLE)) \ @@ -60,13 +59,13 @@ PKG_BUILD_PARALLEL:=1 PKG_INSTALL:=1 PKG_BUILD_FLAGS:=lto -PKG_BUILD_DEPENDS:=frr/host +PKG_BUILD_DEPENDS:=frr/host protobuf-c/host HOST_BUILD_DEPENDS:=python3/host include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/host-build.mk -define Package/frr-libfrr/config +define Package/frr/config source "$(SOURCE)/Config.in" endef @@ -80,7 +79,8 @@ endef define Package/frr $(call Package/frr/Default) - DEPENDS:=+librt + DEPENDS:=+librt +libatomic +libcap +libncurses +libjson-c +libreadline \ + +libyang +libprotobuf-c +FRR_OPENSSL:libopenssl +FRR_SNMP:libnetsnmp +more TITLE:=The FRRouting (FRR) Software Routing Suite MENU:=1 endef @@ -94,31 +94,15 @@ define Package/frr/description NHRP. endef -define Package/frr-libfrr - $(call Package/frr/Default) - TITLE:=zebra library - DEPENDS+=+librt +libatomic +libcap +libjson-c +libyang +FRR_OPENSSL:libopenssl +FRR_SNMP:libnetsnmp - CONFLICTS:=quagga-libzebra -endef - -define Package/frr-vtysh - $(call Package/frr/Default) - DEPENDS+=+frr-libfrr +libreadline +libncurses +more - TITLE:=integrated shell for frr routing software - CONFLICTS:=quagga-vtysh -endef - define Package/frr-watchfrr $(call Package/frr/Default) TITLE:=frr watchdog - DEPENDS+=+frr-libfrr DEFAULT:=y if PACKAGE_frr endef define Package/frr-zebra $(call Package/frr/Default) TITLE:=Zebra daemon - DEPENDS+=+frr-libfrr DEFAULT:=y if PACKAGE_frr CONFLICTS:=quagga-zebra endef @@ -126,7 +110,7 @@ endef define Package/frr-pythontools $(call Package/frr/Default) TITLE:=Python reload tool - DEPENDS+=+frr-libfrr +python3-base +python3-light +python3-logging + DEPENDS+=+python3-base +python3-light +python3-logging endef ##Migrate from quagga @@ -144,7 +128,10 @@ define BuildDaemon define Package/frr-$(1) $$(call Package/frr/Default) TITLE:= $(1) routing engine - DEPENDS+=frr-libfrr $(2) +ifeq ($(1),bgpd) + KCONFIG:=CONFIG_TCP_MD5SIG=y +endif + DEPENDS+=$(2) endef # if [ "$(1)" == "bfdd" ]; then \ # export HAVE_BFDD == 1 ; fi @@ -160,7 +147,7 @@ define BuildDaemon $$(eval $$(call BuildPackage,frr-$(1))) endef -define Package/frr-libfrr/conffiles +define Package/frr/conffiles /etc/frr/daemons /etc/frr/frr.conf /etc/frr/vtysh.conf @@ -177,6 +164,9 @@ HOST_CPPFLAGS += -I$(STAGING_DIR_HOST)/include/libelf HOST_CONFIGURE_ARGS+= \ --enable-clippy-only +HOST_MAKE_FLAGS = \ + LIBS+='-lz' + define Host/Install $(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/bin $(INSTALL_BIN) $(HOST_BUILD_DIR)/lib/clippy $(STAGING_DIR_HOSTPKG)/bin/ @@ -185,6 +175,8 @@ endef CONFIGURE_ARGS+= \ --with-clippy=$(STAGING_DIR_HOSTPKG)/bin/clippy \ --prefix=/usr \ + --enable-vtysh \ + --enable-zebra \ --enable-shared \ --disable-static \ --enable-user=network \ @@ -197,15 +189,20 @@ CONFIGURE_ARGS+= \ $(if $(CONFIG_FRR_OPENSSL),--with-crypto=openssl,) \ $(if $(CONFIG_FRR_SNMP),--enable-snmp,) \ $(foreach m,$(PKG_DAEMON_AVAILABLE), \ - $(call autoconf_bool,CONFIG_PACKAGE_frr-$(m),$(m)) ) \ - $(call autoconf_bool,CONFIG_PACKAGE_frr-vtysh,vtysh) \ - $(call autoconf_bool,CONFIG_PACKAGE_frr-libfrr,zebra) + $(call autoconf_bool,CONFIG_PACKAGE_frr-$(m),$(m)) ) define Package/frr/install $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/init.d $(INSTALL_BIN) ./files/frrcommon.sh $(1)/usr/sbin/ $(INSTALL_BIN) ./files/frr $(1)/etc/init.d/ + $(INSTALL_DIR) $(1)/usr/bin $(1)/etc/frr + $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vtysh $(1)/usr/bin/ + $(INSTALL_CONF) ./files/vtysh.conf $(1)/etc/frr/ + $(INSTALL_DIR) $(1)/usr/lib $(1)/etc/frr + $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrr.so* $(1)/usr/lib/ + $(if $(CONFIG_FRR_SNMP),$(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrrsnmp.so* $(1)/usr/lib/,) + $(INSTALL_CONF) ./files/{frr.conf,daemons} $(1)/etc/frr/ endef define Package/frr-watchfrr/install @@ -219,14 +216,6 @@ define Package/frr-zebra/install $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/zebra $(1)/usr/sbin/ endef -define Package/frr-libfrr/install - $(INSTALL_DIR) $(1)/usr/lib $(1)/etc/frr - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrr.so* $(1)/usr/lib/ - $(if $(CONFIG_FRR_SNMP),$(CP) $(PKG_INSTALL_DIR)/usr/lib/libfrrsnmp.so* $(1)/usr/lib/,) - $(INSTALL_CONF) ./files/{frr.conf,daemons} $(1)/etc/frr/ -endef - - define Package/frr-pythontools/install $(INSTALL_DIR) $(1)/usr/lib/frr $(1)/usr/sbin $(1)/etc/frr $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/*.py $(1)/usr/lib/frr/ @@ -234,19 +223,11 @@ define Package/frr-pythontools/install $(INSTALL_CONF) $(PKG_BUILD_DIR)/tools/etc/frr/support_bundle_commands.conf $(1)/etc/frr/ endef -define Package/frr-vtysh/install - $(INSTALL_DIR) $(1)/usr/bin $(1)/etc/frr - $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/vtysh $(1)/usr/bin/ - $(INSTALL_CONF) ./files/vtysh.conf $(1)/etc/frr/ -endef - $(eval $(call HostBuild)) $(eval $(call BuildPackage,frr)) -$(eval $(call BuildPackage,frr-libfrr)) $(eval $(call BuildPackage,frr-pythontools)) $(eval $(call BuildPackage,frr-watchfrr)) $(eval $(call BuildPackage,frr-zebra)) -$(eval $(call BuildPackage,frr-vtysh)) $(eval $(call BuildDaemon,babeld,)) $(eval $(call BuildDaemon,bfdd,)) $(eval $(call BuildDaemon,bgpd,)) diff --git a/net/frr/files/frrcommon.sh b/net/frr/files/frrcommon.sh index f59fce8730..9642677183 100644 --- a/net/frr/files/frrcommon.sh +++ b/net/frr/files/frrcommon.sh @@ -341,7 +341,7 @@ if [ -z "$FRR_PATHSPACE" ]; then load_old_config "/etc/sysconfig/frr" fi -if { declare -p watchfrr_options 2>/dev/null || true; } | grep -q '^declare \-a'; then +if { declare -p watchfrr_options 2>/dev/null || true; } | grep -q '^declare -a'; then log_warning_msg "watchfrr_options contains a bash array value." \ "The configured value is intentionally ignored since it is likely wrong." \ "Please remove or fix the setting." diff --git a/net/frr/patches/098-fix_mips_libyang.patch b/net/frr/patches/098-fix_mips_libyang.patch index 3cf24c9853..39a84a7647 100644 --- a/net/frr/patches/098-fix_mips_libyang.patch +++ b/net/frr/patches/098-fix_mips_libyang.patch @@ -1,6 +1,6 @@ --- a/lib/northbound.h +++ b/lib/northbound.h -@@ -593,11 +593,7 @@ struct frr_yang_module_info { +@@ -665,11 +665,7 @@ struct frr_yang_module_info { /* Priority - lower priorities are processed first. */ uint32_t priority; diff --git a/net/frr/patches/996-qpb_header_fix.patch b/net/frr/patches/996-qpb_header_fix.patch new file mode 100644 index 0000000000..07b06febff --- /dev/null +++ b/net/frr/patches/996-qpb_header_fix.patch @@ -0,0 +1,11 @@ +--- a/qpb/qpb_allocator.h ++++ b/qpb/qpb_allocator.h +@@ -14,7 +14,7 @@ + #ifndef _QPB_ALLOCATOR_H_ + #define _QPB_ALLOCATOR_H_ + +-#include ++#include + + struct linear_allocator_t_; + diff --git a/net/frr/patches/997-reverse_python_test.patch b/net/frr/patches/997-reverse_python_test.patch index 8e454a4566..16232c410a 100644 --- a/net/frr/patches/997-reverse_python_test.patch +++ b/net/frr/patches/997-reverse_python_test.patch @@ -1,6 +1,6 @@ --- a/configure.ac +++ b/configure.ac -@@ -839,7 +839,6 @@ fi +@@ -913,7 +913,6 @@ AC_DEFINE_UNQUOTED([DFLT_NAME], ["$DFLT_ # AS_IF([test "$host" = "$build"], [ diff --git a/net/frr/patches/999-thread_reverse.patch b/net/frr/patches/999-thread_reverse.patch deleted file mode 100644 index 0f5b24bf6f..0000000000 --- a/net/frr/patches/999-thread_reverse.patch +++ /dev/null @@ -1,111 +0,0 @@ ---- a/lib/thread.c -+++ b/lib/thread.c -@@ -868,13 +868,9 @@ static void thread_free(struct thread_ma - XFREE(MTYPE_THREAD, thread); - } - --static int fd_poll(struct thread_master *m, const struct timeval *timer_wait, -- bool *eintr_p) -+static int fd_poll(struct thread_master *m, struct pollfd *pfds, nfds_t pfdsize, -+ nfds_t count, const struct timeval *timer_wait) - { -- sigset_t origsigs; -- unsigned char trash[64]; -- nfds_t count = m->handler.copycount; -- - /* - * If timer_wait is null here, that means poll() should block - * indefinitely, unless the thread_master has overridden it by setting -@@ -905,58 +901,15 @@ static int fd_poll(struct thread_master - rcu_assert_read_unlocked(); - - /* add poll pipe poker */ -- assert(count + 1 < m->handler.pfdsize); -- m->handler.copy[count].fd = m->io_pipe[0]; -- m->handler.copy[count].events = POLLIN; -- m->handler.copy[count].revents = 0x00; -- -- /* We need to deal with a signal-handling race here: we -- * don't want to miss a crucial signal, such as SIGTERM or SIGINT, -- * that may arrive just before we enter poll(). We will block the -- * key signals, then check whether any have arrived - if so, we return -- * before calling poll(). If not, we'll re-enable the signals -- * in the ppoll() call. -- */ -- -- sigemptyset(&origsigs); -- if (m->handle_signals) { -- /* Main pthread that handles the app signals */ -- if (frr_sigevent_check(&origsigs)) { -- /* Signal to process - restore signal mask and return */ -- pthread_sigmask(SIG_SETMASK, &origsigs, NULL); -- num = -1; -- *eintr_p = true; -- goto done; -- } -- } else { -- /* Don't make any changes for the non-main pthreads */ -- pthread_sigmask(SIG_SETMASK, NULL, &origsigs); -- } -+ assert(count + 1 < pfdsize); -+ pfds[count].fd = m->io_pipe[0]; -+ pfds[count].events = POLLIN; -+ pfds[count].revents = 0x00; - --#if defined(HAVE_PPOLL) -- struct timespec ts, *tsp; -+ num = poll(pfds, count + 1, timeout); - -- if (timeout >= 0) { -- ts.tv_sec = timeout / 1000; -- ts.tv_nsec = (timeout % 1000) * 1000000; -- tsp = &ts; -- } else -- tsp = NULL; -- -- num = ppoll(m->handler.copy, count + 1, tsp, &origsigs); -- pthread_sigmask(SIG_SETMASK, &origsigs, NULL); --#else -- /* Not ideal - there is a race after we restore the signal mask */ -- pthread_sigmask(SIG_SETMASK, &origsigs, NULL); -- num = poll(m->handler.copy, count + 1, timeout); --#endif -- --done: -- -- if (num < 0 && errno == EINTR) -- *eintr_p = true; -- -- if (num > 0 && m->handler.copy[count].revents != 0 && num--) -+ unsigned char trash[64]; -+ if (num > 0 && pfds[count].revents != 0 && num--) - while (read(m->io_pipe[0], &trash, sizeof(trash)) > 0) - ; - -@@ -1766,7 +1719,7 @@ struct thread *thread_fetch(struct threa - struct timeval zerotime = {0, 0}; - struct timeval tv; - struct timeval *tw = NULL; -- bool eintr_p = false; -+ - int num = 0; - - do { -@@ -1842,14 +1795,14 @@ struct thread *thread_fetch(struct threa - - pthread_mutex_unlock(&m->mtx); - { -- eintr_p = false; -- num = fd_poll(m, tw, &eintr_p); -+ num = fd_poll(m, m->handler.copy, m->handler.pfdsize, -+ m->handler.copycount, tw); - } - pthread_mutex_lock(&m->mtx); - - /* Handle any errors received in poll() */ - if (num < 0) { -- if (eintr_p) { -+ if (errno == EINTR) { - pthread_mutex_unlock(&m->mtx); - /* loop around to signal handler */ - continue;