1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180
  
     | 
    
      To Do list for Net::DNS
=======================
* Work on Resolver.pm:
  - Add a method to set the query source port.
  - Add an optional argument to Net::DNS::Resolver->new to read a
    specific configuration file instead of using the default files.
  - Accept options in resolver config files.
  - Show more info about the query when $res->debug(1).
  - Work on a way to use the same socket for background queries.
  - Write $res->axfr_start, $res->axfr_next.
  - 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);
* Work on the manual pages:
  - Review the examples in the Net::DNS manual page.
  - Make "->" non-breaking.
  - Reorganize to put the most frequently-used methods first.  Suggested
    by John Line.
  - Add manual pages for individual RR types to the homepage.
* Consider using function prototypes.
* 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.
  - Add the "new_from_string" method to the following RR types:
      EID
      NIMLOC
      NSAP
      NULL
  - 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:
  - Get rid of Carp::confess as many places as possible.
  - 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).
  - Net::DNS::Packet->dn_expand (get rid of the recursive call).
  - Passing of references between Net::DNS::Packet and Net::DNS::RR.
* 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)
    KEY		RFC 2065
    NXT		RFC 2065
    SIG		RFC 2065
    ATMA	???
    TSIG	draft-ietf-dnsind-tsig-xx.txt
* 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?).
* 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.
  - Consider writing a simple nameserver with Net::DNS.
* 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.12 1997/10/02 05:35:14 mfuhr Exp $
 
     |