Gunnar

nordisk/tunnr-tailscale

THIRD-PARTY.md

# Third-party material

Every line in this repo that came from someone else is listed here, with the upstream
file and the commit it was read at. **An empty section is a claim**: it says we looked
and took nothing, and it is as much a statement as a filled one.

The rule that makes this file worth keeping: a port is added here **in the same commit
that adds the ported code**, never afterwards. A retroactive attribution sweep cannot
be verified by anyone, including us.

## tunnr-tailscale

**`tailscale/tailscale-rs` — Tailscale Inc.'s official Rust client.**

* **Licence**: BSD-3-Clause. `LICENSE`, read at commit
  `ce8f3d91c56d8bc7739ced07dd6fbe5d98822a10` (2026-09-03, "Update to rust 1.98.1"),
  "Copyright (c) 2026 Tailscale Inc & contributors."
* **What we take, and how**: a **dependency, not a port.** Every crate in that
  workspace publishes to crates.io under the same licence, so the wire model is
  imported rather than transcribed:
  * `ts_control_serde 0.5.0` — the `tailcfg` wire model (`MapResponse`, `Node`,
    `DerpMap`, `RegisterRequest`/`Response`). Used by
    `crates/tunnr-tailscale/src/netmap.rs`.
  * transitively, `ts_keys`, `ts_capabilityversion`, `ts_hexdump`,
    `ts_nodecapability`, `ts_peercapability`, `ts_packetfilter_serde`.

  Depending on it rather than reimplementing it is deliberate: their coordination
  protocol is a **version-coupled contract documented mostly by that source**, so a
  hand-written parser would be a second definition of it that drifts silently.
* **What we deliberately do NOT take**, measured 2026-09-05 with `cargo tree -e
  normal` over a resolved crates.io closure:
  * `ts_transport` (and so `ts_derp`, `ts_control`) — depends unconditionally on
    **`dyn-eq 0.1.3`, MPL-2.0**. No feature gate removes it. This workspace takes no
    copyleft of any strength, and `crates/tunnr-licence` enforces that on every
    build.
  * `ts_tls_util` (and so `ts_control`, `ts_derp`, `ts_http_util`) — hardcodes
    `tokio-rustls { default-features = false, features = ["aws-lc-rs"] }`, dragging
    **`aws-lc-sys`** (a BoringSSL fork built with cmake + cc) in. Not selectable.
* **Vendored test data**, BSD-3-Clause, same commit:
  * `crates/tunnr-tailscale/tests/fixtures/map_response.json` — verbatim from
    `ts_control_serde/tests/data/map_response.json`
  * `crates/tunnr-tailscale/tests/fixtures/node.json` — verbatim from
    `ts_control_serde/tests/data/node.json`

  These are real documents recorded from Tailscale's coordination server. We hold no
  auth key for any tailnet, so they are the only captured bytes this lane could
  assert against, and every test that uses them is named `captured_*` so it never
  reads as a live proof.

BSD-3-Clause requires the copyright notice and the disclaimer be retained. Nothing in
this repository is a *copy* of their source — the crates are linked from crates.io and
the two JSON files are data — so the notice lives here and in the module docs rather
than in a file header we would have had to invent.

**No endorsement is implied and none exists.** "Tailscale" is Tailscale Inc.'s
trademark; this crate is *compatible with* their protocol and is not a Tailscale
client.