At 11:27 AM 12/17/2004, Stefan Puiu wrote:

>Correct me if I'm wrong, but as far as I can remember the use of libdns,
>libisc and friends (the BIND 9 libraries) was discouraged, since they
>provided APIs internal to BIND (and thus tied to the name server's
>internal design). I don't remember exactly where I got this information
>from - either the BIND 9 docs or the list archives, I researched this
>quite a while ago. But anyway, having looked a bit through the BIND 9
>code, I found the API harder to use (especially when it involved memory
>contexts or isc_tasks) than the libbind one. One of the options I've
>thought of was to use the BIND 9 functions to format DNS packets and then
>write our own code to handle the sending/receiving.


Correct. Those libraries were essentially designed for use by the various BIND
apps rather than as generally available API's. That doesn't mean that they
can't be used for other apps. You might want to consider taking the nsupdate
code from BIND 9.3.0 and modifying it to be callable from your app so that
you can pass it want you want. That way you would at least get the reliability
that you want and with none of the problems that libbind has on Windows.
If you really want to understand how to use the various internal libraries
I would suggest you look at dig, host, nslookup or nsupdate rather than
named itself which is much more complicated.


>Is there a plan for future versions of BIND to include a rewritten version
>of libbind (or some replacement)?


I have no idea, but it would make libbind much easier to maintain. It's
up to ISC to decide.

Danny