summaryrefslogtreecommitdiffhomepage
path: root/natcippool
diff options
context:
space:
mode:
authorFran Bull <fran@tailscale.com>2024-09-25 09:00:38 -0700
committerFran Bull <fran@tailscale.com>2024-09-25 09:00:38 -0700
commit28a0c21d8b1d0efd25fe6eca62dbe7210d646dec (patch)
treeae58b4647ea91795f147551ac9320c353a6b3147 /natcippool
parent781fd03f27cef976ebe6256d449aebc5a8fffc9a (diff)
downloadtailscale-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.go16
-rw-r--r--natcippool/consensusclient.go12
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
}