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/ipn/ipnlocal
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>
2 years ago
..
dnsconfig_test.go ipnlocal, net/{dns,tsaddr,tstun}, wgengine: support MagicDNS on IPv6 2 years ago
local.go ipn/ipnlocal: make peerIPs return a sorted slice 2 years ago
local_test.go ipn/ipnlocal: make peerIPs return a sorted slice 2 years ago
loglines_test.go ipn/store: add common package for instantiating ipn.StateStores 2 years ago
peerapi.go all: use any instead of interface{} 2 years ago
peerapi_h2c.go ipn/ipnlocal: add HTTP/2 h2c server support to peerapi on non-mobile platforms 3 years ago
peerapi_macios_ext.go net/tsdial: move macOS/iOS peerapi sockopt logic from LocalBackend 3 years ago
peerapi_test.go ipn/ipnlocal: run peerapi even if Taildrop storage not configured 3 years ago
ssh.go tempfork: temporarily fork gliderlabs/ssh and x/crypto/ssh 2 years ago
ssh_stub.go ssh: make it build on darwin 2 years ago
ssh_test.go ipn/ipnlocal: generate tailscaled-owned SSH keys as needed 2 years ago
state_test.go ipn/ipnlocal: do not process old status messages received out of order 2 years ago