tailscale/cmd
Jonathan Nobels 3e89068792
net/netmon, wgengine/userspace: purge ChangeDelta.Major and address TODOs (#17823)
updates tailscale/corp#33891

Addresses several older the TODO's in netmon.  This removes the 
Major flag precomputes the ChangeDelta state, rather than making
consumers of ChangeDeltas sort that out themselves.   We're also seeing
a lot of ChangeDelta's being flagged as "Major" when they are
not interesting, triggering rebinds in wgengine that are not needed.  This
cleans that up and adds a host of additional tests.

The dependencies are cleaned, notably removing dependency on netmon
itself for calculating what is interesting, and what is not.  This includes letting
individual platforms set a bespoke global "IsInterestingInterface"
function.  This is only used on Darwin.

RebindRequired now roughly follows how "Major" was historically
calculated but includes some additional checks for various
uninteresting events such as changes in interface addresses that
shouldn't trigger a rebind.  This significantly reduces thrashing (by
roughly half on Darwin clients which switching between nics).   The individual
values that we roll  into RebindRequired are also exposed so that
components consuming netmap.ChangeDelta can ask more
targeted questions.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
2025-12-17 12:32:40 -05:00
..
addlicense all: fix golangci-lint errors 2025-01-07 13:05:37 -08:00
build-webclient client/web: precompress assets 2023-12-07 20:57:31 -05:00
checkmetrics cmd/checkmetrics: add command for checking metrics against kb 2024-12-02 10:30:46 +01:00
cigocacher .github,cmd/cigocacher: add flags --version --stats --cigocached-host 2025-12-15 13:17:03 +00:00
cloner cmd/cloner: support cloning arbitrarily-nested maps 2025-11-13 14:04:47 -05:00
connector-gen cmd/connector-gen: add helper tool for wide app connector configurations 2023-12-15 09:29:42 -08:00
containerboot all: rename variables with lowercase-l/uppercase-I 2025-11-18 09:12:34 +00:00
derper client/local: add method to set gauge metric to a value 2025-12-16 14:11:33 -08:00
derpprobe cmd/derpprobe,prober: add run all probes handler (#16875) 2025-08-16 09:42:25 -04:00
dist {cmd/dist,release/dist}: add support for intermediary QNAP signing certificates 2025-08-15 16:27:46 -05:00
featuretags feature/featuretags,cmd/omitsize: support feature dependencies 2025-09-19 07:04:57 -07:00
get-authkey cmd,tsnet,internal/client: create internal shim to deprecated control plane API 2025-02-18 10:23:04 -06:00
gitops-pusher scripts/check_license_headers.sh: delete, rewrite as a Go test 2025-06-16 13:35:38 -07:00
hello cmd/hello: display native ipv4 (#15191) 2025-03-04 08:47:35 -07:00
jsonimports cmd/jsonimports: add static analyzer for consistent "json" imports (#17669) 2025-10-28 14:48:02 -07:00
k8s-nameserver k8s-operator: add IPv6 support for DNS records (#16691) 2025-09-25 11:26:43 -04:00
k8s-operator cmd/k8s-operator: fix statefulset template yaml indentation (#18194) 2025-12-15 11:27:59 +01:00
k8s-proxy all: rename variables with lowercase-l/uppercase-I 2025-11-18 09:12:34 +00:00
mkmanifest cmd/mkmanifest, cmd/tailscale, cmd/tailscaled: remove Windows arm32 resources from OSS 2023-03-01 15:45:12 -07:00
mkpkg go.mod: upgrade nfpm to v2 (#8786) 2023-08-03 13:00:45 -07:00
mkversion version/mkversion: open-source version generation logic 2023-02-18 05:21:05 +00:00
nardump cmd/nardump: support symlinks, add basic test 2025-04-07 19:24:51 -07:00
natc all: rename variables with lowercase-l/uppercase-I 2025-11-18 09:12:34 +00:00
netlogfmt cmd/netlogfmt: allow empty --resolve-addrs flag (#18103) 2025-12-02 09:08:48 -08:00
nginx-auth tailcfg,all: add and use Node.IsTagged() 2023-03-13 08:44:25 -07:00
omitsize feature/featuretags,cmd/omitsize: support feature dependencies 2025-09-19 07:04:57 -07:00
pgproxy all: use new LocalAPI client package location 2025-02-05 14:41:42 -08:00
printdep cmd/printdep: print correct toolchain URL 2023-02-11 17:57:36 +00:00
proxy-test-server net/tlsdial: fix TLS cert validation of HTTPS proxies 2025-06-18 14:20:39 -07:00
proxy-to-grafana scripts/check_license_headers.sh: delete, rewrite as a Go test 2025-06-16 13:35:38 -07:00
sniproxy all: rename variables with lowercase-l/uppercase-I 2025-11-18 09:12:34 +00:00
speedtest all: update copyright and license headers 2023-01-27 15:36:29 -08:00
ssh-auth-none-demo ssh,tempfork/gliderlabs/ssh: replace github.com/tailscale/golang-x-crypto/ssh with golang.org/x/crypto/ssh 2025-01-31 16:36:39 -06:00
stunc cmd/stunc: enforce read timeout deadline (#14309) 2024-12-06 14:27:52 -05:00
stund cmd/cigocacher,go.mod: add cigocacher cmd 2025-11-24 21:15:46 +00:00
stunstamp all: rename variables with lowercase-l/uppercase-I 2025-11-18 09:12:34 +00:00
sync-containers all: rename variables with lowercase-l/uppercase-I 2025-11-18 09:12:34 +00:00
systray client/systray: allow specifying tailscaled socket 2025-08-05 09:19:49 -07:00
tailscale cmd/tailscale/cli: stabilise the output of tailscale lock status --json 2025-12-09 09:40:06 +00:00
tailscaled net/netmon, wgengine/userspace: purge ChangeDelta.Major and address TODOs (#17823) 2025-12-17 12:32:40 -05:00
testcontrol all: use Go 1.22 range-over-int 2024-04-16 15:32:38 -07:00
testwrapper cmd/testwrapper/flakytest: use t.Attr annotation on flaky tests 2025-10-06 10:58:48 -07:00
tl-longchain all: rename variables with lowercase-l/uppercase-I 2025-11-18 09:12:34 +00:00
tsconnect types/netmap,*: remove some redundant fields from NetMap 2025-11-18 07:56:10 -08:00
tsidp tsnet: enable node registration via federated identity 2025-12-02 17:47:03 +00:00
tsshd all: update copyright and license headers 2023-01-27 15:36:29 -08:00
tta all: use new LocalAPI client package location 2025-02-05 14:41:42 -08:00
vet tailcfg, control/controlclient: start moving MapResponse.DefaultAutoUpdate to a nodeattr 2025-11-25 10:45:34 -08:00
viewer cmd/{cloner,viewer}: handle maps of views 2025-11-12 22:09:49 -05:00
vnet cmd/vnet: add wsproxy mode 2025-03-29 11:02:42 -07:00
xdpderper tsweb: split promvarz into an optional dependency 2025-03-18 16:57:04 -07:00