diff options
| author | Fran Bull <fran@tailscale.com> | 2024-09-25 09:00:38 -0700 |
|---|---|---|
| committer | Fran Bull <fran@tailscale.com> | 2024-09-25 09:00:38 -0700 |
| commit | 28a0c21d8b1d0efd25fe6eca62dbe7210d646dec (patch) | |
| tree | ae58b4647ea91795f147551ac9320c353a6b3147 /natcippool | |
| parent | 781fd03f27cef976ebe6256d449aebc5a8fffc9a (diff) | |
| download | tailscale-fran/natc-consensus-prototype.tar.xz tailscale-fran/natc-consensus-prototype.zip | |
remove clusterPeers and use peers and tags to find peersfran/natc-consensus-prototype
Diffstat (limited to 'natcippool')
| -rw-r--r-- | natcippool/consensus.go | 16 | ||||
| -rw-r--r-- | natcippool/consensusclient.go | 12 |
2 files changed, 18 insertions, 10 deletions
diff --git a/natcippool/consensus.go b/natcippool/consensus.go index e839fb823..770dd1afe 100644 --- a/natcippool/consensus.go +++ b/natcippool/consensus.go @@ -9,6 +9,20 @@ import ( "tailscale.com/tailcfg" ) +var specialPort uint16 = 61820 + +func makeAddrForConsensus(a netip.Addr) string { + return netip.AddrPortFrom(a, specialPort).String() +} + +func JoinConsensus(nodeID string, addr, joinAddr netip.Addr, varRoot string) { + StartConsensusMember(nodeID, makeAddrForConsensus(addr), makeAddrForConsensus(joinAddr), varRoot) +} + +func LeadConsensus(nodeID string, addr netip.Addr, varRoot string) { + StartConsensusMember(nodeID, makeAddrForConsensus(addr), "", varRoot) +} + // StartConsensusMember has this node join the consensus protocol for handing out ip addresses func StartConsensusMember(nodeID, addr, joinAddr, varRoot string) { var conf uhaha.Config @@ -28,7 +42,7 @@ func StartConsensusMember(nodeID, addr, joinAddr, varRoot string) { conf.NodeID = nodeID conf.Addr = addr - if joinAddr != "" && joinAddr != addr { + if joinAddr != "" { conf.JoinAddr = joinAddr } conf.Flag.Custom = true diff --git a/natcippool/consensusclient.go b/natcippool/consensusclient.go index dd00a09c0..4bd315f7f 100644 --- a/natcippool/consensusclient.go +++ b/natcippool/consensusclient.go @@ -19,18 +19,12 @@ type ConsensusClient struct { rdb *redis.Client } -func NewConsensusClient(addr, joinAddr string, logf logger.Logf) *ConsensusClient { +func NewConsensusClient(addr, joinAddr netip.Addr, logf logger.Logf) *ConsensusClient { cc := ConsensusClient{ - MyAddr: addr, + MyAddr: makeAddrForConsensus(addr), logf: logf, } - if joinAddr == "" { - // initially i am the leader - cc.newRedisClient(addr) - } else { - // initially i am a follower - cc.newRedisClient(joinAddr) - } + cc.newRedisClient(makeAddrForConsensus(joinAddr)) return &cc } |
