From 2ea765e5d8887e27ab22b774244c814127db6d4e Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Mon, 8 Nov 2021 18:51:03 -0800 Subject: [PATCH] go.mod: bump inet.af/netstack Updates #2642 (I'd hoped, but doesn't seem to fix it) Change-Id: Id54af7c90a1206bc7018215957e20e954782b911 Signed-off-by: Brad Fitzpatrick --- cmd/tailscaled/depaware.txt | 7 +++++++ go.mod | 2 +- go.sum | 8 ++------ wgengine/netstack/netstack.go | 33 ++++++++++++++++++++++++--------- 4 files changed, 34 insertions(+), 16 deletions(-) diff --git a/cmd/tailscaled/depaware.txt b/cmd/tailscaled/depaware.txt index 4708d497f..fb3ba2c2e 100644 --- a/cmd/tailscaled/depaware.txt +++ b/cmd/tailscaled/depaware.txt @@ -116,10 +116,13 @@ tailscale.com/cmd/tailscaled dependencies: (generated by github.com/tailscale/de inet.af/netaddr from inet.af/wf+ inet.af/netstack/atomicbitops from inet.af/netstack/tcpip+ 💣 inet.af/netstack/buffer from inet.af/netstack/tcpip/stack + inet.af/netstack/context from inet.af/netstack/refs+ 💣 inet.af/netstack/gohacks from inet.af/netstack/state/wire+ inet.af/netstack/linewriter from inet.af/netstack/log inet.af/netstack/log from inet.af/netstack/state+ inet.af/netstack/rand from inet.af/netstack/tcpip/network/hash+ + inet.af/netstack/refs from inet.af/netstack/refsvfs2 + inet.af/netstack/refsvfs2 from inet.af/netstack/tcpip/stack 💣 inet.af/netstack/sleep from inet.af/netstack/tcpip/transport/tcp 💣 inet.af/netstack/state from inet.af/netstack/atomicbitops+ inet.af/netstack/state/wire from inet.af/netstack/state @@ -130,6 +133,7 @@ tailscale.com/cmd/tailscaled dependencies: (generated by github.com/tailscale/de inet.af/netstack/tcpip/hash/jenkins from inet.af/netstack/tcpip/stack+ inet.af/netstack/tcpip/header from inet.af/netstack/tcpip/header/parse+ inet.af/netstack/tcpip/header/parse from inet.af/netstack/tcpip/network/ipv4+ + inet.af/netstack/tcpip/internal/tcp from inet.af/netstack/tcpip/stack+ inet.af/netstack/tcpip/link/channel from tailscale.com/wgengine/netstack inet.af/netstack/tcpip/network/hash from inet.af/netstack/tcpip/network/ipv4+ inet.af/netstack/tcpip/network/internal/fragmentation from inet.af/netstack/tcpip/network/ipv4+ @@ -139,7 +143,10 @@ tailscale.com/cmd/tailscaled dependencies: (generated by github.com/tailscale/de inet.af/netstack/tcpip/ports from inet.af/netstack/tcpip/stack+ inet.af/netstack/tcpip/seqnum from inet.af/netstack/tcpip/header+ 💣 inet.af/netstack/tcpip/stack from inet.af/netstack/tcpip/adapters/gonet+ + inet.af/netstack/tcpip/transport from inet.af/netstack/tcpip/transport/icmp+ inet.af/netstack/tcpip/transport/icmp from tailscale.com/wgengine/netstack + inet.af/netstack/tcpip/transport/internal/network from inet.af/netstack/tcpip/transport/icmp+ + inet.af/netstack/tcpip/transport/internal/noop from inet.af/netstack/tcpip/transport/raw inet.af/netstack/tcpip/transport/packet from inet.af/netstack/tcpip/transport/raw inet.af/netstack/tcpip/transport/raw from inet.af/netstack/tcpip/transport/icmp+ 💣 inet.af/netstack/tcpip/transport/tcp from inet.af/netstack/tcpip/adapters/gonet+ diff --git a/go.mod b/go.mod index 670b1bf83..074a5c721 100644 --- a/go.mod +++ b/go.mod @@ -56,7 +56,7 @@ require ( golang.zx2c4.com/wireguard/windows v0.4.10 honnef.co/go/tools v0.2.1 inet.af/netaddr v0.0.0-20211027220019-c74959edd3b6 - inet.af/netstack v0.0.0-20211101182044-1c1bcf452982 + inet.af/netstack v0.0.0-20211120045802-8aa80cf23d3c inet.af/peercred v0.0.0-20210318190834-4259e17bb763 inet.af/wf v0.0.0-20210516214145-a5343001b756 nhooyr.io/websocket v1.8.7 diff --git a/go.sum b/go.sum index 05f6e85f4..8a97def1c 100644 --- a/go.sum +++ b/go.sum @@ -975,10 +975,6 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.zx2c4.com/wintun v0.0.0-20211104114900-415007cec224 h1:Ug9qvr1myri/zFN6xL17LSCBGFDnphBBhzmILHsM5TY= golang.zx2c4.com/wintun v0.0.0-20211104114900-415007cec224/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= golang.zx2c4.com/wireguard v0.0.0-20210905140043-2ef39d47540c/go.mod h1:laHzsbfMhGSobUmruXWAyMKKHSqvIcrqZJMyHD+/3O8= -golang.zx2c4.com/wireguard v0.0.0-20211115224047-111e0566dce3 h1:7BFThRTwBwTLoMomQ/Y0GqY1VLH9D7kbbTNsfxl2fU0= -golang.zx2c4.com/wireguard v0.0.0-20211115224047-111e0566dce3/go.mod h1:evxZIqfCetExY5piKXGAxJYwvXWkps9zTCkWpkoGFxw= -golang.zx2c4.com/wireguard v0.0.0-20211116194326-3cae233d69f7 h1:ZeHUKruJlkbSvafSH7GrDzMDXf7+/0T5sEKE8A9rEiE= -golang.zx2c4.com/wireguard v0.0.0-20211116194326-3cae233d69f7/go.mod h1:evxZIqfCetExY5piKXGAxJYwvXWkps9zTCkWpkoGFxw= golang.zx2c4.com/wireguard v0.0.0-20211116201604-de7c702ace45 h1:mEVhdMPTuebD9IUXOUB5Q2sjZpcmzkahHWd6DrGpLHA= golang.zx2c4.com/wireguard v0.0.0-20211116201604-de7c702ace45/go.mod h1:evxZIqfCetExY5piKXGAxJYwvXWkps9zTCkWpkoGFxw= golang.zx2c4.com/wireguard/windows v0.4.10 h1:HmjzJnb+G4NCdX+sfjsQlsxGPuYaThxRbZUZFLyR0/s= @@ -1056,8 +1052,8 @@ howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCU inet.af/netaddr v0.0.0-20210515010201-ad03edc7c841/go.mod h1:z0nx+Dh+7N7CC8V5ayHtHGpZpxLQZZxkIaaz6HN65Ls= inet.af/netaddr v0.0.0-20211027220019-c74959edd3b6 h1:acCzuUSQ79tGsM/O50VRFySfMm19IoMKL+sZztZkCxw= inet.af/netaddr v0.0.0-20211027220019-c74959edd3b6/go.mod h1:y3MGhcFMlh0KZPMuXXow8mpjxxAk3yoDNsp4cQz54i8= -inet.af/netstack v0.0.0-20211101182044-1c1bcf452982 h1:hYciifHEv98/p8ln52ybKhgQpGouZWALFxxFE65RVdU= -inet.af/netstack v0.0.0-20211101182044-1c1bcf452982/go.mod h1:fG3G1dekmK8oDX3iVzt8c0zICLMLSN8SjdxbXVt0WjU= +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= inet.af/peercred v0.0.0-20210318190834-4259e17bb763 h1:gPSJmmVzmdy4kHhlCMx912GdiUz3k/RzJGg0ADqy1dg= inet.af/peercred v0.0.0-20210318190834-4259e17bb763/go.mod h1:FjawnflS/udxX+SvpsMgZfdqx2aykOlkISeAsADi5IU= inet.af/wf v0.0.0-20210516214145-a5343001b756 h1:muIT3C1rH3/xpvIH8blKkMvhctV7F+OtZqs7kcwHDBQ= diff --git a/wgengine/netstack/netstack.go b/wgengine/netstack/netstack.go index b0c596a29..8002cf627 100644 --- a/wgengine/netstack/netstack.go +++ b/wgengine/netstack/netstack.go @@ -241,13 +241,21 @@ func (ns *Impl) addSubnetAddress(ip netaddr.IP) { ns.mu.Unlock() // Only register address into netstack for first concurrent connection. if needAdd { - var pn tcpip.NetworkProtocolNumber + pa := tcpip.ProtocolAddress{ + AddressWithPrefix: tcpip.AddressWithPrefix{ + Address: tcpip.Address(ip.IPAddr().IP), + PrefixLen: int(ip.BitLen()), + }, + } if ip.Is4() { - pn = ipv4.ProtocolNumber + pa.Protocol = ipv4.ProtocolNumber } else if ip.Is6() { - pn = ipv6.ProtocolNumber + pa.Protocol = ipv6.ProtocolNumber } - ns.ipstack.AddAddress(nicID, pn, tcpip.Address(ip.IPAddr().IP)) + ns.ipstack.AddProtocolAddress(nicID, pa, stack.AddressProperties{ + PEB: stack.CanBePrimaryEndpoint, // zero value default + ConfigType: stack.AddressConfigStatic, // zero value default + }) } } @@ -318,12 +326,19 @@ func (ns *Impl) updateIPs(nm *netmap.NetworkMap) { } } for ipp := range ipsToBeAdded { - var err tcpip.Error + pa := tcpip.ProtocolAddress{ + AddressWithPrefix: ipp, + } if ipp.Address.To4() == "" { - err = ns.ipstack.AddAddressWithPrefix(nicID, ipv6.ProtocolNumber, ipp) + pa.Protocol = ipv6.ProtocolNumber } else { - err = ns.ipstack.AddAddressWithPrefix(nicID, ipv4.ProtocolNumber, ipp) + pa.Protocol = ipv4.ProtocolNumber } + var err tcpip.Error + err = ns.ipstack.AddProtocolAddress(nicID, pa, stack.AddressProperties{ + PEB: stack.CanBePrimaryEndpoint, // zero value default + ConfigType: stack.AddressConfigStatic, // zero value default + }) if err != nil { ns.logf("netstack: could not register IP %s: %v", ipp, err) } else { @@ -572,8 +587,8 @@ func (ns *Impl) forwardTCP(client *gonet.TCPConn, clientRemoteIP netaddr.IP, wq ctx, cancel := context.WithCancel(context.Background()) defer cancel() - waitEntry, notifyCh := waiter.NewChannelEntry(nil) - wq.EventRegister(&waitEntry, waiter.EventHUp) + waitEntry, notifyCh := waiter.NewChannelEntry(waiter.EventHUp) // TODO(bradfitz): right EventMask? + wq.EventRegister(&waitEntry) defer wq.EventUnregister(&waitEntry) done := make(chan bool) // netstack doesn't close the notification channel automatically if there was no