if err != nil {
log.Fatalln("Can not listen on UDP:", err)
}
- govpn.Println("Connected to UDP:" + *remoteAddr)
+ govpn.Printf(`[connected remote="%s"]`, *remoteAddr)
hs := govpn.HandshakeStart(*remoteAddr, conn, conf)
buf := make([]byte, *mtu*2)
conn.SetReadDeadline(time.Now().Add(time.Second))
n, err = conn.Read(buf)
if timeouts == timeout {
- govpn.Println("Timeouted")
+ govpn.Printf(`[connection-timeouted remote="%s"]`, *remoteAddr)
timeouted <- struct{}{}
break
}
if peer.PktProcess(buf[:n], tap, true) {
timeouts = 0
} else {
- govpn.Println("Unauthenticated packet")
+ govpn.Printf(`[packet-unauthenticated remote="%s"]`, *remoteAddr)
timeouts++
}
if atomic.LoadUint64(&peer.BytesIn)+atomic.LoadUint64(&peer.BytesOut) > govpn.MaxBytesPerKey {
- govpn.Println("Need rehandshake")
+ govpn.Printf(`[rehandshake-required remote="%s"]`, *remoteAddr)
rehandshaking <- struct{}{}
break MainCycle
}
continue
}
if idsCache.Find(buf[:n]) == nil {
- govpn.Println("Invalid identity in handshake packet")
+ govpn.Printf(`[identity-invalid remote="%s"]`, *remoteAddr)
continue
}
timeouts = 0
if peer == nil {
continue
}
- govpn.Println("Handshake completed")
+ govpn.Printf(`[handshake-completed remote="%s"]`, *remoteAddr)
knownPeers = govpn.KnownPeers(map[string]**govpn.Peer{*remoteAddr: &peer})
if firstUpCall {
go govpn.ScriptCall(*upPath, *ifaceName, *remoteAddr)
}
hs.Zero()
terminator = make(chan struct{})
- go func() {
- heartbeat := time.NewTicker(peer.Timeout)
- var data []byte
- Processor:
- for {
- select {
- case <-heartbeat.C:
- peer.EthProcess(nil)
- case <-terminator:
- break Processor
- case data = <-tap.Sink:
- peer.EthProcess(data)
- }
- }
- heartbeat.Stop()
- peer.Zero()
- }()
+ go govpn.PeerTapProcessor(peer, tap, terminator)
}
if terminator != nil {
terminator <- struct{}{}