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

* Work on Resolver.pm:

  - Show more info about the query when $res->debug(1).

  - Work on a way to use the same socket for background queries.

  - Document $res->errorstring messages.

  - Work on efficiency of IO::Socket handling.

  - Implement AAONLY queries.  Here's a code fragment to set the
    nameserver list to the hosts returned in the authority section:

	  $res->nameservers(map  { $_->nsdname }
	                    grep { $_->type eq "NS" }
		            $ans->authority);
  - IPv6 Support (?)		       

* Get rid of .* in AAAA.pm; write more tests for AAAA.pm.

* Allow Net::DNS::RR::LOC->latlon to set the lat/lon.

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

  - Append the default zone in update packets if the name doesn't
    contain a dot.  Does this break people's code?

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

  - Allow yxrrset & friends to take an RR object as an argument.

  - Do more sanity checking on yxrrset & friends.

  - 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.

* Consider getting rid of the "; no data" string from $rr->rdatastr.  Add
  it possibly in $rr->string.

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

  - Make sure empty RDATA sections don't cause the program to print
    the obnoxious "no such method" warning.

  - 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).

  - Consider documenting the use of "eval" to avoid a fatal error
    in certain places.  Idea by Dirk Herr-Hoyman.

* Restructure some of the code.  Some things to look at:

  - Net::DNS::Resolver->send (needs to be broken into smaller pieces).

* Add more RR types.  Currently unimplemented are:

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

* 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?).

* Write some front-end methods to do CNAME translations automagically.

* Work on demo scripts:

  - Add a copyright notice to the demo scripts.

  - Work on demo/axfr:

    * Add a print statement to tell whether the zone info comes from
      a file or a zone transfer.

  - Work on demo/srv (not included with the distribution).  Remaining
    to do:

    * Documentation.  Don't forget to add a reference to it in the other
      demo scripts.

    * Consider adding "sub srv" to DNS.pm.

    * Add to the Changes file.

  - Work on nsupdate.pl (not included with the distribution) and add it
    to the demo directory.  Remaining to do:

    * Write documentation.

    * Make it more robust.

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

    * Check for HTTP_USER_AGENT in zone transfers.

    * 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.

* Do more study of resolver behavior as recommended in RFCs 1035, 1123,
  and 2136.

* Add some text- and html-specific sections to the manual pages.

* 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.9 2003/06/21 07:47:38 ctriv Exp $
