aboutsummaryrefslogtreecommitdiffstats
path: root/device/peer.go
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2019-06-11 18:13:52 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2019-06-11 18:13:52 +0200
commit3371f8dac6fe6bbd7522a8316b50f6473012e302 (patch)
tree85900fb0a804af625c1e1f62264e69ee632cb2a8 /device/peer.go
parentwintun: increase registry timeout (diff)
downloadwireguard-go-3371f8dac6fe6bbd7522a8316b50f6473012e302.tar.xz
wireguard-go-3371f8dac6fe6bbd7522a8316b50f6473012e302.zip
device: update transfer counters correctly
The rule is to always update them to the full packet size minus UDP/IP encapsulation for all authenticated packet types.
Diffstat (limited to 'device/peer.go')
-rw-r--r--device/peer.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/device/peer.go b/device/peer.go
index 815dff4..4e7f2da 100644
--- a/device/peer.go
+++ b/device/peer.go
@@ -10,6 +10,7 @@ import (
"errors"
"fmt"
"sync"
+ "sync/atomic"
"time"
)
@@ -140,7 +141,11 @@ func (peer *Peer) SendBuffer(buffer []byte) error {
return errors.New("no known endpoint for peer")
}
- return peer.device.net.bind.Send(buffer, peer.endpoint)
+ err := peer.device.net.bind.Send(buffer, peer.endpoint)
+ if err == nil {
+ atomic.AddUint64(&peer.stats.txBytes, uint64(len(buffer)))
+ }
+ return err
}
func (peer *Peer) String() string {