About ODNS and ring


ODNS is a DNS library written in Objective Caml, with an API only in Objective Caml for now (soon probably a C API as well).


GPL version 2


The original authors (2002) are Guillaume Valadon and Emmanuel Letellier.

Any version since then (2010) has been improved from this original version by Jehan.
Jehan is the current maintainer as well.


While I (Jehan) was searching for a DNS library in Objective Caml in 2010, I found many start of projects, but nothing really usable (I don’t say there isn’t any, but I didn’t find it if there is). I needed to be able to lookup for SRV records in particular in a project.

Then I found an email, dating from 2002 (but the web has a good memory), from Guillaume on the OcamlNet mailing list. He was proposing to include ODNS but it has apparently never be done, the question died, and the story ended it… or did it? Because when I found the archived email in 2010, I tried the code. It was small, functional, though with many bugs, but looked still clean enough to be understood, fixed and improved (there still was missing SRV but as the code was clean, it looked easy to add, and in the end, it indeed has been).

After asking Guillaume and Manu, they accepted to release part of the library under GPL v2. For this I thank them a lot as it got me started much more easily as this base, though far from bug-free, was still nicely done.

The original version from Guillaume and Manu is available (as is) in ODN’s source code repository (SVN), tagged as version 0.1.


It has been primarily developed on and for GNU/Linux operating systems. It is known to work on systems such as Mandriva, Ubuntu and Gentoo.
I don’t know non GNU/Linux OS. I think it should work on Unix and Unix-like platforms, and anyway that should not be difficult to port (if not already working) on any platform which has an OCaml compiler, though I don’t plan to do it for now.


ring is a command-line tool to lookup DNS resource records, similar to “host” or “dig” from the bind project and which are typical default tools on most GNU/Linux distributions.

It has been meant originally as a proof of concept of a tool using ODNS, but should work pretty well as a decent daily-use DNS lookup tool on its own.

Licensing, authorship and platforms are similar to those for ODNS.