The goal of ldns is to simplify DNS programming, it supports recent RFCs like the DNSSEC documents, and allows developers to easily create software conforming to current RFCs, and experimental software for current Internet Drafts. A secondary benefit of using ldns is speed; ldns is written in C it should be a lot faster than Perl.
The first major tool to use ldns is Drill, from which part of the library was derived. From version 1.0.0 on, drill is be included in the ldns release and will not be distributed separately anymore. Its version number will follow that of ldns. The library also includes some other examples and tools to show how it can be used.
ldns depends on OpenSSL for its crypto functions. It can be compiled without OpenSSL, but of course you'll lose the ability to perform any cryptographic functions.
If you want to send us patches please use the code from subversion (trunk).
DownloadThe latest release is 1.6.16, dating Nov 13, 2012
Download (checksum sha1: 5b4fc6c5c3078cd061905c47178478cb1015c62a)
The changelog for this version can be found at http://www.nlnetlabs.nl/svn/ldns/tags/release-1.6.16/Changelog
CompilingAfter downloading, you can compile the library by doing:
./configure && (g)make
You need GNU make to compile it.
If you compile from the repository, you also need the gnu autotools (autoreconf and libtool).
Creating documentationThe (html) documentation is created with doxygen. The manual pages are created with a perl program. While sitting in the source directory a simple gmake doc should create everything.
Drillldns includes the Drill tool.
Drill is a tool ala dig from BIND. It was designed with DNSSEC in mind and should be a useful debugging/query tool for DNSSEC.
A lot of DNS debugging is done with dig, but as dig is made with the same libraries as BIND8/9 (the most used DNS server out there), what are you actually debugging/testing? Drill has nothing in common with either NSD nor BIND. During the development process we are actually uncovering obscure bugs in NSD and BIND (and in drill itself).
Example programsA few example programs are included in the source of ldns. They are not compiled by default. You need to explicitly build them with: cd examples && ./configure && (g)make
SupportWe have a mailing list where ldns related discussion are held. These discussions can range from implementation issues to generic DNS/DNSSEC issues.
You can find the mailing list information page here.