# LibDNS API

NLnet Labs

              Kruislaan 419
              Amsterdam
              1098 VA
              The Netherlands

            miek@nlnetlabs.nl
            http://www.nlnetlabs.nl

NLnet Labs

              Kruislaan 419
              Amsterdam
              1098 VA
              The Netherlands

            jelte@nlnetlabs.nl
            http://www.nlnetlabs.nl

NLnet Labs

              Kruislaan 419
              Amsterdam
              1098 VA
              The Netherlands

            erik@nlnetlabs.nl
            http://www.nlnetlabs.nl

DNS
Elite
Hacking

A small abstract will come here, TBD.

<middle>

# Introduction

LibDNS (or lDNS) is modelled after the Net::DNS perl library. It has been shown that Net::DNS can be used vefficiently for programming DNS aware applications. We want to bring the same level of efficiency to C programmers.
The lDNS API consist of two layers. The top-layer, this is what is actually exported to the application via the library. And the bottom-layer, this is what lDNS needs to compile and function.

# Differences With Other Libraries

Short intermezzo detailing differences with other libraries. Most important ones are the libc resolver interface (from BIND8) and the lwres_ interface from BIND9.

# Interfaces

At its lowest level lDNS is only dependent on libc. It uses a few networking systems calls; socket, bind, send/recv and friends.
Further more it is to be expected that lDNS will depend on OpenSSL for its cryptography.
As said, lDNS is modelled after Net::DNS, therefor its application API looks very much like the one used for Net::DNS. Some modification are made ofcourse, because not all functionality of Perl can be caught in C.
This API document was written by carefully looking at the documentation contained in the Net::DNS Perl module.