diff options
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 } |
