if err != nil {
log.Fatalln("Can listen on UDP:", err)
}
- udpSink, udpBuf, udpReady := govpn.ConnListen(conn)
+ udpSink, udpReady := govpn.ConnListenUDP(conn)
termSignal := make(chan os.Signal, 1)
signal.Notify(termSignal, os.Interrupt, os.Kill)
knownPeers := govpn.KnownPeers(make(map[string]**govpn.Peer))
var peerReady PeerReadyEvent
var udpPkt govpn.UDPPkt
- var udpPktData []byte
var ethEvent EthEvent
var peerId *govpn.PeerId
var peerConf *govpn.PeerConf
udpReady <- struct{}{}
continue
}
- udpPktData = udpBuf[:udpPkt.Size]
addr = udpPkt.Addr.String()
handshakeProcessForce = false
HandshakeProcess:
if _, exists = peers[addr]; handshakeProcessForce || !exists {
- peerId = govpn.IDsCache.Find(udpPktData)
+ peerId = govpn.IDsCache.Find(udpPkt.Data)
if peerId == nil {
log.Println("Unknown identity from", addr)
udpReady <- struct{}{}
state = govpn.HandshakeNew(udpPkt.Addr, peerConf)
states[addr] = state
}
- peer = state.Server(conn, udpPktData)
+ peer = state.Server(conn, udpPkt.Data)
if peer != nil {
log.Println("Peer handshake finished", peer)
if _, exists = peers[addr]; exists {
}
// If it fails during processing, then try to work with it
// as with handshake packet
- if !peerState.peer.UDPProcess(udpPktData, peerState.tap, udpReady) {
+ if !peerState.peer.UDPProcess(udpPkt.Data, peerState.tap, udpReady) {
handshakeProcessForce = true
goto HandshakeProcess
}