include $(TOPDIR)/rules.mk
PKG_NAME:=frr
-PKG_VERSION:=8.3.1
-PKG_RELEASE:=$(AUTORELEASE)
-PKG_SOURCE_DATE:=2022-10-14
+PKG_VERSION:=8.4.1
+PKG_RELEASE:=1
+PKG_SOURCE_DATE:=2022-11-29
PKG_SOURCE:=$(PKG_NAME)-$(PKG_SOURCE_DATE).tar.gz
-PKG_SOURCE_VERSION:=b9cb689f3c4b78fb047216ed41d8c79424b1774f
+PKG_SOURCE_VERSION:=7d7b33a0281b233757606bb1fa4e9c056c57084f
PKG_SOURCE_URL:=https://codeload.github.com/FRRouting/frr/tar.gz/$(PKG_SOURCE_VERSION)?
-PKG_HASH:=bc4aa020f3725c499093ea3c98f9c21160fc1ae06439a698f39f6a9c55c2825a
+PKG_HASH:=9899f2c6ecb6cce5bf7d56ddb9fc137dd8388f7201a52595c93d33572092fcaf
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_SOURCE_VERSION)
--- a/lib/thread.c
+++ b/lib/thread.c
-@@ -867,13 +867,9 @@ static void thread_free(struct thread_ma
+@@ -870,13 +870,9 @@ static void thread_free(struct thread_ma
XFREE(MTYPE_THREAD, thread);
}
/*
* If timer_wait is null here, that means poll() should block
* indefinitely, unless the thread_master has overridden it by setting
-@@ -904,58 +900,15 @@ static int fd_poll(struct thread_master
+@@ -907,58 +903,15 @@ static int fd_poll(struct thread_master
rcu_assert_read_unlocked();
/* add poll pipe poker */
while (read(m->io_pipe[0], &trash, sizeof(trash)) > 0)
;
-@@ -1762,7 +1715,7 @@ struct thread *thread_fetch(struct threa
+@@ -1768,7 +1721,7 @@ struct thread *thread_fetch(struct threa
struct timeval zerotime = {0, 0};
struct timeval tv;
struct timeval *tw = NULL;
int num = 0;
do {
-@@ -1838,14 +1791,14 @@ struct thread *thread_fetch(struct threa
+@@ -1844,14 +1797,14 @@ struct thread *thread_fetch(struct threa
pthread_mutex_unlock(&m->mtx);
{