Sanders writes: > the alleged documentation for tinydns-data is atrocious too, it's ALL > done by example, no syntax definition, no overview.
In fact, http://cr.yp.to/djbdns/tinydns-data.html contains the syntax definition, a bunch of examples, and a link to a tutorial page. [ the tinydns data syntax is ``bizarre and broken'' because ] > the PTR record is automagically created when you create the A record In fact, you're perfectly free to create just an A record (+fqdn:ip), just a PTR record (^blah.arpa:fqdn), just an MX record (@fqdn::mx), just an NS record (&fqdn::ns), just an SOA record (Z...), etc. You can play with TTLs, serial numbers, and so on, in as much detail as with BIND. Or you can work with slightly higher-level concepts such as hosts (=fqdn:ip, creating A+PTR), mail exchangers (@fqdn:ip, creating MX+A), and name servers (.fqdn:ip, creating SOA+NS+A)---concepts that BIND doesn't support because they can involve more than one zone. > get this, it really takes the cake, either or both of the A & PTR > records are completely ignored unless there are appropriately > corresponding NS records somewhere in the file. In fact, the text you're talking about---``Remember to specify name servers for some suffix of fqdn; otherwise tinydns will not respond to queries about fqdn''---refers to a basic part of the DNS architecture. The equivalent BIND rule is that every record needs to be in a zone. > you can't find the A records for a given hostname just by searching > for the "=" lines, you also have to parse every other line in case an > A record is automagically defined elsewhere, e.g. in "&" or "." or "@" > lines. If you want a program to work with A records rather than higher-level concepts, you can use tinydns-get to do a particular address lookup, or you can use the following script to print out every address and name: #!/bin/sh sed 's/[ ]*$//' /service/tinydns/root/data | awk -F: ' function printx(type) { if (!match($3,/\./)) $3 = $3 "." type "." substr($1,2) sub(/^\./,"",$3) print $2,$3 } /^@/ { if ($2) printx("mx") } /^[\.&]/ { if ($2) printx("ns") } /^[=+]/ { if ($2) print $2,substr($1,2) } ' This is another example of how easy it is to parse the tinydns configuration syntax. Can you show me a script for BIND that reliably does the same thing? Parse named.conf to figure out the active zone files; parse the zone files; don't forget to deal with $ORIGIN and $INCLUDE and $GENERATE ... Of course, the above script can easily be modified to change a selected IP address, or to start your editor on the appropriate line in the data file, or to adjust TTLs, etc. ---D. J. Bernstein, Associate Professor, Department of Mathematics, Statistics, and Computer Science, University of Illinois at Chicago -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

