tailscale/net/netmon
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>
2024-05-01 09:20:09 -04:00
..
defaultroute_bsd.go net/netmon: swap to swift-derived defaultRoute on macos (#11936) 2024-05-01 09:20:09 -04:00
defaultroute_darwin.go net/netmon: swap to swift-derived defaultRoute on macos (#11936) 2024-05-01 09:20:09 -04:00
interfaces_android.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
interfaces_bsd.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
interfaces_darwin_test.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
interfaces_darwin.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
interfaces_default_route_test.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
interfaces_defaultrouteif_todo.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
interfaces_freebsd.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
interfaces_linux_test.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
interfaces_linux.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
interfaces_test.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
interfaces_windows_test.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
interfaces_windows.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
netmon_darwin_test.go all: move network monitoring from wgengine/monitor to net/netmon 2023-04-20 10:15:59 -07:00
netmon_darwin.go all: move network monitoring from wgengine/monitor to net/netmon 2023-04-20 10:15:59 -07:00
netmon_freebsd.go all: move network monitoring from wgengine/monitor to net/netmon 2023-04-20 10:15:59 -07:00
netmon_linux_test.go all: move network monitoring from wgengine/monitor to net/netmon 2023-04-20 10:15:59 -07:00
netmon_linux.go all: adjust case of "IPv4" and "IPv6" 2023-06-27 10:09:30 -07:00
netmon_polling.go all: move network monitoring from wgengine/monitor to net/netmon 2023-04-20 10:15:59 -07:00
netmon_test.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
netmon_windows.go all: cleanup unused code, part 2 (#10670) 2023-12-21 17:40:03 -08:00
netmon.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00
polling.go net/netmon: factor out debounce loop, simplify polling impl 2023-08-23 19:42:09 -07:00
state.go net/{interfaces,netmon}, all: merge net/interfaces package into net/netmon 2024-04-28 07:34:52 -07:00