To Do list for Net::DNS
=======================

* Work on the dynamic update code.  Some things remaining to do:

  - Do sanity checking on user-created RR objects.  Update the BUGS
    section in RR.pm when this is complete.

  - Add the rr_rdata method to LOC.pm.

  - Add RR-creation methods that are named after the update semantics
    (yxrrset, nxrrset, yxdomain, nxdomain; add, delete) so the
    programmer doesn't have to remember them.  Change the example
    in the Net::DNS::Update manual page when this is done.

  - Add an "update" method to the resolver class to send the update
    packet to the zone's authoritative nameservers (see also RFC
    2136, Section 4).

  - Do case-insensitive comparisons in Net::DNS::Packet->dn_comp.

* Work on dns.cgi (not included with the distribution) and add it to
  the demo directory.  Some things remaining to do:

  - Add a way to change resolver settings.  Edit do_axfr and remove
    the query for the zone's nameservers when this is finished.

  - Add support for dynamic updates.

* Improve the error handling and reporting.  Some things to do:

  - Check for invalid RR types or classes.

  - Handle "host is down" error in Resolver.pm.

  - Set a more descriptive error if a zone transfer fails, especially
    if the nameserver isn't authoritative (current code returns NOERROR
    if the nameserver answered but wasn't authoritative).

* Restructure some of the code, particularly Net::DNS::Resolver->send.

* Implement TCP queries.  Things to change once this is ready:

  - Change the code checking for packet size in Net::DNS::Resolver->send.

  - Use TCP by default if $res->usevc is true.

  - Retry truncated UDP responses using TCP if $res->igntc is false.

* Add more RR types.  Currently unimplemented are:

    KEY		RFC 2065
    NXT		RFC 2065
    SIG		RFC 2065
    ATMA	???
    MD		RFC 1035 (obsolete)
    MF		RFC 1035 (obsolete)
    WKS		RFC 1035
    NSAP_PTR	RFC 1348 (deprecated)
    GPOS	RFC 1712 (withdrawn)

* Fix the TXT RR to handle more than 1 string in the RDATA section
  (RFC 1035, Section 3.3.14).

* Check the EID, NIMLOC, and NULL RR handling.

* Add test cases for NULL, EID, and NIMLOC to private zone data.
  NULL isn't allowed in master files per RFC 1035, Section 3.3.10;
  BIND 8.1-REL doesn't appear to implement EID or NIMLOC (perhaps
  via dynamic update?).

* Accept options in resolver config files.

* Write more demo scripts.

* Check code for conformance to the guidelines listed in The Perl 5 Module
  List.  Check style & efficiency according to the perlstyle manpage and
  the Camel.

* Consider providing an .xs file for those who wish to link against
  libresolv or libbind instead of using the entirely-Perl resolver.

* Consider rewriting the packet-parsing code in C for increased speed,
  or possibly going back to using Dave Shield's resparse library.

---
$Id: TODO,v 1.10 1997/06/13 03:47:37 mfuhr Exp $
