tailscale/ipn
Maisem Ali 50b4b8b2c6 ipn/ipnlocal: make peerIPs return a sorted slice
Currently peerIPs doesn't do any sorting of the routes it returns. This
is typically fine, however imagine the case of an HA subnet router
failover. When a route R moves from peer A to peer B, the output of
peerIPs changes. This in turn causes all the deephash check inside
wgengine to fail as the hashed value of [R1, R2] is different than
the hashed value of [R2, R1]. When the hash check failes, it causes
wgengine to reconfigure all routes in the OS. This is especially
problematic for macOS and iOS where we use the NetworkExtension.

This commit makes it that the peerIPs are always sorted when returned,
thus making the hash be consistent as long as the list of routes remains
static.

Signed-off-by: Maisem Ali <maisem@tailscale.com>
2022-04-13 16:30:17 -07:00
..
ipnlocal ipn/ipnlocal: make peerIPs return a sorted slice 2022-04-13 16:30:17 -07:00
ipnserver all: use any instead of interface{} 2022-03-17 11:35:09 -07:00
ipnstate ipn/ipnstate: make status page more mobile-friendly 2022-04-12 12:33:31 -07:00
localapi cmd/tailscale: add id-token subcommand 2022-04-12 12:04:04 -07:00
policy ipn/policy: treat DNS service as interesting so it's not filtered out 2021-12-03 12:55:54 -08:00
store ipn/store: [TestNewStore] do not use an empty file 2022-02-28 18:26:24 -08:00
backend.go ipn: use key.NodePublic instead of tailcfg.NodeKey 2021-11-01 20:32:10 -07:00
doc.go Move Linux client & common packages into a public repo. 2020-02-09 09:32:57 -08:00
fake_test.go ipn{,/ipnlocal}, cmd/tailscale/cli: don't check pref reverts on initial up 2021-04-18 08:12:18 -07:00
handle.go ipn: another controlplane synonym 2021-07-13 08:22:10 -07:00
message_test.go all: use any instead of interface{} 2022-03-17 11:35:09 -07:00
message.go ipn: don't log IPN messages that may contain an authkey. 2021-09-22 20:32:49 -07:00
prefs_clone.go wgengine/netstack: add an SSH server experiment 2022-01-24 19:14:13 -08:00
prefs_test.go cmd/tailscale/cli, ipn: move exit node IP parsing and validation from cli into prefs. 2022-03-10 10:51:05 -07:00
prefs.go all: use any instead of interface{} 2022-03-17 11:35:09 -07:00
store.go ipn/store: add common package for instantiating ipn.StateStores 2022-02-28 13:23:33 -08:00