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.
 
 
 
 
 
 
Go to file
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
.github
atomicfile
client/tailscale cmd/tailscale, ipn/localapi: add "tailscale bugreport" subcommand 4 years ago
cmd wgengine/...: split into multiple receive functions 4 years ago
control/controlclient
derp
disco
health
internal net/dns: rename Config to OSConfig. 4 years ago
ipn ipn/ipnlocal: lazily connect to control, lazily generate machine key 4 years ago
log
logpolicy
logtail
metrics
net net/dns: disable NetworkManager and resolved configurators temporarily. 4 years ago
paths
portlist
safesocket
scripts
smallzstd
syncs
tailcfg net/dns: remove PerDomain from Config. 4 years ago
tempfork
tsconst
tstest
tstime
tsweb
types types/preftype: don't use iota for consts persisted to disk 4 years ago
util net/dns/resolver: teach the forwarder to do per-domain routing. 4 years ago
version version/distro: look for absolute synology path 4 years ago
wgengine wgengine/...: split into multiple receive functions 4 years ago
.gitattributes
.gitignore
AUTHORS
CODE_OF_CONDUCT.md
Dockerfile
LICENSE
Makefile
PATENTS
README.md
SECURITY.md
VERSION.txt
api.md api.md: add TOC 4 years ago
build_dist.sh
build_docker.sh
go.mod wgengine/...: split into multiple receive functions 4 years ago
go.sum wgengine/...: split into multiple receive functions 4 years ago
shell.nix

README.md

Tailscale

https://tailscale.com

Private WireGuard® networks made easy

Overview

This repository contains all the open source Tailscale client code and the tailscaled daemon and tailscale CLI tool. The tailscaled daemon runs primarily on Linux; it also works to varying degrees on FreeBSD, OpenBSD, Darwin, and Windows.

The Android app is at https://github.com/tailscale/tailscale-android

Using

We serve packages for a variety of distros at https://pkgs.tailscale.com .

Other clients

The macOS, iOS, and Windows clients use the code in this repository but additionally include small GUI wrappers that are not open source.

Building

go install tailscale.com/cmd/tailscale{,d}

If you're packaging Tailscale for distribution, use build_dist.sh instead, to burn commit IDs and version info into the binaries:

./build_dist.sh tailscale.com/cmd/tailscale
./build_dist.sh tailscale.com/cmd/tailscaled

If your distro has conventions that preclude the use of build_dist.sh, please do the equivalent of what it does in your distro's way, so that bug reports contain useful version information.

We only guarantee to support the latest Go release and any Go beta or release candidate builds (currently Go 1.16) in module mode. It might work in earlier Go versions or in GOPATH mode, but we're making no effort to keep those working.

Bugs

Please file any issues about this code or the hosted service on the issue tracker.

Contributing

PRs welcome! But please file bugs. Commit messages should reference bugs.

We require Developer Certificate of Origin Signed-off-by lines in commits.

About Us

Tailscale is primarily developed by the people at https://github.com/orgs/tailscale/people. For other contributors, see:

WireGuard is a registered trademark of Jason A. Donenfeld.