mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
net-misc/quagga: drop obsolete patches
Package-Manager: Portage-2.3.31, Repoman-2.3.9
This commit is contained in:
@@ -1,42 +0,0 @@
|
||||
commit 1db1b9baea511995b67a9b282d5c97e87479fe5d
|
||||
Author: Mathieu Jadin <mathjadin@gmail.com>
|
||||
Date: Thu Dec 14 17:53:53 2017 +0100
|
||||
|
||||
bgpd: Fix mistake in NHT of connected IPv6 next-hops preventing route advertisement
|
||||
|
||||
Since quagga-1.2.0, the Next Hop validation for directly connected peers
|
||||
using IPv6 does not work.
|
||||
|
||||
In this setup, BGP updates contain two next hops: a global IPv6 address and
|
||||
a link-local IPv6 address (a correct behavior according to RFC 2545). This
|
||||
means that the length of the next hop attribute is 32 and not 16.
|
||||
|
||||
The problem comes from the function "make_prefix()" in "bgpd/bgp_nht.c". It
|
||||
refuses to build a prefix structure for a route when the length of the
|
||||
[Anext hop attribute is different from 16, even if a valid global IPv6
|
||||
address is available.
|
||||
|
||||
The route is mistakenly considered invalid and thus, it is not installed in
|
||||
the routing table.
|
||||
|
||||
Details: "make_prefix()" was not modified in quagga-1.2.0 but its
|
||||
interpretation was changed in commit
|
||||
3dda6b3eccb9a2a88d607372c83c04c796e7daac. Before this commit, the failure
|
||||
of "make_prefix()" was interpreted as a successful validation of the next
|
||||
hop.
|
||||
|
||||
diff --git a/bgpd/bgp_nht.c b/bgpd/bgp_nht.c
|
||||
index 1158ab15..d734c201 100644
|
||||
--- a/bgpd/bgp_nht.c
|
||||
+++ b/bgpd/bgp_nht.c
|
||||
@@ -409,8 +409,8 @@ make_prefix (int afi, struct bgp_info *ri, struct prefix *p)
|
||||
break;
|
||||
#ifdef HAVE_IPV6
|
||||
case AFI_IP6:
|
||||
- if (ri->attr->extra->mp_nexthop_len != 16
|
||||
- || IN6_IS_ADDR_LINKLOCAL (&ri->attr->extra->mp_nexthop_global))
|
||||
+ if (ri->attr->extra->mp_nexthop_len == 16
|
||||
+ && IN6_IS_ADDR_LINKLOCAL (&ri->attr->extra->mp_nexthop_global))
|
||||
return -1;
|
||||
|
||||
p->family = AF_INET6;
|
||||
@@ -1,31 +0,0 @@
|
||||
commit adda534f95ec87206c9dfd1b3bae05221dc29730
|
||||
Author: Rolf Eike Beer <eike@sf-mail.de>
|
||||
Date: Mon Dec 4 18:36:21 2017 +0100
|
||||
|
||||
bgpd: fix SIGBUS
|
||||
|
||||
There is one test failure in the testsuite on sparc:
|
||||
|
||||
Running ./bgpd.tests/testbgpcap.exp ...
|
||||
failed: testbgpcap ORF: ORF, simple, single entry, single tuple -- testbgpcap aborted!
|
||||
|
||||
The error is a SIGBUS in bgp_capability_mp_data() because of an unaligned
|
||||
memory access. Use memcpy() instead of direct assignments. Compilers on
|
||||
platforms that support unaligned accesses should be clever enough to
|
||||
optimize the function call away and do the direct store, so this should not
|
||||
hurt there.
|
||||
|
||||
diff --git a/bgpd/bgp_open.c b/bgpd/bgp_open.c
|
||||
index 28004230..d9ec4bef 100644
|
||||
--- a/bgpd/bgp_open.c
|
||||
+++ b/bgpd/bgp_open.c
|
||||
@@ -120,7 +120,8 @@ bgp_capability_vty_out (struct vty *vty, struct peer *peer)
|
||||
static void
|
||||
bgp_capability_mp_data (struct stream *s, struct capability_mp_data *mpc)
|
||||
{
|
||||
- mpc->afi = stream_getw (s);
|
||||
+ afi_t afi = stream_getw (s);
|
||||
+ memcpy(&mpc->afi, &afi, sizeof(mpc->afi));
|
||||
mpc->reserved = stream_getc (s);
|
||||
mpc->safi = stream_getc (s);
|
||||
}
|
||||
Reference in New Issue
Block a user