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

**URL:** https://discuss.ocaml.org/t/dns-an-opinionated-dns-library-currently-only-server/1418
**Category:** Community
**Tags:** mirageos, announce
**Created:** [January 11, 2018, 3:08pm UTC](https://discuss.ocaml.org/t/dns-an-opinionated-dns-library-currently-only-server/1418 "2018-01-11T15:08:21Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![hannes](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/hannes/32/2302_2.png) [@hannes](https://discuss.ocaml.org/u/hannes)
#### Post date: [January 11, 2018, 3:08pm UTC](https://discuss.ocaml.org/t/dns-an-opinionated-dns-library-currently-only-server/1418/1 "2018-01-11T15:08:21Z")

</div>

I just pushed µDNS on GitHub [GitHub - robur-coop/udns: [deprecated, developmeht moved to https://github.com/mirage/ocaml-dns] µDNS - an opinionated Domain Name System (DNS) library](https://github.com/roburio/udns), and wrote about it [My 2018 contains robur and starts with re-engineering DNS](https://hannes.robur.coop/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! 🙂

---

<div class="post-metadata">

### Author: ![avsm](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/avsm/32/6_2.png) [@avsm](https://discuss.ocaml.org/u/avsm)
#### Post date: [January 11, 2018, 3:40pm UTC](https://discuss.ocaml.org/t/dns-an-opinionated-dns-library-currently-only-server/1418/2 "2018-01-11T15:40:15Z")

</div>

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](http://anil.recoil.org) over, and then [ocamllabs.io](http://ocamllabs.io), and then hopefully [ocaml.org](http://ocaml.org) 🙂

---

<div class="post-metadata">

### Author: ![samoht](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/samoht/32/81_2.png) [@samoht](https://discuss.ocaml.org/u/samoht)
#### Post date: [January 11, 2018, 4:08pm UTC](https://discuss.ocaml.org/t/dns-an-opinionated-dns-library-currently-only-server/1418/3 "2018-01-11T16:08:54Z")

</div>

That’s great, thanks Hannes! Could you clarify the license of your code as well? Currently as there is no license, this [means](https://choosealicense.com/no-permission/) that nobody can use, modify or share your software. I am sure that it is not what you’ve intended 😉

---

<div class="post-metadata">

### Author: ![hannes](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/hannes/32/2302_2.png) [@hannes](https://discuss.ocaml.org/u/hannes)
#### Post date: [January 11, 2018, 5:12pm UTC](https://discuss.ocaml.org/t/dns-an-opinionated-dns-library-currently-only-server/1418/4 "2018-01-11T17:12:10Z")

</div>

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

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