fix(bgp_policies.go): don't get BGP peers twice

Fixes a problem where a user would end up with redundant external peers
in their BGP policies because getting peers is IP family agnostic and
yet is run twice on the same list.

This also ruined unit test consistency.
This commit is contained in:
Aaron U'Ren 2023-03-09 15:25:38 -06:00 committed by Aaron U'Ren
parent 06f5f8babf
commit 31c22ff634

View File

@ -430,6 +430,18 @@ func (nrc *NetworkRoutingController) addExternalBGPPeersDefinedSet() (map[v1core
externalBgpPeers := make([]string, 0) externalBgpPeers := make([]string, 0)
externalBGPPeerCIDRs := make(map[v1core.IPFamily][]string) externalBGPPeerCIDRs := make(map[v1core.IPFamily][]string)
if len(nrc.globalPeerRouters) > 0 {
for _, peer := range nrc.globalPeerRouters {
externalBgpPeers = append(externalBgpPeers, peer.Conf.NeighborAddress)
}
}
if len(nrc.nodePeerRouters) > 0 {
externalBgpPeers = append(externalBgpPeers, nrc.nodePeerRouters...)
}
if len(externalBgpPeers) == 0 {
return externalBGPPeerCIDRs, nil
}
for family, extPeerSetName := range map[v1core.IPFamily]string{ for family, extPeerSetName := range map[v1core.IPFamily]string{
v1core.IPv4Protocol: externalPeerSet, v1core.IPv4Protocol: externalPeerSet,
v1core.IPv6Protocol: externalPeerSetV6} { v1core.IPv6Protocol: externalPeerSetV6} {
@ -438,17 +450,6 @@ func (nrc *NetworkRoutingController) addExternalBGPPeersDefinedSet() (map[v1core
return externalBGPPeerCIDRs, err return externalBGPPeerCIDRs, err
} }
if len(nrc.globalPeerRouters) > 0 {
for _, peer := range nrc.globalPeerRouters {
externalBgpPeers = append(externalBgpPeers, peer.Conf.NeighborAddress)
}
}
if len(nrc.nodePeerRouters) > 0 {
externalBgpPeers = append(externalBgpPeers, nrc.nodePeerRouters...)
}
if len(externalBgpPeers) == 0 {
return externalBGPPeerCIDRs, nil
}
for _, peer := range externalBgpPeers { for _, peer := range externalBgpPeers {
ip := net.ParseIP(peer) ip := net.ParseIP(peer)
if ip == nil { if ip == nil {