diff --git a/pkg/cluster/rings.go b/pkg/cluster/rings.go index 161f4a5..64833c6 100644 --- a/pkg/cluster/rings.go +++ b/pkg/cluster/rings.go @@ -225,17 +225,28 @@ func (r *Ring) setRingZeroAllowedIPs(rp *RingPeer) { rp.AllowCIDR(rp.Address, 32) } +// revive:disable:cognitive-complexity func (r *Ring) setRingOneGatewayAllowedIPs(rp *RingPeer) { + // revive:enable:cognitive-complexity regionID, zoneID, _, _ := r.Decode(rp.Address) // peer rp.AllowCIDR(rp.Address, 32) // ring1 gateways connect to all other ring1 networks - r.ForEachZone(func(z *Zone) bool { - if !z.Is(regionID, zoneID) { - subnet := z.RingOnePrefix() - rp.AllowSubnet(subnet) + m, ok := r.ZoneIterator.(RegionIterator) + if !ok { + panic("Cannot iterate Region from Zone") + } + m.ForEachRegion(func(r2 *Region) bool { + if r2.IsPrimary() { + r.ForEachZone(func(z *Zone) bool { + if !z.Is(regionID, zoneID) { + subnet := z.RingOnePrefix() + rp.AllowSubnet(subnet) + } + return false + }) } return false })