This document summarizes the current implementation status of the Rust lazydns project against the upstream mosdns feature list (see upstream-features.md). It lists implemented features, partial implementations, and known gaps. Paths reference current source files where applicable.
reverse_lookup, ipset, and nftset.src/dns/* (message, wire, record, rdata, types).RecordType definitions (src/dns/types.rs).Status: IMPLEMENTED (core parsing and record support).
src/server/udp.rs, src/server/tcp.rs).src/server/dot.rs, src/server/tls.rs).src/server/doh.rs).src/server/doq.rs).tokio-based servers (src/server/*).Status: PARTIAL — UDP/TCP/DoH/DoT/DoQ present, not all features.
src/plugin/*, src/plugins/mod.rs).src/plugin/context.rs, src/plugins/advanced.rs, src/plugin/builder.rs).forward: Implemented (src/plugins/forward.rs) — supports multiple upstreams and concurrent queries. Transport feature parity (DoH/DoT/DoQ upstream) is partial on transport side.cache: Implemented (src/plugins/cache.rs). - TODO: lazy_cache_ttlhosts: Implemented (src/plugins/hosts.rs). Parser supports both ip-first and hostname-first lines, multiple IPs per line, and mixed ordering across files; unit tests verify A/AAAA behavior and hostname-first parsing.domain_set / geosite: Implemented (src/plugins/domain_matcher.rs, src/plugins/geosite.rs).ip_set / IP matching: Implemented (src/plugins/ip_matcher.rs, src/plugins/data_provider.rs).geoip: Implemented (src/plugins/geoip.rs) — GeoIP integration present; check for data loader details.sequence, parallel, if, goto, return, drop_resp: Implemented (src/plugins/advanced.rs, src/plugins/control_flow.rs).ttl: Implemented (src/plugins/executable/ttl.rs).query_summary: Implemented (src/plugins/executable/query_summary.rs).reverse_lookup: Implemented with in-memory cache and save hook (src/plugins/executable/reverse_lookup.rs). Integration: PluginHandler calls save_ips_after after response population.arbitrary, black_hole, drop_resp: Implemented in src/plugins/executable/*.rs.ipset: Implemented (src/plugins/executable/ipset.rs). Behavior:
ipset binary via std::process::Command (guarded with cfg(target_os = "linux")).ipset_added) for tests/visibility.nftset: Implemented (src/plugins/executable/nftset.rs). Behavior mirrors ipset:
nft binary; otherwise records metadata (nftset_added_v4, nftset_added_v6).Status: IMPLEMENTED (CLI-based integration). Note: upstream native netlink integration is not used; a native implementation could be added later.
src/config/*) with PluginBuilder and PluginConfig parsing. Example configs included in examples/etc/config.yaml.ConfigReloader exists; verify runtime hot-reload semantics for production.Status: PARTIAL — YAML loading and validation implemented; hot-reload present as a reloader component.
tokio concurrency; memory pools and advanced tuning are incremental work (some pool utilities exist in project).src/server/monitoring.rs, src/metrics planned). Prometheus-style exposure may be partial.src/server/tls.rs.Status: PARTIAL — basic observability and TLS present; more integrations possible.
Dockerfile and docker-compose.yml in workspace root.src/main.rs (config path, working dir, log level, graceful shutdown via ctrl-c).Status: IMPLEMENTED (basic deployment support present).
cargo test).tests/.Status: IMPLEMENTED — good test coverage; integration tests added for key behaviors.
examples/etc/config.yaml to plugin behaviors.src/dns/* (types.rs, message.rs, record.rs, wire.rs)src/server/* (udp.rs, tcp.rs, doh.rs, dot.rs)src/plugin/*, src/plugins/*src/plugins/executable/* (includes ipset.rs, nftset.rs, reverse_lookup.rs, ttl.rs, query_summary.rs)src/config/*, examples/etc/config.yaml