@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}
@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).
@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
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
@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.
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/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/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
)
-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.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-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/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/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.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)
)
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