You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/net
Jonathan Nobels fa1303d632
net/netmon: swap to swift-derived defaultRoute on macos (#11936)
Updates tailscale/corp#18960

iOS uses Apple's NetworkMonitor to track the default interface and
there's no reason we shouldn't also use this on macOS, for the same
reasons noted in the comments for why this change was made on iOS.

This eliminates the need to load and parse the routing table when
querying the defaultRouter() in almost all cases.

A slight modification here (on both platforms) to fallback to the default
BSD logic in the unhappy-path rather than making assumptions that
may not hold.  If netmon is eventually parsing AF_ROUTE and able
to give a consistently correct answer for the  default interface index,
we can fall back to that and eliminate the Swift dependency.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
6 months ago
..
art all: use Go 1.22 range-over-int 7 months ago
connstats all: use Go 1.22 range-over-int 7 months ago
dns net/netns, net/dns/resolver, etc: make netmon required in most places 6 months ago
dnscache net/netns, net/dns/resolver, etc: make netmon required in most places 6 months ago
dnsfallback tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing 6 months ago
flowtrack all: update copyright and license headers 2 years ago
ktimeout net/ktimeout: add a package to set TCP user timeout 8 months ago
memnet net/memnet: export the network name (#9111) 1 year ago
netaddr all: update copyright and license headers 2 years ago
netcheck net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 6 months ago
neterror net/neterror, wgengine/magicsock: use UDP GSO and GRO on Linux (#7791) 2 years ago
netkernelconf client/tailscale,ipn/{ipnlocal,localapi}: check UDP GRO config (#10071) 12 months ago
netknob all: update copyright and license headers 2 years ago
netmon net/netmon: swap to swift-derived defaultRoute on macos (#11936) 6 months ago
netns net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 6 months ago
netstat net/{netns,netstat}: use new x/sys/cpu.IsBigEndian 2 years ago
netutil net/netmon, add: add netmon.State type alias of interfaces.State 6 months ago
packet all: use Go 1.22 range-over-int 7 months ago
ping net/ping: fix ICMP echo code field to 0 1 year ago
portmapper net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 6 months ago
proxymux all: cleanup unused code, part 1 (#10661) 11 months ago
routetable net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 6 months ago
socks5 net/socks5: add password auth support 2 years ago
sockstats net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 6 months ago
speedtest all: update copyright and license headers 2 years ago
stun wgengine/magicsock, types/nettype, etc: finish ReadFromUDPAddrPort netip migration 2 years ago
stunserver all: use Go 1.22 range-over-int 7 months ago
tcpinfo all: use Go 1.22 range-over-int 7 months ago
tlsdial tsd, ipnlocal, etc: add tsd.System.HealthTracker, start some plumbing 6 months ago
tsaddr all: use Go 1.22 range-over-int 7 months ago
tsdial net/netns, net/dns/resolver, etc: make netmon required in most places 6 months ago
tshttpproxy all: use Go 1.22 range-over-int 7 months ago
tstun net/tstun: implement env var for disabling UDP GRO on Linux (#11924) 6 months ago
wsconn net/wsconn: accept a remote addr string and plumb it through 1 year ago