OCaml implementation of the DNS protocol
OCaml Other
Latest commit 8c7d9ff Jan 20, 2017 @yomimono yomimono committed on GitHub Merge pull request #125 from yomimono/update-changes
update CHANGES for 0.19.0
Failed to load latest commit information.
async async: use released version of bind interface (no ~f) Oct 1, 2016
examples Small fix to update example to the new API Oct 10, 2015
lib_test remove non-explanatory comments in mdns_resolver_mirage Jan 7, 2017
lwt Replace hashcons with hashcons package Mar 11, 2016
mirage build against disaggregated mirage-types Jan 5, 2017
.merlin Use Mirage_kv in the tests Dec 28, 2016
.travis.yml Test 4.03 and 4.03, don't try to test all the revdeps Jan 3, 2017
LICENSE LGPL code has been removed, license is now ISC Mar 11, 2016
Makefile.config [make] support .config Jul 17, 2012
mirage-dns.opam Merge branch 'master' into sync-opam Jan 3, 2017
myocamlbuild.ml move mirage-types.lwt to mirage-types-lwt Dec 13, 2016


Build Status

This is a pure OCaml implementation of the DNS protocol. It is intended to be a reasonably high-performance implementation, but clarity is preferred rather than low-level performance hacks.

To build it, please use the OPAM package manager (1.2+):

opam pin add dns .

This will install the dependencies needed and give you a working development version of the library.


  • lib/ contains the core DNS protocol, which is packed into the Dns module.
  • lib_test/ contains unit tests and sample uses of the library. In particular, time_server is a simple dynamic responder.

Areas that need work:

  • We need an Lwt-based client iterative resolver Patches for this are highly welcome!
  • EDNS0 extensions
  • DNSSEC extensions (using nocrypto)
  • TC bit and TCP fallback
  • mDNS resolver