"net"
"os"
"os/signal"
+ "time"
"govpn"
)
keyPath = flag.String("key", "", "Path to authentication key file")
upPath = flag.String("up", "", "Path to up-script")
downPath = flag.String("down", "", "Path to down-script")
- mtu = flag.Int("mtu", 1500, "MTU")
+ 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")
+ cpr = flag.Int("cpr", 0, "Enable constant KiB/s out traffic rate")
)
func main() {
log.SetFlags(log.Ldate | log.Lmicroseconds | log.Lshortfile)
govpn.MTU = *mtu
- govpn.Timeout = timeout
+ govpn.Timeout = time.Second * time.Duration(timeout)
govpn.Noncediff = *nonceDiff
+ govpn.NoiseEnable = *noisy
+ govpn.CPRInit(*cpr)
id := govpn.IDDecode(*IDRaw)
govpn.PeersInitDummy(id)
firstUpCall := true
var peer *govpn.Peer
var ethPkt []byte
- var udpPkt *govpn.UDPPkt
+ var udpPkt govpn.UDPPkt
var udpPktData []byte
+ knownPeers := govpn.KnownPeers(map[string]**govpn.Peer{remote.String(): &peer})
+
+ log.Println(govpn.VersionGet())
+ log.Println("Max MTU on TAP interface:", govpn.TAPMaxMTU())
+ if *stats != "" {
+ log.Println("Stats are going to listen on", *stats)
+ statsPort, err := net.Listen("tcp", *stats)
+ if err != nil {
+ panic(err)
+ }
+ go govpn.StatsProcessor(statsPort, &knownPeers)
+ }
termSignal := make(chan os.Signal, 1)
signal.Notify(termSignal, os.Interrupt, os.Kill)
- log.Println(govpn.VersionGet())
log.Println("Starting handshake")
handshake := govpn.HandshakeStart(conn, remote, id, key)
if timeouts >= timeout {
break MainCycle
}
- if udpPkt == nil {
+ if udpPkt.Addr == nil {
udpReady <- struct{}{}
continue
}