tailscale/cmd
Andrew Lytvynov e25f114916
ipn,cmd/tailscale/cli: support hierarchical MaskedPrefs (#10507)
Some fields if `ipn.Prefs` are structs. `ipn.MaskedPrefs` has a single
level of boolean `*Set` flags, which doesn't map well to nested structs
within `ipn.Prefs`.

Change `MaskedPrefs` and `ApplyEdits` to support `FooSet` struct fields
that map to a nested struct of `ipn.Prefs` like `AutoUpdates`. Each
struct field in `MaskedPrefs` is just a bundle of more `Set` bool fields
or other structs. This allows you to have a `Set` flag for any
arbitrarily-nested field of `ipn.Prefs`.

Also, make `ApplyEdits` match fields between `Prefs` and `MaskedPrefs`
by name instead of order, to make it a bit less finicky. It's probably
slower but `ipn.ApplyEdits` should not be in any hot path.

As a result, `AutoUpdate.Check` and `AutoUpdate.Apply` fields don't
clobber each other when set individually.

Updates #16247

Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
2023-12-08 10:19:25 -08:00
..
addlicense all: update tools that manage copyright headers 2023-01-27 15:36:29 -08:00
build-webclient client/web: precompress assets 2023-12-07 20:57:31 -05:00
cloner cmd/cloner: fix typo in test type's name 2023-09-30 10:18:18 -07:00
containerboot linuxfw,wgengine/route,ipn: add c2n and nodeattrs to control linux netfilter 2023-12-05 14:22:02 -05:00
derper tsweb: propagate RequestID via context and entire request 2023-11-30 15:00:29 -05:00
derpprobe prober: migrate to Prometheus metric library 2023-04-11 08:37:32 +01:00
dist cmd/dist,release/dist: add distsign signing hooks (#9070) 2023-08-24 14:36:47 -07:00
get-authkey all: use cmpx.Or where it made sense 2023-06-07 22:06:24 -07:00
gitops-pusher .github,cmd/gitops-pusher: update to checkout@v4 2023-09-04 15:12:57 -07:00
hello all: update copyright and license headers 2023-01-27 15:36:29 -08:00
k8s-operator cmd/k8s-operator: generate static kube manifests from the Helm chart. (#10436) 2023-12-04 10:18:07 +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 all: update copyright and license headers 2023-01-27 15:36:29 -08:00
netlogfmt go.mod: update github.com/go-json-experiment/json (#9508) 2023-09-21 14:19:27 -07:00
nginx-auth tailcfg,all: add and use Node.IsTagged() 2023-03-13 08:44:25 -07:00
pgproxy various: add golangci-lint, fix issues (#7905) 2023-04-17 18:38:24 -04:00
printdep cmd/printdep: print correct toolchain URL 2023-02-11 17:57:36 +00:00
proxy-to-grafana tailcfg,all: add and use Node.IsTagged() 2023-03-13 08:44:25 -07:00
sniproxy appc,cmd/sniproxy,ipn/ipnlocal: split sniproxy configuration code out of appc 2023-11-02 12:51:40 -07:00
speedtest all: update copyright and license headers 2023-01-27 15:36:29 -08:00
ssh-auth-none-demo all: replace deprecated ioutil references 2023-08-23 23:53:19 +01:00
stunc all: update copyright and license headers 2023-01-27 15:36:29 -08:00
sync-containers all: adjust some build tags for plan9 2023-08-24 15:42:35 -07:00
tailscale ipn,cmd/tailscale/cli: support hierarchical MaskedPrefs (#10507) 2023-12-08 10:19:25 -08:00
tailscaled clientupdate: remove TS_NOLAUNCH and GUI restart hacks from autoupdate 2023-12-08 10:07:45 -08:00
testcontrol all: update copyright and license headers 2023-01-27 15:36:29 -08:00
testwrapper ci: report test coverage to coveralls.io 2023-11-21 09:08:37 -06:00
tsconnect scripts/check_license_headers: enforce license on ts/tsx files 2023-11-28 13:57:09 -05:00
tsidp cmd/tsidp: add start of OIDC Tailscale IdP 2023-11-15 14:27:39 -08:00
tsshd all: update copyright and license headers 2023-01-27 15:36:29 -08:00
viewer cmd/cloner: add regression test for slice nil/empty semantics 2023-09-29 19:00:40 -07:00