Use simple 16-bit integer for persistent keepalive
Races for this aren't a huge problem.
This commit is contained in:
parent
099219be2a
commit
eb6728400b
3
peer.go
3
peer.go
|
@ -13,13 +13,14 @@ const (
|
|||
)
|
||||
|
||||
type Peer struct {
|
||||
persistentKeepaliveInterval uint64
|
||||
isRunning AtomicBool
|
||||
mutex sync.RWMutex
|
||||
keyPairs KeyPairs
|
||||
handshake Handshake
|
||||
device *Device
|
||||
endpoint Endpoint
|
||||
persistentKeepaliveInterval uint16
|
||||
_ uint32 // padding for alignment
|
||||
|
||||
stats struct {
|
||||
txBytes uint64 // bytes send to peer (endpoint)
|
||||
|
|
|
@ -105,7 +105,7 @@ func (peer *Peer) TimerAnyAuthenticatedPacketReceived() {
|
|||
* Push persistent keep-alive into the future
|
||||
*/
|
||||
func (peer *Peer) TimerAnyAuthenticatedPacketTraversal() {
|
||||
interval := atomic.LoadUint64(&peer.persistentKeepaliveInterval)
|
||||
interval := peer.persistentKeepaliveInterval
|
||||
if interval > 0 {
|
||||
duration := time.Duration(interval) * time.Second
|
||||
peer.timer.keepalivePersistent.Reset(duration)
|
||||
|
@ -199,7 +199,7 @@ func (peer *Peer) RoutineTimerHandler() {
|
|||
peer.timer.handshakeNew.Stop()
|
||||
peer.timer.zeroAllKeys.Stop()
|
||||
|
||||
interval := atomic.LoadUint64(&peer.persistentKeepaliveInterval)
|
||||
interval := peer.persistentKeepaliveInterval
|
||||
if interval > 0 {
|
||||
duration := time.Duration(interval) * time.Second
|
||||
peer.timer.keepalivePersistent.Reset(duration)
|
||||
|
@ -225,7 +225,7 @@ func (peer *Peer) RoutineTimerHandler() {
|
|||
|
||||
case <-peer.timer.keepalivePersistent.Wait():
|
||||
|
||||
interval := atomic.LoadUint64(&peer.persistentKeepaliveInterval)
|
||||
interval := peer.persistentKeepaliveInterval
|
||||
if interval > 0 {
|
||||
logDebug.Println(peer.String(), ": Send keep-alive (persistent)")
|
||||
peer.timer.keepalivePassive.Stop()
|
||||
|
|
10
uapi.go
10
uapi.go
|
@ -84,9 +84,7 @@ func ipcGetOperation(device *Device, socket *bufio.ReadWriter) *IPCError {
|
|||
send(fmt.Sprintf("last_handshake_time_nsec=%d", nano))
|
||||
send(fmt.Sprintf("tx_bytes=%d", peer.stats.txBytes))
|
||||
send(fmt.Sprintf("rx_bytes=%d", peer.stats.rxBytes))
|
||||
send(fmt.Sprintf("persistent_keepalive_interval=%d",
|
||||
atomic.LoadUint64(&peer.persistentKeepaliveInterval),
|
||||
))
|
||||
send(fmt.Sprintf("persistent_keepalive_interval=%d", peer.persistentKeepaliveInterval))
|
||||
|
||||
for _, ip := range device.routing.table.AllowedIPs(peer) {
|
||||
send("allowed_ip=" + ip.String())
|
||||
|
@ -322,10 +320,8 @@ func ipcSetOperation(device *Device, socket *bufio.ReadWriter) *IPCError {
|
|||
return &IPCError{Code: ipcErrorInvalid}
|
||||
}
|
||||
|
||||
old := atomic.SwapUint64(
|
||||
&peer.persistentKeepaliveInterval,
|
||||
secs,
|
||||
)
|
||||
old := peer.persistentKeepaliveInterval
|
||||
peer.persistentKeepaliveInterval = uint16(secs)
|
||||
|
||||
// send immediate keep-alive
|
||||
|
||||
|
|
Loading…
Reference in a new issue