OCaml implementation of the DNS protocol
OCaml Other
Latest commit ab7e8d7 Nov 20, 2016 @yomimono yomimono committed on GitHub Merge pull request #108 from yomimono/higherlevel-error
compatibility with upstream UDP API changes (result types)
Permalink
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 remove runtime dependency on ppx from META file Oct 2, 2016
lib_test add an exception (yuck) when UDPV4.write fails in Mirage resolvers; f… Nov 18, 2016
lwt Replace hashcons with hashcons package Mar 11, 2016
mirage add an exception (yuck) when UDPV4.write fails in Mirage resolvers; f… Nov 18, 2016
.gitignore Clean-up datagram socket fds after use; prevents EMFILE; fixes #15 Jul 22, 2014
.merlin fix async backend compilation Sep 24, 2016
.travis-ci-post.sh modernise travis scripts Mar 29, 2015
.travis.yml refresh travis test matrix to latest distros Oct 1, 2016
CHANGES remove runtime dependency on ppx from META file Oct 2, 2016
LICENSE LGPL code has been removed, license is now ISC Mar 11, 2016
Makefile Run tests in sequential mode to work around OUnit issue Mar 3, 2015
Makefile.config [make] support .config Jul 17, 2012
README.md Bump to 0.15.1, update README, update CHANGES Jul 2, 2015
TODO.md note the TODO for the pattern match inexhaustiveness Sep 29, 2012
_oasis remove runtime dependency on ppx from META file Oct 2, 2016
_tags Merge branch 'mirage-3.0' of git://github.com/mirage/ocaml-dns into t… Oct 1, 2016
mirage-dns.opam Add mirage-dns.opam Jul 3, 2015
myocamlbuild.ml oasis regen Oct 1, 2016
opam Merge branch 'mirage-3.0' of git://github.com/mirage/ocaml-dns into t… Oct 1, 2016
setup.ml remove runtime dependency on ppx from META file Oct 2, 2016

README.md

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.

Packages:

  • 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