Latter one is abandoned project now, because Go 1.17 has lazy module
loading support: https://github.com/inetaf/netstack/issues/4
So there is no need in huge amount of dependencies anymore with gvisor.
Moreover inet.af contains dependencies that are explicitly marked as
unbuildable under Go 1.19, so it anyway needs some altering. According
to gvisor's commit messages, it is tested to work under 32-bit systems.
@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{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}
@end multitable
@multitable {XXXXX} {XXXX-XX-XX} {XXXX KiB} {meta4 link sig} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
@pindex go
@pindex texinfo
NNCP is written on @url{https://go.dev/, Go} programming language
@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).
@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).
@node Новости
@section Новости
@node Новости
@section Новости
+@node Релиз 8.8.0
+@subsection Релиз 8.8.0
+@itemize
+
+@item
+Исправлена невозможность сборки под Go 1.19.
+
+@item
+Минимальная требуемая версия Go 1.17.
+
+@end itemize
+
@node Релиз 8.7.2
@subsection Релиз 8.7.2
@itemize
@node Релиз 8.7.2
@subsection Релиз 8.7.2
@itemize
See also this page @ref{Новости, on russian}.
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.
+
+@end itemize
+
@node Release 8_7_2
@section Release 8.7.2
@itemize
@node Release 8_7_2
@section Release 8.7.2
@itemize
-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.
@item
Merkle Tree-based Hashing with BLAKE3 (MTH) is used instead of BLAKE2b.
github.com/flynn/noise v1.0.0
github.com/fsnotify/fsnotify v1.5.1
github.com/gologme/log v1.3.0
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/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/yggdrasil-network/yggdrasil-go v0.4.2
go.cypherpunks.ru/balloon v1.1.1
go.cypherpunks.ru/recfile v0.4.3
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/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/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
+ gvisor.dev/gvisor v0.0.0-20220901235040-6ca97ef2ce1c
lukechampine.com/blake3 v1.1.7
)
lukechampine.com/blake3 v1.1.7
)
+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.0.11 // indirect
+ golang.org/x/time v0.0.0-20191024005414-555d28b269f0 // indirect
+)
+
+go 1.17
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-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/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
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/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
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-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-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/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
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/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
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.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.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=
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=
lukechampine.com/blake3 v1.1.7 h1:GgRMhmdsuK8+ii6UZFDL8Nb+VyMwadAgcJyfYHxG6n0=
lukechampine.com/blake3 v1.1.7/go.mod h1:tkKEOtDkNtklkXtLNEOGNq5tcV90tJiA1vAA12R78LA=
const Base32Encoded32Len = 52
var (
const Base32Encoded32Len = 52
var (
- Version string = "8.7.2"
+ Version string = "8.8.0"
Base32Codec *base32.Encoding = base32.StdEncoding.WithPadding(base32.NoPadding)
)
Base32Codec *base32.Encoding = base32.StdEncoding.WithPadding(base32.NoPadding)
)
iwt "github.com/Arceliar/ironwood/types"
yaddr "github.com/yggdrasil-network/yggdrasil-go/src/address"
"golang.org/x/crypto/ed25519"
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"
func (*TCPIPEndpoint) Wait() {}
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{}
if err != nil {
log.Println(err)
return &tcpip.ErrAborted{}
-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 (e *TCPIPEndpoint) WriteRawPacket(*stack.PacketBuffer) tcpip.Error {
func (*TCPIPEndpoint) ARPHardwareType() header.ARPHardwareType { return header.ARPHardwareNone }
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{
func convertToFullAddr(ip net.IP, port int) (tcpip.FullAddress, tcpip.NetworkProtocolNumber) {
return tcpip.FullAddress{
e.ipToAddr[ip] = from
}
pkb := stack.NewPacketBuffer(stack.PacketBufferOptions{
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)