Compare commits

...

2 Commits

Author SHA1 Message Date
amery c81b782b26 zones: Machine.IsGateway()
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-08-24 21:07:55 +00:00
amery 0f62ee2e53 zones: rename Machine.RingAddresses to Machine.Rings
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-08-24 20:52:08 +00:00
4 changed files with 16 additions and 13 deletions
+1 -1
View File
@@ -86,7 +86,7 @@ func getRingZeroGatewayID(z *Zone) int {
firstNodeID = p.ID
}
if _, found := p.getRingInfo(0); found {
if p.IsGateway() {
gatewayID = p.ID
}
+7 -4
View File
@@ -6,19 +6,16 @@ import (
"net/netip"
"path/filepath"
"strings"
"sync"
)
// A Machine is a machine on a Zone
type Machine struct {
mu sync.Mutex
zone *Zone
ID int
Name string `toml:"name"`
PublicAddresses []netip.Addr `toml:"public,omitempty"`
RingAddresses []*RingInfo `toml:"rings,omitempty"`
Rings []*RingInfo `toml:"rings,omitempty"`
}
func (m *Machine) String() string {
@@ -61,6 +58,12 @@ func (m *Machine) getFilename(name string, args ...any) string {
return filepath.Join(s...)
}
// IsGateway tells if the Machine is a ring0 gateway
func (m *Machine) IsGateway() bool {
_, ok := m.getRingInfo(0)
return ok
}
func (m *Machine) getPeerByName(name string) (*Machine, bool) {
return m.zone.zones.GetMachineByName(name)
}
+5 -5
View File
@@ -123,9 +123,9 @@ func (m *Machine) applyWireguardConfig(ring int, wg *wireguard.Config) error {
}
func (m *Machine) getRingInfo(ring int) (*RingInfo, bool) {
for _, ri := range m.RingAddresses {
for _, ri := range m.Rings {
if ri.Ring == ring {
return ri, true
return ri, ri.Enabled
}
}
@@ -133,10 +133,10 @@ func (m *Machine) getRingInfo(ring int) (*RingInfo, bool) {
}
func (m *Machine) applyRingInfo(ring int, new *RingInfo) error {
cur, found := m.getRingInfo(ring)
if !found {
cur, _ := m.getRingInfo(ring)
if cur == nil {
// first, append
m.RingAddresses = append(m.RingAddresses, new)
m.Rings = append(m.Rings, new)
return nil
}
+3 -3
View File
@@ -102,9 +102,9 @@ func (m *Zones) scanSort() error {
})
m.ForEachMachine(func(p *Machine) bool {
sort.SliceStable(p.RingAddresses, func(i, j int) bool {
ri1 := p.RingAddresses[i]
ri2 := p.RingAddresses[j]
sort.SliceStable(p.Rings, func(i, j int) bool {
ri1 := p.Rings[i]
ri2 := p.Rings[j]
return ri1.Ring < ri2.Ring
})