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,14 +430,6 @@ 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)
for family, extPeerSetName := range map[v1core.IPFamily]string{
v1core.IPv4Protocol: externalPeerSet,
v1core.IPv6Protocol: externalPeerSetV6} {
currentDefinedSet, err := nrc.getDefinedSetFromGoBGP(extPeerSetName, gobgpapi.DefinedType_NEIGHBOR)
if err != nil {
return externalBGPPeerCIDRs, err
}
if len(nrc.globalPeerRouters) > 0 { if len(nrc.globalPeerRouters) > 0 {
for _, peer := range nrc.globalPeerRouters { for _, peer := range nrc.globalPeerRouters {
externalBgpPeers = append(externalBgpPeers, peer.Conf.NeighborAddress) externalBgpPeers = append(externalBgpPeers, peer.Conf.NeighborAddress)
@ -449,6 +441,15 @@ func (nrc *NetworkRoutingController) addExternalBGPPeersDefinedSet() (map[v1core
if len(externalBgpPeers) == 0 { if len(externalBgpPeers) == 0 {
return externalBGPPeerCIDRs, nil return externalBGPPeerCIDRs, nil
} }
for family, extPeerSetName := range map[v1core.IPFamily]string{
v1core.IPv4Protocol: externalPeerSet,
v1core.IPv6Protocol: externalPeerSetV6} {
currentDefinedSet, err := nrc.getDefinedSetFromGoBGP(extPeerSetName, gobgpapi.DefinedType_NEIGHBOR)
if err != nil {
return externalBGPPeerCIDRs, err
}
for _, peer := range externalBgpPeers { for _, peer := range externalBgpPeers {
ip := net.ParseIP(peer) ip := net.ParseIP(peer)
if ip == nil { if ip == nil {