HjfhBAoZMYmhOBeHt87AG5OjFNRIOJ2rRacnRDA3E4h1BBARCAAdFiEEz2Domlkj
HnbiY2QirhqBCeSYV+8FAlh0lxYACgkQrhqBCeSYV+9i1QD/bdLAY67nf5giI/wQ
i6K7v6PTPFwG6TtG6jj68Cy13RgA/iMuKw7niLwyPWRKzWcMIG1YhVyCNCgKQvFL
-vdr6yKbN
-=R8E0
+vdr6yKbNiHUEEBYKAB0WIQQSrTJonGYNQmln/XXLggVjIQetigUCYuo7ggAKCRDL
+ggVjIQetipd7AQCDFrOVsnUUz0erg3Xja0AwEbaFvlCszMqw4WrER7N76wEAkPhR
+LTpxZzCiX0XH91+xCQVU+m5idln1affz7Dntnw4=
+=7iHk
-----END PGP PUBLIC KEY BLOCK-----
@multitable @columnfractions .50 .50
@headitem Library @tab Licence
@item @code{github.com/davecgh/go-xdr} @tab ISC
-@item @code{github.com/dustin/go-humanize} @tab MIT
+@item @code{github.com/dustin/go-humanize} @tab Expat
@item @code{github.com/flynn/noise} @tab BSD 3-Clause
@item @code{github.com/fsnotify/fsnotify} @tab BSD 3-Clause
@item @code{github.com/gorhill/cronexpr} @tab GNU GPLv3
-@item @code{github.com/gosuri/uilive} @tab MIT
-@item @code{github.com/hjson/hjson-go} @tab MIT
+@item @code{github.com/gosuri/uilive} @tab Expat
+@item @code{github.com/hjson/hjson-go} @tab Expat
@item @code{github.com/klauspost/compress} @tab BSD 3-Clause
@item @code{github.com/klauspost/cpuid} @tab BSD 3-Clause
@item @code{go.cypherpunks.ru/balloon} @tab GNU LGPLv3
@item @code{golang.org/x/sys} @tab BSD 3-Clause
@item @code{golang.org/x/term} @tab BSD 3-Clause
@item @code{golang.org/x/time} @tab BSD 3-Clause
-@item @code{lukechampine.com/blake3} @tab MIT
+@item @code{lukechampine.com/blake3} @tab Expat
@end multitable
And additional ones for Yggdrasil support:
@item @code{github.com/Arceliar/phony} @tab MPLv2
@item @code{github.com/gologme/log} @tab BSD 3-Clause
@item @code{github.com/google/btree} @tab Apache 2.0
-@item @code{github.com/huandu/xstrings} @tab MIT
+@item @code{github.com/huandu/xstrings} @tab Expat
@item @code{github.com/yggdrasil-network/yggdrasil-go} @tab GNU LGPLv3
@item @code{golang.org/x/term} @tab BSD 3-Clause
-@item @code{inet.af/netstack} @tab Apache 2.0
+@item @code{gvisor.dev/gvisor} @tab Apache 2.0
@end multitable
@multitable {XXXXX} {XXXX-XX-XX} {XXXX KiB} {meta4 link sig} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
@headitem Version @tab Date @tab Size @tab Tarball @tab SHA256 checksum
+@item @ref{Release 8_7_2, 8.7.2} @tab 2022-03-13 @tab 1673 KiB
+@tab
+ @url{download/nncp-8.7.2.tar.xz.meta4, meta4}
+ @url{download/nncp-8.7.2.tar.xz, link}
+ @url{download/nncp-8.7.2.tar.xz.sig, sig}
+@tab @code{A0EEC9B0 F33059DE 33F13084 599805D0 F4A1C8C3 79E925BA CFE8DC94 D1DDC23D}
+
@item @ref{Release 8_7_1, 8.7.1} @tab 2022-03-09 @tab 1669 KiB
@tab
@url{download/nncp-8.7.1.tar.xz.meta4, meta4}
@pindex go
@pindex texinfo
NNCP is written on @url{https://go.dev/, Go} programming language
-and you have to install Go compiler 1.13+ version.
+and you have to install Go compiler 1.17+ version.
@url{http://cr.yp.to/redo.html, redo} build system is recommended for
convenience. @url{https://www.gnu.org/software/texinfo/, Texinfo} is
used for building documentation (although tarballs already include it).
[@dots{}] http://www.example.com/
@end example
+@pindex crawl
+Or even more simpler @url{https://git.jordan.im/crawl/tree/README.md, crawl}
+utility written on Go too.
+
@pindex tofuproxy
That command will create @file{www.example.com-XXX.warc} web archive.
It could produce specialized segmented
@item
@example
$ gpg --auto-key-locate dane --locate-keys releases at nncpgo dot org
-$ gpg --auto-key-locate wkd --locate-keys releases at nncpgo dot org
+$ gpg --auto-key-locate wkd --locate-keys releases at nncpgo dot org
@end example
@item
@unnumbered Mirrors
Main NNCP website is hosted on two geographically distant servers
-located in Moscow region, Russian Federation. One of server's IPv6
-connectivity is provided by Hurricane Electric tunnel broker. Only one
-of those servers supports TLS and another just proxies the traffic to
-it. So TLS-capable version has less availability.
+located in Moscow region, Russian Federation. Only one of those servers
+supports TLS and another just proxies the traffic to it. So TLS-capable
+version has less availability.
@cindex DANE
@cindex DNSCurve
@url{https://dnscurve.org/, DNSCurve}-secured
@url{http://www.stargrave.org/Trust-anchor.html, trust anchors}.
Both @code{ca.cypherpunks.ru} and DNSCurve trust anchors are
-signed with @code{CF60 E89A 5923 1E76 E263 6422 AE1A 8109 E498 57EF}
+signed with @code{12AD 3268 9C66 0D42 6967 FD75 CB82 0563 2107 AD8A}
@url{https://en.wikipedia.org/wiki/OpenPGP, OpenPGP}
@url{http://www.stargrave.org/Contacts.html, public key}.
@cindex quux.org
@item @url{https://nncp.mirrors.quux.org/}
-Its creation @url{http://lists.cypherpunks.ru/archive/nncp-devel/2108/0310.html, announcement}.
+Its creation @url{http://lists.cypherpunks.ru/archive/nncp-devel/87lf5fjvwb.fsf@@complete.org/T/, announcement}.
Mirror of the whole NNCP's website with all tarballs, made by John Goerzen.
It uses @url{https://letsencrypt.org/, Let's Encrypt} certificate
authority, so can be more easily accessible for some people. If you have
got NNCP-peering with
-@url{http://lists.cypherpunks.ru/archive/nncp-devel/2108/0283.html, nncp.quux.org}
+@url{http://lists.cypherpunks.ru/archive/nncp-devel/20210731121239.j3grg2di22vfc6ne@@faeroes.freeshell.org/T/, nncp.quux.org}
node, then you can also @ref{nncp-freq, freq} the @ref{Tarballs, tarballs}
from it.
@node Новости
@section Новости
+@node Релиз 8.8.0
+@subsection Релиз 8.8.0
+@itemize
+
+@item
+Исправлена невозможность сборки под Go 1.19.
+
+@item
+Минимальная требуемая версия Go 1.17.
+
+@item
+Обновлены зависимые библиотеки.
+
+@end itemize
+
@node Релиз 8.7.2
@subsection Релиз 8.7.2
@itemize
See also this page @ref{Новости, on russian}.
+@node Release 8_8_0
+@section Release 8.8.0
+@itemize
+
+@item
+Fixed buildability under Go 1.19.
+
+@item
+Minimal required Go version is 1.17.
+
+@item
+Updated dependencies.
+
+@end itemize
+
@node Release 8_7_2
@section Release 8.7.2
@itemize
@itemize
@item
-Minimal required Go version 1.13.
+Minimal required Go version is 1.13.
@item
Merkle Tree-based Hashing with BLAKE3 (MTH) is used instead of BLAKE2b.
"&pub=c6b7...9469"\
"&pub=eb2d...ca07"\
"&peer=tcp://example.com:2345"\
-"&peer=tcp://another.peer:3456%3Fkey=f879...2e9b"
-"&mcast=.*:5400"
+"&peer=tcp://another.peer:3456%3Fkey=f879...2e9b"\
+"&mcast=.*:5400"\
"&mcast=lo0"
@end example
github.com/hjson/hjson-go/build_release.sh \
github.com/klauspost/compress/gen.sh \
github.com/klauspost/compress/gzhttp \
- github.com/klauspost/compress/internal \
+ github.com/klauspost/compress/internal/snapref \
github.com/klauspost/compress/s2* \
github.com/klauspost/compress/snappy \
github.com/klauspost/compress/zstd/snappy.go \
-name .gitattributes \) -delete
mkdir contrib
-cp ~/work/redo/minimal/do contrib/do
+cp ~/work/redo/apenwarr/minimal/do contrib/do
cat > doc/download.texi <<EOF
@node Tarballs
showPrgrs bool,
) (bool, error) {
hsh := MTHNew(size, 0)
- if _, err := CopyProgressed(hsh, bufio.NewReaderSize(src, MTHSize), "check", les, showPrgrs); err != nil {
+ if _, err := CopyProgressed(
+ hsh,
+ bufio.NewReaderSize(src, MTHBlockSize),
+ "check", les, showPrgrs,
+ ); err != nil {
return false, err
}
return bytes.Compare(hsh.Sum(nil), checksum) == 0, nil
gut, err = Check(fd, size, hshValue[:], les, ctx.ShowPrgrs)
} else {
if _, err = mth.PreaddFrom(
- bufio.NewReaderSize(fd, MTHSize),
+ bufio.NewReaderSize(fd, MTHBlockSize),
pktName, ctx.ShowPrgrs,
); err != nil {
return 0, err
continue
}
pipeR, pipeW := io.Pipe()
- go nncp.PktEncRead(ctx.Self, ctx.Neigh, bufio.NewReader(fd), pipeW, true, nil)
+ go nncp.PktEncRead(
+ ctx.Self,
+ ctx.Neigh,
+ bufio.NewReaderSize(fd, nncp.MTHBlockSize),
+ pipeW, true, nil,
+ )
var pkt nncp.Pkt
_, err = xdr.Unmarshal(pipeR, &pkt)
fd.Close()
"go.cypherpunks.ru/nncp/v8"
)
-const (
- CopyBufSize = 1 << 17
-)
-
func usage() {
fmt.Fprintf(os.Stderr, nncp.UsageHeader())
fmt.Fprintf(os.Stderr, "nncp-bundle -- Create/digest stream of NNCP encrypted packets\n\n")
log.Fatalln("Error writing tar header:", err)
}
if _, err = nncp.CopyProgressed(
- tarWr, bufio.NewReader(fd), "Tx",
+ tarWr, bufio.NewReaderSize(fd, nncp.MTHBlockSize), "Tx",
append(les, nncp.LEs{
{K: "Pkt", V: nncp.Base32Codec.EncodeToString(job.HshValue[:])},
{K: "FullSize", V: job.Size},
log.Fatalln("Error during tar closing:", err)
}
} else {
- bufStdin := bufio.NewReaderSize(os.Stdin, CopyBufSize*2)
+ bufStdin := bufio.NewReaderSize(os.Stdin, nncp.MTHBlockSize*2)
pktEncBuf := make([]byte, nncp.PktEncOverhead)
var pktEnc *nncp.PktEnc
for {
- peeked, err := bufStdin.Peek(CopyBufSize)
+ peeked, err := bufStdin.Peek(nncp.MTHBlockSize)
if err != nil && err != io.EOF {
log.Fatalln("Error during reading:", err)
}
if err != nil {
log.Fatalln("Error during temporary file creation:", err)
}
- bufTmp := bufio.NewWriterSize(tmp, CopyBufSize)
+ bufTmp := bufio.NewWriterSize(tmp, nncp.MTHBlockSize)
if _, err = bufTmp.Write(pktEncBuf); err != nil {
log.Fatalln("Error during writing:", err)
}
replyNice,
flag.Args()[1],
flag.Args()[2:],
- bufio.NewReader(os.Stdin),
+ bufio.NewReaderSize(os.Stdin, nncp.MTHBlockSize),
int64(*minSize)*1024,
maxSize,
*noCompress,
}
hsh = nncp.MTHNew(fi.Size(), 0)
if _, err = nncp.CopyProgressed(
- hsh, bufio.NewReader(fd), "check",
+ hsh, bufio.NewReaderSize(fd, nncp.MTHBlockSize), "check",
nncp.LEs{{K: "Pkt", V: chunkPath}, {K: "FullSize", V: fi.Size()}},
ctx.ShowPrgrs,
); err != nil {
log.Fatalln("Can not stat file:", err)
}
if _, err = nncp.CopyProgressed(
- dstW, bufio.NewReader(fd), "reass",
+ dstW, bufio.NewReaderSize(fd, nncp.MTHBlockSize), "reass",
nncp.LEs{{K: "Pkt", V: chunkPath}, {K: "FullSize", V: fi.Size()}},
ctx.ShowPrgrs,
); err != nil {
}
r, w := io.Pipe()
go func() {
- _, err := io.CopyN(w, bufio.NewReader(fd), fiInt.Size())
+ _, err := io.CopyN(
+ w, bufio.NewReaderSize(fd, nncp.MTHBlockSize), fiInt.Size(),
+ )
if err == nil {
err = w.Close()
}
}
bufW := bufio.NewWriter(tmp)
copied, err := nncp.CopyProgressed(
- bufW, bufio.NewReader(fd), "Tx",
+ bufW, bufio.NewReaderSize(fd, nncp.MTHBlockSize), "Tx",
append(les, nncp.LE{K: "FullSize", V: job.Size}),
ctx.ShowPrgrs,
)
github.com/flynn/noise v1.0.0
github.com/fsnotify/fsnotify v1.5.1
github.com/gologme/log v1.3.0
- github.com/google/btree v1.0.1 // indirect
github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75
- github.com/hjson/hjson-go v3.1.0+incompatible
- github.com/klauspost/compress v1.14.4
- github.com/klauspost/cpuid/v2 v2.0.11 // indirect
+ github.com/hjson/hjson-go v3.3.0+incompatible
+ github.com/klauspost/compress v1.15.9
github.com/yggdrasil-network/yggdrasil-go v0.4.2
go.cypherpunks.ru/balloon v1.1.1
- go.cypherpunks.ru/recfile v0.4.3
- golang.org/x/crypto v0.0.0-20220214200702-86341886e292
- golang.org/x/net v0.0.0-20220225172249-27dd8689420f
- golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9
- golang.org/x/term v0.0.0-20210927222741-03fcf44c2211
- golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect
- inet.af/netstack v0.0.0-20211120045802-8aa80cf23d3c
+ go.cypherpunks.ru/recfile v0.5.0
+ golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90
+ golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b
+ golang.org/x/sys v0.0.0-20220829200755-d48e67d00261
+ golang.org/x/term v0.0.0-20220722155259-a9ba230a4035
+ gvisor.dev/gvisor v0.0.0-20220901235040-6ca97ef2ce1c
lukechampine.com/blake3 v1.1.7
)
-go 1.13
+require (
+ github.com/Arceliar/phony v0.0.0-20210209235338-dde1a8dca979 // indirect
+ github.com/google/btree v1.0.1 // indirect
+ github.com/klauspost/cpuid/v2 v2.1.1 // indirect
+ golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect
+)
+
+go 1.17
github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75 h1:f0n1xnMSmBLzVfsMMvriDyA75NB/oBgILX2GcHXIQzY=
github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA=
github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
-github.com/hjson/hjson-go v3.1.0+incompatible h1:DY/9yE8ey8Zv22bY+mHV1uk2yRy0h8tKhZ77hEdi0Aw=
github.com/hjson/hjson-go v3.1.0+incompatible/go.mod h1:qsetwF8NlsTsOTwZTApNlTCerV+b2GjYRRcIk4JMFio=
+github.com/hjson/hjson-go v3.3.0+incompatible h1:Rqr+Ya+0aCJMjaE4s8E9YKvuJLuLVpEvz4ONum52vnI=
+github.com/hjson/hjson-go v3.3.0+incompatible/go.mod h1:qsetwF8NlsTsOTwZTApNlTCerV+b2GjYRRcIk4JMFio=
github.com/kardianos/minwinsvc v1.0.0/go.mod h1:Bgd0oc+D0Qo3bBytmNtyRKVlp85dAloLKhfxanPFFRc=
-github.com/klauspost/compress v1.14.4 h1:eijASRJcobkVtSt81Olfh7JX43osYLwy5krOJo6YEu4=
-github.com/klauspost/compress v1.14.4/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
+github.com/klauspost/compress v1.15.9 h1:wKRjX6JRtDdrE9qwa4b/Cip7ACOshUI4smpCQanqjSY=
+github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU=
github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
-github.com/klauspost/cpuid/v2 v2.0.11 h1:i2lw1Pm7Yi/4O6XCSyJWqEHI2MDw2FzUK6o/D21xn2A=
-github.com/klauspost/cpuid/v2 v2.0.11/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c=
+github.com/klauspost/cpuid/v2 v2.1.1 h1:t0wUqjowdm8ezddV5k0tLWVklVuvLJpoHeb4WBdydm0=
+github.com/klauspost/cpuid/v2 v2.1.1/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY=
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/yggdrasil-network/yggdrasil-go v0.4.2/go.mod h1:/iMJjOrXRsjlFgqhWOPhecOKi7xHmHiY4/En3A42Fog=
go.cypherpunks.ru/balloon v1.1.1 h1:ypHM1DRf/XuCrp9pDkTHg00CqZX/Np/APb//iHvDJTA=
go.cypherpunks.ru/balloon v1.1.1/go.mod h1:k4s4ozrIrhpBjj78Z7LX8ZHxMQ+XE7DZUWl8gP2ojCo=
-go.cypherpunks.ru/recfile v0.4.3 h1:ephokihmV//p0ob6gx2FWXvm28/NBDbWTOJPUNahxO8=
-go.cypherpunks.ru/recfile v0.4.3/go.mod h1:sR+KajB+vzofL3SFVFwKt3Fke0FaCcN1g3YPNAhU3qI=
+go.cypherpunks.ru/recfile v0.5.0 h1:VM0H6yEaN4t9Yau4ikVwgH6IPdp2IzFJDm9CqoW/ob0=
+go.cypherpunks.ru/recfile v0.5.0/go.mod h1:sR+KajB+vzofL3SFVFwKt3Fke0FaCcN1g3YPNAhU3qI=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210506145944-38f3c27a63bf/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
-golang.org/x/crypto v0.0.0-20220214200702-86341886e292 h1:f+lwQ+GtmgoY+A2YaQxlSOnDjXcQ7ZRLWOHbC6HtRqE=
-golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90 h1:Y/gsMcFOcR+6S6f3YeMKl5g+dZMEWqcz5Czj/GWYbkM=
+golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20220225172249-27dd8689420f h1:oA4XRj0qtSt8Yo1Zms0CUlsT3KG69V2UGQWPBxujDmc=
-golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b h1:ZmngSVLe/wycRns9MKikG9OWIEjGcGAkacif7oYQaUY=
+golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210611083646-a4fc73990273/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 h1:nhht2DYV/Sn3qOayu8lM+cU1ii9sTLUeBQwQQfUHtrs=
-golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220829200755-d48e67d00261 h1:v6hYoSR9T5oet+pMXwUWkbiVqx/63mlHjefrHmxwfeY=
+golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.0.0-20220722155259-a9ba230a4035 h1:Q5284mrmYTpACcm+eAKjKJH48BBwSyfJqmmGDTtT8Vc=
+golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7-0.20210503195748-5c7c50ebbd4f/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.zx2c4.com/wireguard/windows v0.3.14/go.mod h1:3P4IEAsb+BjlKZmpUXgy74c0iX9AVwwr3WcVJ8nPgME=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-inet.af/netstack v0.0.0-20211120045802-8aa80cf23d3c h1:nr31qYr+91rWD8klUkPx3eGTZzumCC414UJG1QRKZTc=
-inet.af/netstack v0.0.0-20211120045802-8aa80cf23d3c/go.mod h1:KOJdAzQzMLKzwFEdOOnrnSrLIhaFVB+NQoME/e5wllA=
+gvisor.dev/gvisor v0.0.0-20220901235040-6ca97ef2ce1c h1:m5lcgWnL3OElQNVyp3qcncItJ2c0sQlSGjYK2+nJTA4=
+gvisor.dev/gvisor v0.0.0-20220901235040-6ca97ef2ce1c/go.mod h1:TIvkJD0sxe8pIob3p6T8IzxXunlp6yfgktvTNp+DGNM=
lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0=
lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA=
const Base32Encoded32Len = 52
var (
- Version string = "8.7.2"
+ Version string = "8.8.0"
Base32Codec *base32.Encoding = base32.StdEncoding.WithPadding(base32.NoPadding)
)
sharedKey, _, _, err = PktEncRead(
ctx.Self,
ctx.Neigh,
- bufio.NewReader(fd),
+ bufio.NewReaderSize(fd, MTHBlockSize),
pipeWB,
sharedKey == nil,
sharedKey,
fd.Close()
return w.CloseWithError(err)
}
- if _, err = io.Copy(tarWr, bufio.NewReader(fd)); err != nil {
+ if _, err = io.Copy(
+ tarWr, bufio.NewReaderSize(fd, MTHBlockSize),
+ ); err != nil {
fd.Close()
return w.CloseWithError(err)
}
_, finalSize, pktName, err := ctx.Tx(
node, pkt, nice,
srcSize, minSize, maxSize,
- bufio.NewReader(reader), dstPath, areaId,
+ bufio.NewReaderSize(reader, MTHBlockSize), dstPath, areaId,
)
les := LEs{
{"Type", "file"},
return err
}
- br := bufio.NewReader(reader)
+ br := bufio.NewReaderSize(reader, MTHBlockSize)
var sizeFull int64
var chunkNum int
checksums := [][MTHSize]byte{}
iwt "github.com/Arceliar/ironwood/types"
yaddr "github.com/yggdrasil-network/yggdrasil-go/src/address"
"golang.org/x/crypto/ed25519"
- "inet.af/netstack/tcpip"
- "inet.af/netstack/tcpip/adapters/gonet"
- "inet.af/netstack/tcpip/buffer"
- "inet.af/netstack/tcpip/header"
- "inet.af/netstack/tcpip/network/ipv6"
- "inet.af/netstack/tcpip/stack"
- "inet.af/netstack/tcpip/transport/tcp"
+ "gvisor.dev/gvisor/pkg/bufferv2"
+ "gvisor.dev/gvisor/pkg/tcpip"
+ "gvisor.dev/gvisor/pkg/tcpip/adapters/gonet"
+ "gvisor.dev/gvisor/pkg/tcpip/header"
+ "gvisor.dev/gvisor/pkg/tcpip/network/ipv6"
+ "gvisor.dev/gvisor/pkg/tcpip/stack"
+ "gvisor.dev/gvisor/pkg/tcpip/transport/tcp"
)
const IPv6HdrSize = 40
func (*TCPIPEndpoint) Wait() {}
-func (e *TCPIPEndpoint) WritePacket(
- _ stack.RouteInfo,
- _ tcpip.NetworkProtocolNumber,
- pkt *stack.PacketBuffer,
-) tcpip.Error {
- vv := buffer.NewVectorisedView(pkt.Size(), pkt.Views())
- n, err := vv.Read(e.writeBuf)
+func (e *TCPIPEndpoint) WritePacket(pkt *stack.PacketBuffer) tcpip.Error {
+ v := pkt.ToView()
+ n, err := v.Read(e.writeBuf)
if err != nil {
log.Println(err)
return &tcpip.ErrAborted{}
return nil
}
-func (e *TCPIPEndpoint) WritePackets(
- stack.RouteInfo,
- stack.PacketBufferList,
- tcpip.NetworkProtocolNumber,
-) (int, tcpip.Error) {
- panic("not implemented")
+func (e *TCPIPEndpoint) WritePackets(pbs stack.PacketBufferList) (int, tcpip.Error) {
+ for i, pb := range pbs.AsSlice() {
+ err := e.WritePacket(pb)
+ if err != nil {
+ return i + 1, err
+ }
+ }
+ return len(pbs.AsSlice()), nil
}
func (e *TCPIPEndpoint) WriteRawPacket(*stack.PacketBuffer) tcpip.Error {
func (*TCPIPEndpoint) ARPHardwareType() header.ARPHardwareType { return header.ARPHardwareNone }
-func (e *TCPIPEndpoint) AddHeader(
- tcpip.LinkAddress,
- tcpip.LinkAddress,
- tcpip.NetworkProtocolNumber,
- *stack.PacketBuffer,
-) {
-}
+func (e *TCPIPEndpoint) AddHeader(*stack.PacketBuffer) {}
func convertToFullAddr(ip net.IP, port int) (tcpip.FullAddress, tcpip.NetworkProtocolNumber) {
return tcpip.FullAddress{
e.ipToAddr[ip] = from
}
pkb := stack.NewPacketBuffer(stack.PacketBufferOptions{
- Data: buffer.NewVectorisedView(n, []buffer.View{
- buffer.NewViewFromBytes(e.readBuf[:n]),
- }),
+ Payload: bufferv2.MakeWithData(e.readBuf[:n]),
})
- e.d.DeliverNetworkPacket("", "", ipv6.ProtocolNumber, pkb)
+ e.d.DeliverNetworkPacket(ipv6.ProtocolNumber, pkb)
}
}()
return &e, nil