µDNS - an opinionated DNS library (currently only server)



I just pushed µDNS on GitHub https://github.com/roburio/udns, and wrote about it https://hannes.nqsb.io/Posts/DNS

This is a DNS server library which includes authentication (TSIG), dynamic updates (NSUPDATE), and notifications (DNSNOTIFY). I use it since several weeks in production as MirageOS unikernel (both primary and secondary). It interoperates fine with ISC bind. By careful design, the authentication data (shared symmetric secret keys) is part of the DNS trie, and thus dynamically updatable – furthermore, this allows for a nearly zero-configuration unikernel (the only required boot parameter is the root key to initiate updates!). See the examples in the repository (hidden under mirage/examples) for details.

The main data structure is a Map, which key are resource record types, and its values are collections of resource records. My implementation uses GADT for tighter types! :slight_smile:


I am incredibly excited to see this release (it is tempered slightly by GitHub being down atm). First step will be switching anil.recoil.org over, and then ocamllabs.io, and then hopefully ocaml.org :slight_smile:


That’s great, thanks Hannes! Could you clarify the license of your code as well? Currently as there is no license, this means that nobody can use, modify or share your software. I am sure that it is not what you’ve intended :wink:


@avsm there’s always the development repository at git://git.robur.io/udns.git (of course also available via https) :slight_smile:

@samoht oh, I missed out on a LICENSE.md, will fix this now – hope https://github.com/roburio/udns/blob/master/LICENSE.md (BSD 2 clause) suits you well