X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcmd%2Fnncp-call%2Fmain.go;h=09c3e18414d56ee94647a2f306ee87d4692823f3;hb=ab7c7eca0e53661f0ba904c2a6ba752990bea367;hp=634c003178602963f364d6a38ca8f5802c4b3ce8;hpb=9cf466a3b95f9b95a7bce1c1cc2b5c970f9fa6a6;p=nncp.git diff --git a/src/cmd/nncp-call/main.go b/src/cmd/nncp-call/main.go index 634c003..09c3e18 100644 --- a/src/cmd/nncp-call/main.go +++ b/src/cmd/nncp-call/main.go @@ -1,6 +1,6 @@ /* NNCP -- Node to Node copy, utilities for store-and-forward data exchange -Copyright (C) 2016-2020 Sergey Matveev +Copyright (C) 2016-2021 Sergey Matveev This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,7 +26,7 @@ import ( "strings" "time" - "go.cypherpunks.ru/nncp/v5" + "go.cypherpunks.ru/nncp/v7" ) func usage() { @@ -44,6 +44,7 @@ func main() { rxOnly = flag.Bool("rx", false, "Only receive packets") txOnly = flag.Bool("tx", false, "Only transmit packets") listOnly = flag.Bool("list", false, "Only list remote packets") + noCK = flag.Bool("nock", false, "Do no checksum checking") onlyPktsRaw = flag.String("pkts", "", "Recieve only that packets, comma separated") rxRate = flag.Int("rxrate", 0, "Maximal receive rate, pkts/sec") txRate = flag.Int("txrate", 0, "Maximal transmit rate, pkts/sec") @@ -58,7 +59,16 @@ func main() { onlineDeadlineSec = flag.Uint("onlinedeadline", 0, "Override onlinedeadline option") maxOnlineTimeSec = flag.Uint("maxonlinetime", 0, "Override maxonlinetime option") + + autoToss = flag.Bool("autotoss", false, "Toss after call is finished") + autoTossDoSeen = flag.Bool("autotoss-seen", false, "Create .seen files during tossing") + autoTossNoFile = flag.Bool("autotoss-nofile", false, "Do not process \"file\" packets during tossing") + autoTossNoFreq = flag.Bool("autotoss-nofreq", false, "Do not process \"freq\" packets during tossing") + autoTossNoExec = flag.Bool("autotoss-noexec", false, "Do not process \"exec\" packets during tossing") + autoTossNoTrns = flag.Bool("autotoss-notrns", false, "Do not process \"trns\" packets during tossing") + autoTossNoArea = flag.Bool("autotoss-noarea", false, "Do not process \"area\" packets during tossing") ) + log.SetFlags(log.Lshortfile) flag.Usage = usage flag.Parse() if *warranty { @@ -153,7 +163,23 @@ func main() { } ctx.Umask() - if !ctx.CallNode( + + var autoTossFinish chan struct{} + var autoTossBadCode chan bool + if *autoToss { + autoTossFinish, autoTossBadCode = ctx.AutoToss( + node.Id, + nice, + *autoTossDoSeen, + *autoTossNoFile, + *autoTossNoFreq, + *autoTossNoExec, + *autoTossNoTrns, + *autoTossNoArea, + ) + } + + badCode := !ctx.CallNode( node, addrs, nice, @@ -163,8 +189,16 @@ func main() { onlineDeadline, maxOnlineTime, *listOnly, + *noCK, onlyPkts, - ) { + ) + + if *autoToss { + close(autoTossFinish) + badCode = (<-autoTossBadCode) || badCode + } + nncp.SPCheckerWg.Wait() + if badCode { os.Exit(1) } }