]> Cypherpunks.ru repositories - nncp.git/commitdiff
Use gvisor.dev/gvisor again instead of inet.af/netstack
authorSergey Matveev <stargrave@stargrave.org>
Sun, 4 Sep 2022 13:30:31 +0000 (16:30 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 4 Sep 2022 14:24:27 +0000 (17:24 +0300)
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.

doc/download.texi
doc/install.texi
doc/news.ru.texi
doc/news.texi
src/go.mod
src/go.sum
src/nncp.go
src/yggdrasil/tcpip.go

index 03e983897df2970ac5a36697491ab7234d8e3560..e88a98c4a148dd65639fd70a0cbd28ac41b5a9fc 100644 (file)
@@ -43,7 +43,7 @@ And additional ones for Yggdrasil support:
 @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}
index e948d811a54bb803d7e112050e57eb58552c9bcb..6850354c1ccc41ae73411d9f7b9f0b75dbce4536 100644 (file)
@@ -40,7 +40,7 @@ NNCP should run on any POSIX-compatible operating system.
 @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).
index bfc287c6221bf099c658a48d3604a6f28402c157..cb382dff387333eebd32850490413449c0529c0d 100644 (file)
@@ -1,6 +1,18 @@
 @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
index 326308a808397de059a281e7cc20c763e46e7245..fe59117f37ae530a3a44e06a022685b7994a9a0c 100644 (file)
@@ -4,6 +4,18 @@
 
 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
@@ -412,7 +424,7 @@ the check in infinite cycle.
 @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.
index fb0eb03fa3f6d233edf9ff48b9211ec8dd8a2950..221b1eb4808b5aa3295e0fa2a6cb9dceef860ae7 100644 (file)
@@ -7,11 +7,9 @@ require (
        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
@@ -19,9 +17,15 @@ require (
        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
index b6fc52d6177ca7564d9001cfe9861bc50c968b65..71b65f37f0290645a0ad53c102bdc5194ba5c5f6 100644 (file)
@@ -68,7 +68,6 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
 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=
@@ -85,9 +84,7 @@ golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7w
 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=
@@ -98,7 +95,6 @@ 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=
@@ -107,7 +103,7 @@ golang.zx2c4.com/wireguard v0.0.0-20210604143328-f9b48a961cd2/go.mod h1:laHzsbfM
 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=
index e51f92528d15bd1022b16046b4f902ed2b3e755e..31ba33be98d47461e70ba3d41225ed3d4619946e 100644 (file)
@@ -40,7 +40,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.`
 const Base32Encoded32Len = 52
 
 var (
-       Version string = "8.7.2"
+       Version string = "8.8.0"
 
        Base32Codec *base32.Encoding = base32.StdEncoding.WithPadding(base32.NoPadding)
 )
index b602dc12422a02311ce672fc87166f2f12be2c52..a1a71acd3eab4fae041ad22e5a16d9c764bd4b4c 100644 (file)
@@ -31,13 +31,13 @@ import (
        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
@@ -68,13 +68,9 @@ func (*TCPIPEndpoint) LinkAddress() tcpip.LinkAddress { return "" }
 
 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{}
@@ -93,12 +89,14 @@ func (e *TCPIPEndpoint) WritePacket(
        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 {
@@ -107,13 +105,7 @@ 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{
@@ -193,11 +185,9 @@ func NewTCPIPEndpoint(
                                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