The goal of ldns is to simplify DNS programming in C. ldns supports all low-level DNS and DNSSEC operations. It also defines a higher level API which allows a programmer to for instance create or sign packets.

ldns allows developers to easily create RFC compliant software and build proof of concepts for various Internet Drafts. The project depends on OpenSSL for its cryptographic functions. It can be compiled without OpenSSL, but of course you'll lose the ability to perform any crypto functions.

Development Vision

In principle we only perform basic maintenance and bug fixes on ldns, and will only consider development of new functionality on ad-hoc basis. This could for example be for a research project or an IETF Hackathon. We do not strive for ldns to be a comprehensive library that supports every (emerging) standard.


ldns includes a DNS lookup utility named drill. It can perform DNS lookups and display the answers that are returned from the name server(s) that were queried. drill offers an alternative implementation to BIND's Domain Information Groper (dig) tool.

As drill has nothing in common with either NSD nor BIND, it ensures that debugging and testing is done using an independent code base.