peersPath = flag.String("peers", "peers", "Path to peers keys directory")
stats = flag.String("stats", "", "Enable stats retrieving on host:port")
mtu = flag.Int("mtu", 1452, "MTU for outgoing packets")
- nonceDiff = flag.Int("noncediff", 1, "Allow nonce difference")
- timeoutP = flag.Int("timeout", 60, "Timeout seconds")
- noisy = flag.Bool("noise", false, "Enable noise appending")
)
type PeerReadyEvent struct {
}
func NewPeerState(peer *govpn.Peer, iface string) *PeerState {
- tap, sink, ready, terminate, err := govpn.TAPListen(iface)
+ tap, sink, ready, terminate, err := govpn.TAPListen(iface, peer.Timeout, peer.CPR)
if err != nil {
log.Println("Unable to create Eth", err)
return nil
func main() {
flag.Parse()
- timeout := time.Second * time.Duration(*timeoutP)
+ timeout := time.Second * time.Duration(govpn.TimeoutDefault)
var err error
log.SetFlags(log.Ldate | log.Lmicroseconds | log.Lshortfile)
govpn.MTU = *mtu
- govpn.Timeout = timeout
- govpn.Noncediff = *nonceDiff
- govpn.NoiseEnable = *noisy
govpn.PeersInit(*peersPath)
bind, err := net.ResolveUDPAddr("udp", *bindAddr)
var udpPktData []byte
var ethEvent EthEvent
var peerId *govpn.PeerId
+ var peerConf *govpn.PeerConf
var handshakeProcessForce bool
ethSink := make(chan EthEvent)
udpReady <- struct{}{}
continue
}
+ peerConf = peerId.Conf()
+ if peerConf == nil {
+ log.Println("Can not get peer configuration", peerId.String())
+ udpReady <- struct{}{}
+ continue
+ }
state, exists = states[addr]
if !exists {
- state = govpn.HandshakeNew(udpPkt.Addr)
+ state = govpn.HandshakeNew(udpPkt.Addr, peerConf)
states[addr] = state
}
- peer = state.Server(peerId, conn, udpPktData)
+ peer = state.Server(conn, udpPktData)
if peer != nil {
log.Println("Peer handshake finished", peer)
if _, exists = peers[addr]; exists {