"errors"
"fmt"
"sync"
+ "sync/atomic"
"time"
)
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 {
peer.SetEndpointFromPacket(elem.endpoint)
logDebug.Println(peer, "- Received handshake initiation")
+ atomic.AddUint64(&peer.stats.rxBytes, uint64(len(elem.packet)))
peer.SendHandshakeResponse()
peer.SetEndpointFromPacket(elem.endpoint)
logDebug.Println(peer, "- Received handshake response")
+ atomic.AddUint64(&peer.stats.rxBytes, uint64(len(elem.packet)))
// update timers
peer.keepKeyFreshReceiving()
peer.timersAnyAuthenticatedPacketTraversal()
peer.timersAnyAuthenticatedPacketReceived()
+ atomic.AddUint64(&peer.stats.rxBytes, uint64(len(elem.packet)+MinMessageSize))
// check for keepalive
// 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
// send message and return buffer to pool
- length := uint64(len(elem.packet))
err := peer.SendBuffer(elem.packet)
if len(elem.packet) != MessageKeepaliveSize {
peer.timersDataSent()
logError.Println(peer, "- Failed to send data packet", err)
continue
}
- atomic.AddUint64(&peer.stats.txBytes, length)
peer.keepKeyFreshSending()
}