timeoutP = flag.Int("timeout", 60, "Timeout seconds")
noisy = flag.Bool("noise", false, "Enable noise appending")
cpr = flag.Int("cpr", 0, "Enable constant KiB/sec out traffic rate")
+ egdPath = flag.String("egd", "", "Optional path to EGD socket")
)
func main() {
govpn.MTU = *mtu
- id := govpn.IDDecode(*IDRaw)
- if id == nil {
- panic("ID is not specified")
+ id, err := govpn.IDDecode(*IDRaw)
+ if err != nil {
+ log.Fatalln(err)
+ }
+
+ if *egdPath != "" {
+ log.Println("Using", *egdPath, "EGD")
+ govpn.EGDInit(*egdPath)
}
pub, priv := govpn.NewVerifier(id, govpn.StringFromFile(*keyPath))
bind, err := net.ResolveUDPAddr("udp", "0.0.0.0:0")
if err != nil {
- panic(err)
+ log.Fatalln("Can not resolve address:", err)
}
conn, err := net.ListenUDP("udp", bind)
if err != nil {
- panic(err)
+ log.Fatalln("Can not listen on UDP:", err)
}
remote, err := net.ResolveUDPAddr("udp", *remoteAddr)
if err != nil {
- panic(err)
+ log.Fatalln("Can not resolve remote address:", err)
}
tap, ethSink, ethReady, _, err := govpn.TAPListen(
*cpr,
)
if err != nil {
- panic(err)
+ log.Fatalln("Can not listen on TAP interface:", err)
}
udpSink, udpBuf, udpReady := govpn.ConnListen(conn)
log.Println("Stats are going to listen on", *stats)
statsPort, err := net.Listen("tcp", *stats)
if err != nil {
- panic(err)
+ log.Fatalln("Can not listen on stats port:", err)
}
go govpn.StatsProcessor(statsPort, &knownPeers)
}