Making dnscache handle client-side aliases ("CNAME" records) correctly by

There are several problems with the way that dnscache handles client-side
aliases, that become acutely apparent if one patches qmail to remove the
workaround for a BIND version 4 problem.

http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/djbdns-problems.html#dnscache-cname-handling

This patch modifies the behaviour of dnscache, to correct them, in the
following ways:

* dnscache will cache "CNAME" resource record sets (both empty and non-empty).

* dnscache will correctly ignore a cached "CNAME" resource record set that
  happens to be empty (which will result if an explicit "CNAME" query is made
  against a domain name that has no client-side aliases).

* dnscache will notice lame servers where the lame delegation is present at
  the end of a chain of client-side aliases. Any instances of tinydns that
  have not been patched to make them publish whole alias chains instead of
  just the first links will thus be logged as "lame".
  http://homepage.ntlworld.com/jonathan.deboynepollard/Softwares/djbdns/#tinydns-alias-chain-truncation

* dnscache will not issue redundant queries if it can follow an entire
  client-side alias chain to the end using the information that it already has
  in a response.

* dnscache will cache any in-bailiwick information that it receives from lame
  servers. Any in-bailiwick client-side alias information and delegation
  information that are received from an otherwise "lame" server will no longer
  be thrown away along with the bath-water.

http://homepage.ntlworld.com/jonathan.deboynepollard/Softwares/djbdns/dnscache-cname-handling.patch

Signed-off-by: Giam Teck Choon <giamteckchoon@gmail.com>
Fix warning: passing argument 2 of ‘uint32_unpack_big’ from incompatible pointer type

This patch fix the following:

./compile tinydns-data.c
tinydns-data.c: In function ‘main’:
tinydns-data.c:264: warning: passing argument 2 of ‘uint32_unpack_big’ from incompatible pointer type
uint32.h:9: note: expected ‘uint32 *’ but argument is of type ‘long unsigned int *’
tinydns-data.c:267: warning: passing argument 2 of ‘uint32_unpack_big’ from incompatible pointer type
uint32.h:9: note: expected ‘uint32 *’ but argument is of type ‘long unsigned int *’
tinydns-data.c:270: warning: passing argument 2 of ‘uint32_unpack_big’ from incompatible pointer type
uint32.h:9: note: expected ‘uint32 *’ but argument is of type ‘long unsigned int *’
tinydns-data.c:273: warning: passing argument 2 of ‘uint32_unpack_big’ from incompatible pointer type
uint32.h:9: note: expected ‘uint32 *’ but argument is of type ‘long unsigned int *’
tinydns-data.c:276: warning: passing argument 2 of ‘uint32_unpack_big’ from incompatible pointer type
uint32.h:9: note: expected ‘uint32 *’ but argument is of type ‘long unsigned int *’

More information can be read at:

http://blog.gmane.org/gmane.network.djbdns/month=20050201/page=2

Signed-off-by: Giam Teck Choon <giamteckchoon@gmail.com>