aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--peer.go3
-rw-r--r--timers.go6
-rw-r--r--uapi.go10
3 files changed, 8 insertions, 11 deletions
diff --git a/peer.go b/peer.go
index 3a4f5f2..8acdfbc 100644
--- a/peer.go
+++ b/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)
diff --git a/timers.go b/timers.go
index 76dffb9..e118c38 100644
--- a/timers.go
+++ b/timers.go
@@ -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()
diff --git a/uapi.go b/uapi.go
index 01cdab6..c795b73 100644
--- a/uapi.go
+++ b/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