David Crawshaw b0e2f4a4e4 libtailscale: make tailscale_listener pollable
Use a socketpair(2) and sendmsg/recvmsg to pass a connection fd
from Go to C. This lets people write non-blocking C by polling on a
tailscale_listener for when they should tailscale_accept.

Signed-off-by: David Crawshaw <crawshaw@tailscale.com>
2023-03-18 15:04:28 -07:00
2023-03-18 15:04:28 -07:00
2023-03-18 15:04:28 -07:00

libtailscale

libtailscale is a C library that embeds Tailscale into a process.

Use this library to compile Tailscale into your program and get an IP address on a tailnet, entirely from userspace.

Building

With the latest version of Go, run:

go build -buildmode=c-archive

This will produce a libtailscale.a file. Link it into your binary, and use the tailscale.h header to reference it.

It is also possible to build a shared library using

go build -buildmode=c-shared

Bugs

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

License

BSD 3-Clause for this repository, see LICENSE.

S
Description
Tailscale C bindings used for drop-app
Readme BSD-3-Clause 204 KiB
Languages
Swift 50.9%
Go 15%
Ruby 9.1%
C 8.8%
Python 4.9%
Other 11.3%