]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/cmd/nncp-daemon/main.go
Generate ACKs during tossing
[nncp.git] / src / cmd / nncp-daemon / main.go
index 710b687826fbb7b73f8a818ec1332779d9a08efa..33fffa764e107ddd7083c7cc54430c0d28e04c92 100644 (file)
@@ -1,6 +1,6 @@
 /*
 NNCP -- Node to Node copy, utilities for store-and-forward data exchange
-Copyright (C) 2016-2022 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2016-2023 Sergey Matveev <stargrave@stargrave.org>
 
 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
@@ -36,8 +36,7 @@ import (
 )
 
 func usage() {
-       fmt.Fprintf(os.Stderr, nncp.UsageHeader())
-       fmt.Fprintf(os.Stderr, "nncp-daemon -- TCP daemon\n\n")
+       fmt.Fprint(os.Stderr, "nncp-daemon -- TCP daemon\n\n")
        fmt.Fprintf(os.Stderr, "Usage: %s [options]\nOptions:\n", os.Args[0])
        flag.PrintDefaults()
 }
@@ -138,7 +137,8 @@ func main() {
                bind      = flag.String("bind", "[::]:5400", "Address to bind to")
                ucspi     = flag.Bool("ucspi", false, "Is it started as UCSPI-TCP server")
                inetd     = flag.Bool("inetd", false, "Obsolete, use -ucspi")
-               yggdrasil = flag.String("yggdrasil", "", "Start Yggdrasil listener: yggdrasils://PRV[:PORT]?[bind=BIND][&pub=PUB][&peer=PEER][&mcast=REGEX[:PORT]]")
+               yggdrasil = flag.String("yggdrasil", "",
+                       "Start Yggdrasil listener: yggdrasils://PRV[:PORT]?[bind=BIND][&pub=PUB][&peer=PEER][&mcast=REGEX[:PORT]]")
                maxConn   = flag.Int("maxconn", 128, "Maximal number of simultaneous connections")
                noCK      = flag.Bool("nock", false, "Do no checksum checking")
                mcdOnce   = flag.Bool("mcd-once", false, "Send MCDs once and quit")
@@ -151,14 +151,24 @@ func main() {
                version   = flag.Bool("version", false, "Print version information")
                warranty  = flag.Bool("warranty", false, "Print warranty information")
 
-               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")
-               autoTossNoACK  = flag.Bool("autotoss-noack", false, "Do not process \"ack\" packets during tossing")
+               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")
+               autoTossNoACK = flag.Bool("autotoss-noack", false,
+                       "Do not process \"ack\" packets during tossing")
+               autoTossGenACK = flag.Bool("autotoss-gen-ack", false,
+                       "Generate ACK packets")
        )
        log.SetFlags(log.Lshortfile)
        flag.Usage = usage
@@ -211,18 +221,21 @@ func main() {
                if *autoToss && nodeId != nil {
                        autoTossFinish, autoTossBadCode = ctx.AutoToss(
                                nodeId,
-                               nice,
-                               *autoTossDoSeen,
-                               *autoTossNoFile,
-                               *autoTossNoFreq,
-                               *autoTossNoExec,
-                               *autoTossNoTrns,
-                               *autoTossNoArea,
-                               *autoTossNoACK,
+                               &nncp.TossOpts{
+                                       Nice:   nice,
+                                       DoSeen: *autoTossDoSeen,
+                                       NoFile: *autoTossNoFile,
+                                       NoFreq: *autoTossNoFreq,
+                                       NoExec: *autoTossNoExec,
+                                       NoTrns: *autoTossNoTrns,
+                                       NoArea: *autoTossNoArea,
+                                       NoACK:  *autoTossNoACK,
+                                       GenACK: *autoTossGenACK,
+                               },
                        )
                }
                <-nodeIdC // call completion
-               if *autoToss {
+               if *autoToss && nodeId != nil {
                        close(autoTossFinish)
                        <-autoTossBadCode
                }
@@ -298,18 +311,21 @@ func main() {
                        if *autoToss && nodeId != nil {
                                autoTossFinish, autoTossBadCode = ctx.AutoToss(
                                        nodeId,
-                                       nice,
-                                       *autoTossDoSeen,
-                                       *autoTossNoFile,
-                                       *autoTossNoFreq,
-                                       *autoTossNoExec,
-                                       *autoTossNoTrns,
-                                       *autoTossNoArea,
-                                       *autoTossNoACK,
+                                       &nncp.TossOpts{
+                                               Nice:   nice,
+                                               DoSeen: *autoTossDoSeen,
+                                               NoFile: *autoTossNoFile,
+                                               NoFreq: *autoTossNoFreq,
+                                               NoExec: *autoTossNoExec,
+                                               NoTrns: *autoTossNoTrns,
+                                               NoArea: *autoTossNoArea,
+                                               NoACK:  *autoTossNoACK,
+                                               GenACK: *autoTossGenACK,
+                                       },
                                )
                        }
                        <-nodeIdC // call completion
-                       if *autoToss {
+                       if *autoToss && nodeId != nil {
                                close(autoTossFinish)
                                <-autoTossBadCode
                        }