# go-dns Go library for dynamic DNS updates (RFC 2136 / nsupdate-style). **Canonical spec:** [docs/project-specification.md](./docs/project-specification.md) — follow it for design and implementation. ## Stack - **Language:** Go (see workspace `go.work` for version) - **Module:** `gitea.neitzel.de/konrad/go-dns` - **Package:** `godns` (module root) - **Type:** Importable Go library (not a standalone service) ## Design (summary) - Target **BIND** and RFC 2136–compatible authoritative nameservers - **Dynamic update** (RFC 2136) and **full zone transfer** (AXFR) over DNS - **TSIG** authentication with caller-supplied keys (no key generation in library) - Typed **RR builders** per record type (not generic rdata strings) - Domain names: **ASCII only** in v1 - UPDATE: **automatic TCP fallback** on UDP truncation - Typed **zone data structures** (`Record`, `Zone`, etc.) for transfer/update results - BIND guide: [docs/bind-tsig-configuration.md](./docs/bind-tsig-configuration.md) - Project docs override workspace defaults for this module ## Tests - Unit: `go test ./...` - Integration: `go test -tags=integration ./...` — **BIND testcontainer** (Docker required) ## Work tracking Local markdown issues: [../.scratch/](../.scratch/) — see [docs/agents/issue-tracker.md](../docs/agents/issue-tracker.md).