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:
parent
b465604eb1
commit
17de3a023f
1 changed files with 4 additions and 1 deletions
|
@ -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[0] = ipa_from_ip6(get_ip6(data));
|
||||||
nh[1] = ipa_from_ip6(get_ip6(data+16));
|
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;
|
nh[1] = IPA_NONE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in a new issue