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