mirror of
https://gitlab.labs.nic.cz/labs/bird.git
synced 2024-05-11 16:54:54 +00:00
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.
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user