mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 02:53:55 +00:00
bgpd: set ipv4-mapped ipv6 for ipv4 with ipv6 nexthop
The code was expected that no IPv6 global address was present but the previous commit was replacing nexthop.v6global by the link-local address instead of un-setting it in case of removal of the IPv6 global. Set also ipv4-mapped ipv6 address as nexthop when a link-local is found and it is an ipv4 prefix over ipv6 nexthop. Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
This commit is contained in:
parent
04c220bedb
commit
fc5a738409
@ -523,11 +523,13 @@ struct stream *bpacket_reformat_for_peer(struct bpacket *pkt,
|
||||
gnh_modified = 1;
|
||||
}
|
||||
|
||||
if (IN6_IS_ADDR_UNSPECIFIED(mod_v6nhg)) {
|
||||
if (peer->nexthop.v4.s_addr != INADDR_ANY) {
|
||||
ipv4_to_ipv4_mapped_ipv6(mod_v6nhg,
|
||||
peer->nexthop.v4);
|
||||
}
|
||||
if (peer->nexthop.v4.s_addr != INADDR_ANY &&
|
||||
(IN6_IS_ADDR_UNSPECIFIED(mod_v6nhg) ||
|
||||
(IN6_IS_ADDR_LINKLOCAL(mod_v6nhg) &&
|
||||
peer->connection->su.sa.sa_family == AF_INET6 &&
|
||||
paf->afi == AFI_IP))) {
|
||||
ipv4_to_ipv4_mapped_ipv6(mod_v6nhg, peer->nexthop.v4);
|
||||
gnh_modified = 1;
|
||||
}
|
||||
|
||||
if (IS_MAPPED_IPV6(&peer->nexthop.v6_global)) {
|
||||
|
Loading…
Reference in New Issue
Block a user