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/wgengine/wgcfg
Josh Bleecher Snyder b3ceca1dd7 wgengine/...: split into multiple receive functions
Upstream wireguard-go has changed its receive model.
NewDevice now accepts a conn.Bind interface.

The conn.Bind is stateless; magicsock.Conns are stateful.
To work around this, we add a connBind type that supports
cheap teardown and bring-up, backed by a Conn.

The new conn.Bind allows us to specify a set of receive functions,
rather than having to shoehorn everything into ReceiveIPv4 and ReceiveIPv6.
This lets us plumbing DERP messages directly into wireguard-go,
instead of having to mux them via ReceiveIPv4.

One consequence of the new conn.Bind layer is that
closing the wireguard-go device is now indistinguishable
from the routine bring-up and tear-down normally experienced
by a conn.Bind. We thus have to explicitly close the magicsock.Conn
when the close the wireguard-go device.

One downside of this change is that we are reliant on wireguard-go
to call receiveDERP to process DERP messages. This is fine for now,
but is perhaps something we should fix in the future.

Signed-off-by: Josh Bleecher Snyder <josh@tailscale.com>
4 years ago
..
nmcfg wgengine/wgcfg/nmcfg: reduce some logging when a /0 route skipped 4 years ago
config.go wgengine/wgcfg/nmcfg: split control/controlclient/netmap.go into own package 4 years ago
device.go all: move wgcfg from wireguard-go 4 years ago
device_test.go wgengine/...: split into multiple receive functions 4 years ago
key.go all: move wgcfg from wireguard-go 4 years ago
key_test.go all: move wgcfg from wireguard-go 4 years ago
parser.go wgengine/wgcfg: fix validateEndpoints of empty string 4 years ago
parser_test.go wgengine/wgcfg: fix validateEndpoints of empty string 4 years ago
writer.go all: move wgcfg from wireguard-go 4 years ago