diff --git a/main/quagga/0002-nhrpd-fix-neighbor-table-name-length.patch b/main/quagga/0002-nhrpd-fix-neighbor-table-name-length.patch
new file mode 100644
index 0000000000000000000000000000000000000000..97710d775b5589544ebba9ff94c82d9954c89862
--- /dev/null
+++ b/main/quagga/0002-nhrpd-fix-neighbor-table-name-length.patch
@@ -0,0 +1,43 @@
+From 60349fdd92936cb6633f7d31b10cb77d4baa32d4 Mon Sep 17 00:00:00 2001
+From: Kaarle Ritvanen <kunkku@alpinelinux.org>
+Date: Tue, 28 Mar 2023 22:11:37 +0300
+Subject: [PATCH 2/4] nhrpd: fix neighbor table name length
+
+User-space neighbor discovery was not enabled for IPv6 because the table
+name was not fully copied to the Netlink message.
+---
+ nhrpd/netlink_arp.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/nhrpd/netlink_arp.c b/nhrpd/netlink_arp.c
+index a418ecab..105e3620 100644
+--- a/nhrpd/netlink_arp.c
++++ b/nhrpd/netlink_arp.c
+@@ -13,6 +13,7 @@
+ #include <linux/netlink.h>
+ #include <linux/neighbour.h>
+ #include <linux/netfilter/nfnetlink_log.h>
++#include <string.h>
+ 
+ #include "thread.h"
+ #include "nhrpd.h"
+@@ -248,6 +249,7 @@ int netlink_configure_arp(unsigned int ifindex, int pf)
+ 	struct nlmsghdr *n;
+ 	struct ndtmsg *ndtm;
+ 	struct rtattr *rta;
++	char *name = pf == AF_INET ? "arp_cache" : "ndisc_cache";
+ 	struct zbuf *zb = zbuf_alloc(512);
+ 	int r;
+ 
+@@ -257,7 +259,7 @@ int netlink_configure_arp(unsigned int ifindex, int pf)
+ 		.ndtm_family = pf,
+ 	};
+ 
+-	znl_rta_push(zb, NDTA_NAME, pf == AF_INET ? "arp_cache" : "ndisc_cache", 10);
++	znl_rta_push(zb, NDTA_NAME, name, strlen(name));
+ 
+ 	rta = znl_rta_nested_push(zb, NDTA_PARMS);
+ 	znl_rta_push_u32(zb, NDTPA_IFINDEX, ifindex);
+-- 
+2.40.1
+
diff --git a/main/quagga/0003-nhrpd-ignore-non-host-addresses-on-NHRP-ifaces.patch b/main/quagga/0003-nhrpd-ignore-non-host-addresses-on-NHRP-ifaces.patch
new file mode 100644
index 0000000000000000000000000000000000000000..ec1bbdbe25de3a851d20281774292ee0d17fb0c4
--- /dev/null
+++ b/main/quagga/0003-nhrpd-ignore-non-host-addresses-on-NHRP-ifaces.patch
@@ -0,0 +1,44 @@
+From d8ab9b978777d4e3513f3bb7ccae38544dc66e66 Mon Sep 17 00:00:00 2001
+From: Kaarle Ritvanen <kunkku@alpinelinux.org>
+Date: Wed, 19 Apr 2023 17:40:39 +0300
+Subject: [PATCH 3/4] nhrpd: ignore non-host addresses on NHRP ifaces
+
+Contemporary kernels automatically add link-local IPv6 addresses on GRE
+interfaces. This patch makes nhrpd ignore such and other non-host
+addresses when selecting the best protocol address, instead of
+discarding such an address after the selection.
+---
+ nhrpd/nhrp_interface.c | 10 +++-------
+ 1 file changed, 3 insertions(+), 7 deletions(-)
+
+diff --git a/nhrpd/nhrp_interface.c b/nhrpd/nhrp_interface.c
+index 4ea80764..0d9a62d0 100644
+--- a/nhrpd/nhrp_interface.c
++++ b/nhrpd/nhrp_interface.c
+@@ -178,6 +178,9 @@ static void nhrp_interface_update_address(struct interface *ifp, afi_t afi, int
+ 	for (ALL_LIST_ELEMENTS_RO(ifp->connected, cnode, c)) {
+ 		if (PREFIX_FAMILY(c->address) != family)
+ 			continue;
++		/* On NHRP interfaces a host prefix is required */
++		if (if_ad->configured && c->address->prefixlen != 8 * prefix_blen(c->address))
++			continue;
+ 		if (best == NULL) {
+ 			best = c;
+ 			continue;
+@@ -196,13 +199,6 @@ static void nhrp_interface_update_address(struct interface *ifp, afi_t afi, int
+ 			continue;
+ 	}
+ 
+-	/* On NHRP interfaces a host prefix is required */
+-	if (best && if_ad->configured && best->address->prefixlen != 8 * prefix_blen(best->address)) {
+-		zlog_notice("%s: %s is not a host prefix", ifp->name,
+-			prefix2str(best->address, buf, sizeof buf));
+-		best = NULL;
+-	}
+-
+ 	/* Update address if it changed */
+ 	if (best)
+ 		prefix2sockunion(best->address, &addr);
+-- 
+2.40.1
+
diff --git a/main/quagga/0004-bgpd-fix-parsing-of-MP-EOR-marker.patch b/main/quagga/0004-bgpd-fix-parsing-of-MP-EOR-marker.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f2fc84bc93e89be57d8f401a8e14dfc77ddefc0d
--- /dev/null
+++ b/main/quagga/0004-bgpd-fix-parsing-of-MP-EOR-marker.patch
@@ -0,0 +1,25 @@
+From ac3348c41541f04e4794ee2ed264e8a6f6543a51 Mon Sep 17 00:00:00 2001
+From: Kaarle Ritvanen <kunkku@alpinelinux.org>
+Date: Sat, 6 May 2023 00:43:19 +0300
+Subject: [PATCH 4/4] bgpd: fix parsing of MP EOR marker
+
+---
+ bgpd/bgp_packet.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
+index 5a8b18a3..36fe7f76 100644
+--- a/bgpd/bgp_packet.c
++++ b/bgpd/bgp_packet.c
+@@ -1972,7 +1972,7 @@ bgp_update_receive (struct peer *peer, bgp_size_t size)
+       /* otherwise MP AFI/SAFI is an empty update, other than an empty
+        * MP_UNREACH_NLRI attr (with an AFI/SAFI we recognise).
+        */
+-      else if (attr.flag == BGP_ATTR_MP_UNREACH_NLRI
++      else if (attr.flag & ATTR_FLAG_BIT(BGP_ATTR_MP_UNREACH_NLRI)
+                && nlris[NLRI_MP_WITHDRAW].length == 0
+                && bgp_afi_safi_valid_indices (nlris[NLRI_MP_WITHDRAW].afi,
+                                               &nlris[NLRI_MP_WITHDRAW].safi))
+-- 
+2.40.1
+
diff --git a/main/quagga/APKBUILD b/main/quagga/APKBUILD
index 918febefd0f0cd67ac92de27faf43c5d6b826283..60aeec734194b7775ac67ee9bb6ccbc92774bce5 100644
--- a/main/quagga/APKBUILD
+++ b/main/quagga/APKBUILD
@@ -1,7 +1,7 @@
 # Maintainer: Natanael Copa <ncopa@alpinelinux.org>
 pkgname=quagga
 pkgver=1.2.4
-pkgrel=9
+pkgrel=10
 pkgdesc="A free routing daemon replacing Zebra supporting RIP, OSPF, BGP and NHRP"
 url="https://www.nongnu.org/quagga/"
 arch="all"
@@ -18,6 +18,9 @@ pkgusers="quagga"
 pkggroups="quagga"
 source="https://github.com/Quagga/quagga/releases/download/quagga-$pkgver/quagga-$pkgver.tar.gz
 	0001-nhrpd-change-ipsec-SA-count-to-32-bit.patch
+	0002-nhrpd-fix-neighbor-table-name-length.patch
+	0003-nhrpd-ignore-non-host-addresses-on-NHRP-ifaces.patch
+	0004-bgpd-fix-parsing-of-MP-EOR-marker.patch
 	1001-bgpd-allow-using-ebgp-multihop-for-ibgp-connections.patch
 	dont-hook-core-signals.patch
 
@@ -78,6 +81,9 @@ package() {
 sha512sums="
 3e72440bcccfd3c1a449a62b7ff8623441256399a2bee0a39fa0a19694a5a78ac909c5c2128a24735bc034ea8b0811827293b480a2584a3a4c8ae36be9cf1fcd  quagga-1.2.4.tar.gz
 264103030fa8d57e7e7bd8a271b258dd8bae86242e15431060e20827b62de46be6f59617c216161aa7bc141c9e18a5aecbdb342545288340024c40f46c717aa4  0001-nhrpd-change-ipsec-SA-count-to-32-bit.patch
+1bd0c9062d83518669de86ac6754565a696d84a624f77b703735fa2fd6414bac68cc662e4519fe4d794f8a711727fc08a8fbc9a194ee32a72261aa0694d5ab5f  0002-nhrpd-fix-neighbor-table-name-length.patch
+cd97c3b78d33f7a7bd9764a11e84bd05f437b7c2dc8c74a5d83e74c7ac11af4bb2ed35ef35f05cb074d41555fc4388b04e5df83a40eb38f1e60cc6d1814397d5  0003-nhrpd-ignore-non-host-addresses-on-NHRP-ifaces.patch
+3cad387546a960f16ea89e67041f6336e787df694606a923709afcefd56ce0d105c1ce0ab0e1ea8e38d1c343e28fd2df86db0eef83c80c15ddb13f068bf9b40b  0004-bgpd-fix-parsing-of-MP-EOR-marker.patch
 dfa33341119fe51caa7bc33b44256f57361f2e3f8192862cca215b312ceb68e6a8c264dbf2a43d6244e6152bfad110cb0fdbefb065d95dd50389cf613d9720b3  1001-bgpd-allow-using-ebgp-multihop-for-ibgp-connections.patch
 5ef5c5e6d70d991b33b13a062e25b6fbde395dceee36aea29384b0640a48d2957ed5f50d416a1f2f770bf69bae2340133e35b1114be7e1fa722eb6d3d021f37a  dont-hook-core-signals.patch
 13b5b57e10df013bd2d931abc49bf76b8c4dee59dbceab22c9f151ccb988b2c5f7167f2909027d5e0f990b59da8de115667b02484aee9a67d347625700f6cacd  bgpd.initd