X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fgovpn%2Fcmd%2Fgovpn-client%2Fudp.go;h=96dbfba418822b9833c40ffd7154070a11c3c8b6;hb=4cc7cf27a64355bbe1f64418a55e860baeb63ac0;hp=c70cf46c1ea2c3e8a22b5f8fdded82ef43b7a243;hpb=c5346a23f86bcc9fd1f8c0925618f137c454d86e;p=govpn.git diff --git a/src/cypherpunks.ru/govpn/cmd/govpn-client/udp.go b/src/cypherpunks.ru/govpn/cmd/govpn-client/udp.go index c70cf46..96dbfba 100644 --- a/src/cypherpunks.ru/govpn/cmd/govpn-client/udp.go +++ b/src/cypherpunks.ru/govpn/cmd/govpn-client/udp.go @@ -36,7 +36,7 @@ func startUDP(timeouted, rehandshaking, termination chan struct{}) { if err != nil { log.Fatalln("Can not listen on UDP:", err) } - log.Println("Connected to UDP:" + *remoteAddr) + govpn.Printf(`[connected remote="%s"]`, *remoteAddr) hs := govpn.HandshakeStart(*remoteAddr, conn, conf) buf := make([]byte, *mtu*2) @@ -55,7 +55,7 @@ MainCycle: conn.SetReadDeadline(time.Now().Add(time.Second)) n, err = conn.Read(buf) if timeouts == timeout { - log.Println("Timeouted") + govpn.Printf(`[connection-timeouted remote="%s"]`, *remoteAddr) timeouted <- struct{}{} break } @@ -67,18 +67,18 @@ MainCycle: if peer.PktProcess(buf[:n], tap, true) { timeouts = 0 } else { - log.Println("Unauthenticated packet") + govpn.Printf(`[packet-unauthenticated remote="%s"]`, *remoteAddr) timeouts++ } if atomic.LoadUint64(&peer.BytesIn)+atomic.LoadUint64(&peer.BytesOut) > govpn.MaxBytesPerKey { - log.Println("Need rehandshake") + govpn.Printf(`[rehandshake-required remote="%s"]`, *remoteAddr) rehandshaking <- struct{}{} break MainCycle } continue } if idsCache.Find(buf[:n]) == nil { - log.Println("Invalid identity in handshake packet") + govpn.Printf(`[identity-invalid remote="%s"]`, *remoteAddr) continue } timeouts = 0 @@ -86,31 +86,15 @@ MainCycle: if peer == nil { continue } - log.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) + go govpn.ScriptCall(*upPath, *ifaceName, *remoteAddr) firstUpCall = false } 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{}{}