net/netns, net/dns/resolver, etc: make netmon required in most places
The goal is to move more network state accessors to netmon.Monitor where they can be cheaper/cached. But first (this change and others) we need to make sure the one netmon.Monitor is plumbed everywhere. Some notable bits: * tsdial.NewDialer is added, taking a now-required netmon * because a tsdial.Dialer always has a netmon, anything taking both a Dialer and a NetMon is now redundant; take only the Dialer and get the NetMon from that if/when needed. * netmon.NewStatic is added, primarily for tests Updates tailscale/corp#10910 Updates tailscale/corp#18960 Updates #7967 Updates #3299 Change-Id: I877f9cb87618c4eb037cee098241d18da9c01691 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:

committed by
Brad Fitzpatrick

parent
4f73a26ea5
commit
3672f29a4e
@ -1657,7 +1657,6 @@ func (c *Client) nodeAddr(ctx context.Context, n *tailcfg.DERPNode, proto probeP
|
||||
Forward: net.DefaultResolver,
|
||||
UseLastGood: true,
|
||||
Logf: c.logf,
|
||||
NetMon: c.NetMon,
|
||||
}
|
||||
}
|
||||
resolver := c.resolver
|
||||
|
@ -24,7 +24,6 @@ import (
|
||||
"tailscale.com/net/stun/stuntest"
|
||||
"tailscale.com/tailcfg"
|
||||
"tailscale.com/tstest"
|
||||
"tailscale.com/types/logger"
|
||||
)
|
||||
|
||||
func TestHairpinSTUN(t *testing.T) {
|
||||
@ -157,14 +156,8 @@ func TestHairpinWait(t *testing.T) {
|
||||
}
|
||||
|
||||
func newTestClient(t testing.TB) *Client {
|
||||
netMon, err := netmon.New(logger.WithPrefix(t.Logf, "... netmon: "))
|
||||
if err != nil {
|
||||
t.Fatalf("netmon.New: %v", err)
|
||||
}
|
||||
t.Cleanup(func() { netMon.Close() })
|
||||
|
||||
c := &Client{
|
||||
NetMon: netMon,
|
||||
NetMon: netmon.NewStatic(),
|
||||
Logf: t.Logf,
|
||||
}
|
||||
return c
|
||||
|
@ -24,12 +24,15 @@ import (
|
||||
// to bind, errors will be returned, if one or both protocols can bind no error
|
||||
// is returned.
|
||||
func (c *Client) Standalone(ctx context.Context, bindAddr string) error {
|
||||
if c.NetMon == nil {
|
||||
panic("netcheck.Client.NetMon must be set")
|
||||
}
|
||||
if bindAddr == "" {
|
||||
bindAddr = ":0"
|
||||
}
|
||||
var errs []error
|
||||
|
||||
u4, err := nettype.MakePacketListenerWithNetIP(netns.Listener(c.logf, nil)).ListenPacket(ctx, "udp4", bindAddr)
|
||||
u4, err := nettype.MakePacketListenerWithNetIP(netns.Listener(c.logf, c.NetMon)).ListenPacket(ctx, "udp4", bindAddr)
|
||||
if err != nil {
|
||||
c.logf("udp4: %v", err)
|
||||
errs = append(errs, err)
|
||||
@ -37,7 +40,7 @@ func (c *Client) Standalone(ctx context.Context, bindAddr string) error {
|
||||
go readPackets(ctx, c.logf, u4, c.ReceiveSTUNPacket)
|
||||
}
|
||||
|
||||
u6, err := nettype.MakePacketListenerWithNetIP(netns.Listener(c.logf, nil)).ListenPacket(ctx, "udp6", bindAddr)
|
||||
u6, err := nettype.MakePacketListenerWithNetIP(netns.Listener(c.logf, c.NetMon)).ListenPacket(ctx, "udp6", bindAddr)
|
||||
if err != nil {
|
||||
c.logf("udp6: %v", err)
|
||||
errs = append(errs, err)
|
||||
|
Reference in New Issue
Block a user