mirror of
https://github.com/archlinux-jerry/pkgbuilds
synced 2024-11-24 23:10:40 +08:00
33 lines
1.1 KiB
Diff
33 lines
1.1 KiB
Diff
|
From 17de3a023f7bde293892b41bfafe5740c8553fc8 Mon Sep 17 00:00:00 2001
|
||
|
From: "Ondrej Zajicek (work)" <santiago@crfreenet.org>
|
||
|
Date: Wed, 29 Apr 2020 02:50:29 +0200
|
||
|
Subject: [PATCH] BGP: Fix handling of strange IPv6 link-local-only next hops
|
||
|
|
||
|
There are three common ways how to encode IPv6 link-local-only next hops:
|
||
|
(:: ll), (ll), and (ll ll). We use the first one but we should accept all
|
||
|
three. The patch fixes handling of the last one.
|
||
|
|
||
|
Thanks to Sebastian Hahn for the bugreport.
|
||
|
---
|
||
|
proto/bgp/packets.c | 5 ++++-
|
||
|
1 file changed, 4 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/proto/bgp/packets.c b/proto/bgp/packets.c
|
||
|
index ee031c05..78fdd1e0 100644
|
||
|
--- a/proto/bgp/packets.c
|
||
|
+++ b/proto/bgp/packets.c
|
||
|
@@ -1157,7 +1157,10 @@ bgp_decode_next_hop_ip(struct bgp_parse_state *s, byte *data, uint len, rta *a)
|
||
|
nh[0] = ipa_from_ip6(get_ip6(data));
|
||
|
nh[1] = ipa_from_ip6(get_ip6(data+16));
|
||
|
|
||
|
- if (ipa_is_ip4(nh[0]) || !ip6_is_link_local(nh[1]))
|
||
|
+ if (ipa_is_link_local(nh[0]))
|
||
|
+ { nh[1] = nh[0]; nh[0] = IPA_NONE; }
|
||
|
+
|
||
|
+ if (ipa_is_ip4(nh[0]) || !ipa_is_link_local(nh[1]))
|
||
|
nh[1] = IPA_NONE;
|
||
|
}
|
||
|
else
|
||
|
--
|
||
|
2.24.1
|