]> Cypherpunks.ru repositories - govpn.git/blobdiff - cmd/govpn-client/main.go
Ability to generate Constant Packet Rate traffic
[govpn.git] / cmd / govpn-client / main.go
index b5f86f9657a0fae84ff5b7336d2f5a8f630cf00a..9d99f080d42ea4f1ebbd11fe0ce05234ae9b710a 100644 (file)
@@ -25,6 +25,7 @@ import (
        "net"
        "os"
        "os/signal"
+       "time"
 
        "govpn"
 )
@@ -37,9 +38,11 @@ var (
        upPath     = flag.String("up", "", "Path to up-script")
        downPath   = flag.String("down", "", "Path to down-script")
        stats      = flag.String("stats", "", "Enable stats retrieving on host:port")
-       mtu        = flag.Int("mtu", 1500, "MTU")
+       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() {
@@ -49,8 +52,10 @@ 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)
@@ -82,11 +87,12 @@ func main() {
        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)
@@ -126,7 +132,7 @@ MainCycle:
                        if timeouts >= timeout {
                                break MainCycle
                        }
-                       if udpPkt == nil {
+                       if udpPkt.Addr == nil {
                                udpReady <- struct{}{}
                                continue
                        }