aboutsummaryrefslogtreecommitdiff
path: root/device/receive.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/receive.go
parent41fdbf09710b7987b442e8fd8310568f2790c15b (diff)
downloadwireguard-go-3371f8dac6fe6bbd7522a8316b50f6473012e302.tar.gz
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/receive.go')
-rw-r--r--device/receive.go4
1 files changed, 3 insertions, 1 deletions
diff --git a/device/receive.go b/device/receive.go
index 32d632b..62b5ef4 100644
--- a/device/receive.go
+++ b/device/receive.go
@@ -427,6 +427,7 @@ func (device *Device) RoutineHandshake() {
peer.SetEndpointFromPacket(elem.endpoint)
logDebug.Println(peer, "- Received handshake initiation")
+ atomic.AddUint64(&peer.stats.rxBytes, uint64(len(elem.packet)))
peer.SendHandshakeResponse()
@@ -457,6 +458,7 @@ func (device *Device) RoutineHandshake() {
peer.SetEndpointFromPacket(elem.endpoint)
logDebug.Println(peer, "- Received handshake response")
+ atomic.AddUint64(&peer.stats.rxBytes, uint64(len(elem.packet)))
// update timers
@@ -581,6 +583,7 @@ func (peer *Peer) RoutineSequentialReceiver() {
peer.keepKeyFreshReceiving()
peer.timersAnyAuthenticatedPacketTraversal()
peer.timersAnyAuthenticatedPacketReceived()
+ atomic.AddUint64(&peer.stats.rxBytes, uint64(len(elem.packet)+MinMessageSize))
// check for keepalive
@@ -656,7 +659,6 @@ func (peer *Peer) RoutineSequentialReceiver() {
// write to tun device
offset := MessageTransportOffsetContent
- atomic.AddUint64(&peer.stats.rxBytes, uint64(len(elem.packet)))
_, err := device.tun.device.Write(elem.buffer[:offset+len(elem.packet)], offset)
if err == nil {
shouldFlush = true