How dnsimple/erldns works
ErlDNS is an authoritative DNS server. Its documented main workflow accepts DNS requests through listeners, processes them in the query pipeline, and uses loaded, cached zones to serve responses. The repository also provides runtime zone administration and telemetry instrumentation. The README documents subsystem responsibilities, but no source excerpts were provided, so internal call wiring beyond those documented relationships is omitted.
Main entry points: erldns_listeners.erl DNS listeners · erldns_admin.erl Admin API · erldns_pipeline.erl Query pipeline · erldns_zone_loader.erl Zone loader
Components 21
DNS listeners
- DNS listeners
src/listeners/erldns_listeners.erl - UDP transport
src/listeners/udp/erldns_proto_udp.erl - TCP transport
src/listeners/tcp/erldns_proto_tcp.erl
Query processing
- Query pipeline
src/pipes/erldns_pipeline.erl - DNS resolver
src/pipes/erldns_resolver.erl - Recursive resolver
src/pipes/erldns_resolver_recursive.erl - Question handling
src/pipes/erldns_questions.erl - DNSSEC
src/pipes/erldns_dnssec.erl - EDNS processing
src/erldns_edns.erl - Query throttling
src/pipes/erldns_query_throttle.erl - Packet cache
src/pipes/erldns_packet_cache.erl
Zone management
- Zone loader
src/zones/load/erldns_zone_loader.erl - Zone JSON files
priv/zones - Zone service
src/zones/erldns_zones.erl - Zone cache
src/zones/erldns_zone_cache.erl
Administration
- Admin API
src/admin/erldns_admin.erl - Zone endpoints
src/admin/erldns_admin_zone_handler.erl - Record endpoints
src/admin/erldns_admin_zone_records_handler.erl
Other components
- DNS client
- Admin API client
- Telemetry
Connections 11
- DNS client → DNS listeners: sends DNS queries
- DNS listeners → UDP transport: accepts UDP
- DNS listeners → TCP transport: accepts TCP
- DNS listeners → Query pipeline: dispatches queries
- Zone JSON files → Zone loader: provides zone data
- Zone loader → Zone service: loads zones
- Admin API client → Admin API: sends HTTP requests
- Admin API → Zone endpoints: routes requests
- Admin API → Record endpoints: routes requests
- Query pipeline → Telemetry: emits events
- DNS listeners → Telemetry: emits events