coredns/coredns
Systems
The "systems" lens covers the parts of CoreDNS that are not plugins — the bootstrap, the DNS server type that hosts plugins, the request abstraction every plugin uses, and the shared utility packages under plugin/pkg/.
If a plugin is the what of CoreDNS, the systems are the how.
Map
graph TD
A[coredns.go] -->|main| B[coremain]
B -->|caddy.Start| C[core/dnsserver]
C -->|builds| D[Server / ServerTLS / ServerHTTPS / ServerHTTPS3 / ServerQUIC / ServergRPC]
D -->|ServeDNS| E[plugin chain]
E --> F[request.Request]
E --> G[plugin/pkg/* helpers]
H[plugin.cfg] -->|generates| C
H -->|generates| I[core/plugin/zplugin.go]
I -->|blank-imports| Plugins[plugin/*]
Plugins -->|register| CPages in this section
| Page | What it covers |
|---|---|
| Caddy bootstrap | coredns.go, coremain.Run, flag parsing, version metadata, signal handling |
| DNS server | core/dnsserver/: server type registration, Corefile parsing, Config, plugin chain compilation, request dispatch |
| Plugin system | plugin/plugin.go: Handler/Plugin interfaces, NextOrFailure, response writer wrapping, registration |
| Transports | UDP/TCP, DoT (tls://), DoH (https://), DoH3 (https3://), DoQ (quic://), gRPC (grpc://); listeners, TLS, PROXY protocol, multi-socket |
| Request and response | The request.Request abstraction, ScrubWriter, EDNS0 / DO bit handling, response classification |
| Shared packages | plugin/pkg/: cache, parse, dnsutil, log, reuseport, response, transport, replacer, etc. |
| Build and code generation | plugin.cfg, directives_generate.go, owners_generate.go, generated zplugin.go and zdirectives.go |
How to read this section
If you are adding a feature, the entry points are:
- A new plugin → start with Plugin system, then look at an existing plugin in Plugins overview.
- A new transport → Transports and DNS server.
- A change to how Corefiles parse → DNS server.
- A new shared utility used across plugins → Shared packages.
- A change to the bootstrap or version reporting → Caddy bootstrap.
Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.