X-Git-Url: http://www.git.cypherpunks.ru/?p=nncp.git;a=blobdiff_plain;f=src%2Fcmd%2Fnncp-daemon%2Fmain.go;h=b3687e8e05a668859ee1825a737f7911da024df3;hp=252527f56a1520044d681419e1d7e10967768729;hb=e068d88291cd45a4d6b748e258077dd6c0ffb9c2;hpb=655146e4ee2bde72c9e8daa1361010fefe016df9 diff --git a/src/cmd/nncp-daemon/main.go b/src/cmd/nncp-daemon/main.go index 252527f..b3687e8 100644 --- a/src/cmd/nncp-daemon/main.go +++ b/src/cmd/nncp-daemon/main.go @@ -111,6 +111,7 @@ 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: PRV;BIND[,...];[PUB,...];[PEER,...]") 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") @@ -200,29 +201,37 @@ func main() { return } - cols := strings.Split(*bind, ":") - port, err := strconv.Atoi(cols[len(cols)-1]) - if err != nil { - log.Fatalln("Can not parse port:", err) - } + var ln net.Listener + if *yggdrasil != "" { + ln, err = nncp.NewYggdrasilListener(ctx.YggdrasilAliases, *yggdrasil) + if err != nil { + log.Fatalln("Can not listen:", err) + } + } else { + cols := strings.Split(*bind, ":") + port, err := strconv.Atoi(cols[len(cols)-1]) + if err != nil { + log.Fatalln("Can not parse port:", err) + } - if *mcdOnce { - for ifiName := range ctx.MCDTxIfis { - if err = ctx.MCDTx(ifiName, port, 0); err != nil { - log.Fatalln("Can not do MCD transmission:", err) + if *mcdOnce { + for ifiName := range ctx.MCDTxIfis { + if err = ctx.MCDTx(ifiName, port, 0); err != nil { + log.Fatalln("Can not do MCD transmission:", err) + } } + return } - return - } - ln, err := net.Listen("tcp", *bind) - if err != nil { - log.Fatalln("Can not listen:", err) - } + ln, err = net.Listen("tcp", *bind) + if err != nil { + log.Fatalln("Can not listen:", err) + } - for ifiName, secs := range ctx.MCDTxIfis { - if err = ctx.MCDTx(ifiName, port, time.Duration(secs)*time.Second); err != nil { - log.Fatalln("Can not run MCD transmission:", err) + for ifiName, secs := range ctx.MCDTxIfis { + if err = ctx.MCDTx(ifiName, port, time.Duration(secs)*time.Second); err != nil { + log.Fatalln("Can not run MCD transmission:", err) + } } }