Nemo DJBDNS - Changes

Changes of the second generation of the DNS package.

This software is not compatible with…

  • tinydns-data input data files in use by Nemo DJBDNS prior to version 4.0 or any version of DJBDNS.
  • CDBs created by Nemo CBD prior to version 3.0 or any version of DJB CDBs.
  • dnscache server directory files in use by Nemo DJBDNS prior to version 3.0 or any version of DJBDNS.
  • dnscache6 server directory files in use by Nemo DJBDNS prior to version 3.0 or any version of DJBDNS.

v4.2 - UNRELEASED

This release contains optimisations and fixes.

Version Notes
• New hashdns - email-listing DNS server (IPv4 connection).
• New hashdns6 - email-address-listing DNS server (IPv6 connection).
• New hashcheck - query email-address-listing DNS server (IPv4 connection).
• New hashcheck6 - query email-address-listing DNS server (IPv6 connection).
• Fixed Quoting of period character in tinydns-edit(1).
• Fixed dbldns6-conf Makefile creation.
• Fixed ioquery_havepacket() (IPv6) sub-routine return value - properly process empty RR set.
• Fixed tinydns-data - MX resource record validation.
• Fixed dns4_mxip4() - correctly handle out of memory errors in 2 cases.
• Fixed dns4_mxip6() - correctly handle out of memory errors in 2 cases.
• Fixed dns6_mxip4() - correctly handle out of memory errors in 2 cases.
• Fixed dns6_mxip6() - correctly handle out of memory errors in 2 cases.
• Fixed tinydns-data - NSEC RR generation.
• Fixed axfr-get - correctly generate tinydns-data data.
• Changed response_* data - now fully abstracted, accessor routines written and implemented.
• Changed tinydns-data - allow more conventional RR names.
• Changed dbldns-data - report error when duplicate keys exist.
• Changed hashdns-data - report error when duplicate keys exist.
• Changed rbldns-data - report error when duplicate keys exist.
• Changed rbldns6-data - report error when duplicate keys exist.
• Changed dbldns*(8) - minor changes.
• Changed server*.c - split off common strings to separate module.
• Changed dns_mxip() - now handle NUll MX resource records convention (RFC 7505).
• Changed dns_mxip6() - now handle NUll MX resource records convention (RFC 7505).
• Changed dnsmxip - now handle NUll MX resource records convention (RFC 7505).
• Changed dnsmxip6 - now handle NUll MX resource records convention (RFC 7505).
• Changed Incorporate changes from Nemo DJB Library.
• Requires Nemo DJB Library v3.0 or later.
• Requires Nemo BufIO Library v3.0 or later.
• Requires Nemo CalDateTime Library v3.0 or later.
• Requires Nemo CDB Library v3.3 or later.
• Requires Nemo NaCL Library v2.0 or later.

v4.1.1 - February 5, 2019

This release contains optimisations and fixes.

Version Notes
• Changed Renamed WHITESPACE[] in whitespace.h to DNS_WHITESPACE[] - updated affected files.
• Changed Renamed WHITESPACE_LEN in whitespace.h to DNS_WHITESPACE_LEN - updated affected files.
• Changed dns_rcrw.c - implemented whitespace.h.
• Changed tinydns-edit.c - implemented whitespace.h.
• Changed tinydns-edit.c - improved syntax error reporting.
• Fixed Error reporting in tinydns-v1data2data.
Reported by Thomas Krause.
• Fixed Error reporting in tinydns-v3data2data.
• Fixed Error reporting in dnscache-data and dnscache6-data.
• Fixed Error reporting in tinydns-data and tinydns-edit.
• Fixed Error reporting in wilddns-data.
• Fixed response_opt_start() and response_opt_error() - implement lower four bits of an extended RCODE into the original RCODE field of resource record.

v4.1 - January 28, 2019

This package is ready for DNS Flag Day, 2019.

dnscache and dnscache6 can have EDNS(0) processing enabled for upstream queries, see man page for more details.

Any program that uses a CDB, will update its use if the CDB changes. This release also contains optimisations and fixes.

Version Notes
• New dnscache and dnscache6 - EDNS(0) processing configurable at run time.
• New dns4_transmit_start_edns0() - send a DNS query to a DNS servers using IPv4 with EDNS(0).
• New dns6_transmit_start_edns0() - send a DNS query to a DNS servers using IPv6 with EDNS(0).
• New dns_rcode_str() - Convert a DNS response code into a string.
• New data_cdb.c - refactoring of CDB setup code.
• New All programs that use any CDB, automatically detect changes and will switch to the new version.
Program does not need to be restarted
• New dns_punycode_encode() - Punycode encoding.
• New dns_rcode_str() - Convert a DNS response code into a string.
• New Extended the sent log entry to include the result code.
• New dns_domain_diff(3) split from dns_domain_equal(3).
• Changed Refactor EDNS(0) processing code.
• Changed dns4_transmit_start() - disabled EDNS(0).
• Changed dns6_transmit_start() - disabled EDNS(0).
• Changed dns4_transmit.c - split into 3 files.
• Changed dns6_transmit.c - split into 3 files.
• Changed dbldns-data - strip trailing \r from input data file.
• Changed dnscache-data and dnscache6-data - strip trailing \r from input data file.
• Changed rbldns-data and rbldns6-data- strip trailing \r from input data file.
• Changed tinydns-data - strip trailing \r from input data file.
• Changed wilddns-data - strip trailing \r from input data file.
• Changed printpacket_cat() - code optimisation.
• Changed dnscache-dnlist2data and dnscache6-dnlist2data - code optimisation and generate warning banner in output.
• Changed dnscache-iplist2data and dnscache6-iplist2data - code optimisation and generate warning banner in output.
• Changed tinydns-bind2data and tinydns-dnlist2data - code optimisation and generate warning banner in output.
• Changed log*() - code optimisation.
• Changed dnscache and dnscache6 - improve robustness with Content Delivery Networks.
• Changed Split tdlookup.c into tdlookup.c and tdlookup_loc_setup.c.
• Fixed tinydns-data - expanded the values allowable for the flag field of the DNSKEY resource record.
• Fixed tinydns-data(8) - documentation of CNAME entry.
• Fixed dns_domain(3) - documentation of DNS_DOMAIN constant.
• Fixed dnscache and dnscache6 - retry expired CNAME records.
• Fixed dnscache and dnscache6 - process resource records even if a NXDOMAIN response is received from upstream DNS servers.
• Fixed Build system - minor improvements.
• Requires Nemo DJB Library v2.12 or later.
• Requires Nemo DJBIO Library v2.2.4 or later.
• Requires Nemo DJBCAL Library v2.1.9 or later.
• Requires Nemo CDB Library v3.2.2 or later.

v4.0.2 - March 23, 2018

This release contains optimisations and fixes.

Version Notes
• Changed dnscache and dnscache6 - record empty resource records as NXDOMAIN in cache.
• Changed dnscache and dnscache6 - record CNAME records in name server lookups as SERVFAIL in cache.
• Changed dnscache and dnscache6 - record name server loops as SERVFAIL in cache.
• Changed dnscache and dnscache6 - record glueless name server as SERVFAIL in cache.
• Changed dnscache and dnscache6 - improve robustness for badly configured queried servers.
• Changed dns4_mxip4(), dns4_mxip6() - ignore all non out-of-memory errors during IP address lookup;
such errors are no longer treated as fatal.
• Changed dns6_mxip4(), dns6_mxip6() - ignore all non out-of-memory errors during IP address lookup;
such errors are no longer treated as fatal.
• Changed log*() - code optimisation.
• Requires Nemo DJB Library v2.11 or later.

v4.0.1 - January 4, 2018

This release contains optimisations and fixes.

Version Notes
• Changed All mdoc files - change text substitution literals (inspired by GNU Autoconf Makefile.in syntax).
• Changed axfrdns-conf and axfrdns6-conf - refactor log directory creation, improve error messages.
• Changed dbldns-conf and dbldns6-conf - refactor log directory creation.
• Changed rbldns-conf and rbldns6-conf - refactor log directory creation.
• Changed tinydns-conf and tinydns6-conf - refactor log directory creation.
• Changed walldns-conf and walldns6-conf - refactor log directory creation.
• Changed dnscache-conf and dnscache6-conf - code optimisation.
• Fixed dnscache-conf and dnscache6-conf - root/server directory scripts creation.
• Fixed dnscache-conf and dnscache6-conf - log directory creation.

v4.0 - December 28, 2017

The major items in this release:

  • Major change in the tinydns-data file format (source and binary).
  • New utility (tinydns-v1data2data) to convert original tinydns-data file format to the new format.
  • New utility (tinydns-v3data2data) to convert version 3 tinydns-data file format to the new format.
  • EDNS(0), RFC 6891, UDP Message Size - implemented in all responders and requesters.
  • New utility (tinydns-bind2data) to convert zone files to native tinydns-data format.
  • Various code changes.
  • Fixes.
Version Notes
• API change tinydns-data - data file format change; see sub-section below.
• New EDNS(0), RFC 6891, UDP Message Size - deployed for all responders and requesters.
Previously only deployed for dnscache/dnscache6 responder interface.
• New tdlookup_doit() - return A and AAAA additional section resource records for SRV resource record query.
tindydns, tinydns6 affected.
• New tinydns-bind2data - Convert BIND zone data into tinydns-data format.
• New tinydns-dnlist2data - Convert a list of domain names to tinydns-data format SOA records.
• New tinydns-v1data2data - Convert version 1 tinydns-data format into new tinydns-data format.
• New tinydns-v3data2data - Convert version 3 tinydns-data format into new tinydns-data format.
• New tinydns-data - Multi segment Text (TXT) resource type implemented.
Useful for creating records for DNS Service Discovery (DNS-SD).
• New tinydns-data - Resource Record Signature (RRSIG) resource type implemented.
• New tinydns-data - Name Server (NS) resource type implemented.
• New tinydns-data - Next Secure (NSEC) resource type implemented.
• New tinydns-data - Delegation Signer (DS) resource type implemented.
• Changed Maximum UDP size for EDNS(0) payload is 1410.
• Changed axfr-get - Implement more meaningful usage errors.
• Changed tinydns-data(8) - Include comment about strings that are longer than 255 bytes for TXT resource records.
• Changed tinydns-data(8) - Additional DNSSEC Algorithm literals.
• Changed tinydns-data - Additional DNSSEC Algorithm Numbers implemented.
• Changed tinydns-data - Code changes.
• Changed die.h - changed const char PROGRAM[] to const char *PROGRAM.
• Changed die.c - inserted const char *PROGRAM = 0;.
• Changed All programs - removed global initialisation of PROGRAM.
Inserted PROGRAM = *argv; into main().
• Changed All programs - removed program name from USAGE[] string.
• Changed Implement #include <nemo/macro_noreturn.h> from Nemo DJB Library.
• Changed Implement #include <nemo/macro_unused.h> from Nemo DJB Library.
• Fixed tinydns-data - IPv6 location labels.
• Fixed tindydns, tinydns6 - IPv6 location label handling.
• Fixed tindydns, tinydns6 - referral handling.
• Fixed dnscache, dnscache6 - referral handling.
• Fixed tdlookup_doit() - return additional section records iff not in answer section.
• Fixed axfrdns-conf.c - creation of run script.
• Fixed axfrdns6-conf.c - creation of run script.
• Requires Nemo DJB Library v2.10 or later.
• Requires Nemo DJBIO Library v2.2.3 or later.
• Requires Nemo DJBCAL Library v2.1.8 or later - new dependancy, DNSSEC resource record implementation.

tinydns-data - Data File Changes

  • The record field order has changed. Refer to tinydns-data(8) for new record format.
  • '@', '+' and '=' resource record records can now have multiple IPv4 and/or IPv6 addresses.
  • Type '3' resource record records have been discontinued and replaced by type '=' resource record records
  • Type '6' resource record records have been discontinued and replaced by type '+' resource record records
  • TXT resource record records can now have multiple text segments - particularly useful for DNS Service Discovery (DNS-SD).
  • Location label records can now have an IPv4 and/or IPv6 address.
  • RRSIG record type supported ('RRSIG' special verb).
  • NS record type supported ('NS' special verb).
  • NSEC record type supported ('NSEC' special verb).
  • SOA record type "special character" changed from 'Z' to 'SOA' special verb (unconditional).
  • CNAME record type "special character" changed from 'C' to 'CNAME' special verb (unconditional).
  • SRV record type "special character" changed from 'S' to 'SRV' special verb (unconditional).
  • NAPTR record type "special character" changed from 'N' to 'NAPTR' special verb (unconditional).

Refer to tinydns-v1data2data(8) and tinydns-v3data2data(8) for converting file formats.

Refer to the upgrade documentation for examples on how to convert file formats.

v3.0.3 - August 18, 2017

This release contains optimisations and fixes. Particular emphasis has been on cross platform compatibility.

Tested on Linux raspberrypi 4.9.35-v7+ #1014 SMP, armv7l GNU/Linux - Raspbian with Desktop, 32 bit platform.

Version Notes
• Changed conf-cc - expand examples.
• Changed tinydns-data.c - reorganised includes.
• Changed tinydns-edit.c - reorganised includes.
• Changed dnscache-conf.c, dnscache6-conf.c - reorganised includes.
• Changed generic-conf.c - reorganised includes.
• Changed roots4.c, roots6.c - reorganised includes.
• Changed axfr-notify.c - reorganised includes.
• Changed log*.c - log_number() parameter is now uint64_t.
• Fixed axfr-notify.c - simplified get_local_ip_list() access to ifa->ifa_addr->sa_data data structure.
• Fixed lame4_servers.c, lame6_servers.c - time_t arithmetic.
• Requires Nemo DJB Library v2.8.3 or later.
• Requires Nemo DJBIO Library v2.2.2 or later.

v3.0.2 - August 1, 2017

This release contains changes and fixes.

Version Notes
• Changed dbldns, dbldns6 - processes wild cards at TLD level (eg: *.png).
• Fixed printrecord_cat() - formatting of output (missing space).
• Fixed tinydns-data - default SOA Expire is now set to 1209600 (2 weeks).
RFC 1912 suggests a range of 2 to 4 weeks.
• Fixed dnscache.c, dnscache6.c - initialisation of minttl variable.

v3.0.1 - June 26, 2017

This release contains new features, changes and fixes.

Version Notes
• New tinydns-data - DNS Public Key (DNSKEY) resource type implemented.
• Changed wilddns-data - accepts optional IPv4 and/or IPv6 address for a given FQDN.
• Changed wilddns - can process optional IPv4 and/or IPv6 address for a given FQDN.
• Changed wilddns6 - can process optional IPv4 and/or IPv6 address for a given FQDN.
• Changed tinydns-data - DNSKEY resource type supported.
• Changed printrecord_cat() - DNSKEY resource type supported.
• Changed printrecord_cat() - LOC resource type limited support.
• Changed die_*() - some minor restructuring and improvements.
• Changed Build system - improvements.
• Fixed rbldns - improper parsing of text result.
• Fixed dbldns - improper parsing of text result.
• Requires Nemo DJB Library v2.8.1 or later.

v3.0 - May 30, 2017

This release contains optimisation, bug fix changes, documentation updates and a data file format change for tinydns-data, more details below.

Version Notes
• API change tinydns-data - data file format change; see sub-section below.
• API change dnscache - now uses the file servers/data.cdb instead of various text files in the servers directory.
• API change dnscache6 - now uses the file servers/data.cdb instead of various text files in the servers directory.
• New dnscache-data - data tool for dnscache(8).
• New dnscache6-data - data tool for dnscache6(8).
• New dnscache-dnlist2data - data conversion tool for dnscache-data(8).
• New dnscache6-dnlist2data - data conversion tool for dnscache6-data(8).
• New dnscache-iplist2data - data conversion tool for dnscache-data(8).
• New dnscache6-iplist2data - data conversion tool for dnscache6-data(8).
• New wilddns - domain-name-listing DNS service (IPv4 network connection).
• New wilddns6 - domain-name-listing DNS service (IPv6 network connection).
• New wilddns-conf - sets up an domain-name-listing DNS service (IPv4 network connection).
• New wilddns6-conf - sets up an domain-name-listing DNS service (IPv6 network connection).
• New wilddns-data - data tool for wilddns(8) and wilddns6(8).
• New axfrdns6-conf - sets up a DNS zone-transfer service (IPv6 network connection).
• New dbldns6-conf - sets up an domain-name-listing DNS service (IPv6 network connection).
• New tinydns6-conf - sets up an domain-name-listing DNS service (IPv6 network connection).
• New Certification Authority Authorization (CAA) resource type implemented.
• New dns_domain_labelcount() - count the number of labels in dns_domain data.
• Changed axfr-notify - sort SOA list for sa_vector_find().
• Changed dnscache, dnscache6 - relax enforcement of RFC 2181 s10.3 for CNAME in MX resource record lookups.
• Changed dbldns, dbldns6 - extended log reporting.
• Changed rbldns, rbldns6 - extended log reporting.
• Changed dbldns, dbldns6 - code optimisation.
• Changed rbldns, rbldns6 - code optimisation.
• Changed dbldns, dbldns6 - implement wildcard labels - whole labels only.
• Changed dbldns-data - implement wildcard labels - whole labels only.
• Changed replaced all comparison instances of '== -1' to '< 0'.
• Changed Global constants divided into individual modules.
• Changed Build system - improvements.
• Fixed axfdns-conf(1) - minor edits.
• Fixed dbldns-conf(1) - man page description.
• Fixed dbldns, dbldns6 - made behaviour same as rbldns and rbldns6,
except that '$' substitution is for the queried domain.
• Fixed tinydns-data - error description for IP address fields.
• Fixed dns_domain_erase() - now sets length to 1.
• Fixed dns_domain_length() - minimum length is 1.
• Fixed dns_domain_diff() - updated to reflect change in dns_domain_length().
• Fixed dns_domain_equal() - updated to reflect change in dns_domain_length().
• Fixed Various manual page minor typographical errors.
• Requires Nemo DJB Library v2.8 or later.

tinydns-data - Data File Changes

  • Generic record type "special character" changed from ':' to '?'.
  • requires a colon after the "special character".
  • the "special character" can now substituted for the "conventional" resource record name - referred to "special verb" in man page.
  • CAA record type supported ('CAA' special verb).
  • SRV record type "special character" changed from 'S' to 'SRV' special verb.
  • NAPTR record type "special character" changed from 'N' to 'NAPTR' special verb.
  • SPF record type removed - RFC 7208, s3.1.

v2.2.1 - February 12, 2017

This release contains optimisation, compliance and bug fix changes. The main focus has been in dnscache and dnscache6 improvements.

Version Notes
• New dns_domain_ok() - low level routine for detecting simple format errors in dns_domain data.
• New rbl - shell script to simplify the use of rblcheck.
• New test_domain_name_decode - testing of domain name decoding.
• Changed dnscache, dnscache6 - many internal routines and literals renamed.
• Changed cache.c - use time_t instead of struct tai.
• Changed dnsmxip6 - returns results in sorted order.
• Changed dns_domain_todot_cat.c - minor code changes - simplicity.
• Changed dns_rcip4.c - minor code changes - simplicity.
• Changed dns_rcip6.c - minor code changes - simplicity.
• Changed dns_rcrw.c - minor code changes - simplicity.
• Changed ignore_ip6_init() - better handling of openreadlistclose().
• Changed Accommodate changes in Nemo DJBIO Library v2.2.1.
• Changed dnscache, dnscache6 - many code changes to assist in debugging DNS anomalies.
• Changed dnscache, dnscache6 - renamed many internal routines - names now closely match function.
• Fixed dnscache, dnscache6 - enforced RFC 2181 s10.3 - CNAME prohibited in NS and MX resource record lookups.
• Fixed dnscache, dnscache6 - fixed high CPU and I/O load dealing with lame servers.
Both now keep a list of lame servers internally, will not poll them for at least 30 minutes (RFC4697 s2.2.1).
• Fixed dnsqr - third parameter requirement removed.
• Fixed dns6_ip4() - set errno for oversized query.
• Fixed dns6_ip6() - set errno for oversized query.
• Fixed dns4_ip4() - set errno for oversized query.
• Fixed dns4_ip6() - set errno for oversized query.
• Fixed dns_domain_todot_cat() - bug in change to lower case,
not likely to show as most code explicitly sets to lower case externally.
• Fixed dns_domain_fromdot() - double dot sequences now return error.
• Fixed dns_domain_fromdot() - invalid octal sequences now return error.
• Fixed tinydns-data - default SOA Minimum TTL is now set to 3600.
RFC 2308 stipulates a range of 3600 to 86400 seconds.
• Fixed Build system - minor improvements.
• Removed FILES - unused and high maintenance.
• Requires Nemo DJBIO Library v2.2.1 or later.
• Requires Nemo DJB Library v2.7 or later.

v2.2 - July 18, 2016

This release is contains API change. The main focus has been in struct dns6_transmit.

Version Notes
• API change struct dns6_transmit - remove data member net_if, scope id is now incorporated in ip6_address.
• Changed Changes to build system.
• Changed print-docman.sh and print-mancat.sh - removed second parameter, output now to stdout.
• Changed print-docman.sh - renamed to print-sedit.sh.
• Fixed All dns* programs - domain name queries are unconditionally set to lower case.
• Requires Nemo DJB Library v2.6 or later.
• Requires Nemo DJBIO Library v2.2 or later.

v2.1.4 - June 20, 2016

Version Notes
• Changed dns4_mxip4(), dns4_mxip6 - add host IP fallback to results.
• Changed dns6_mxip4(), dns6_mxip6 - add host IP fallback to results.
• Changed conf-cc - add comment about building on gcc+glibc platform.
• Fixed Minor changes to build system.
• Fixed utime.c - compile error (gcc+glibc) - changed some #include declarations.
• Fixed dns6_mxip6() - initialiser of ip6_vector.
• Requires Nemo DJB Library v2.5.2 or later.
• Requires Nemo DJBIO Library v2.1.5 or later.
• Requires Nemo CDB Library v3.0.3 or later.

v2.1.3 - March 30, 2016

Version Notes
• Changed tinydns-data(8) - add tinydns6 references.
• Changed dnscache, dnscache6 - moved log_stats() out of main event loop.
• Changed dnscache, dnscache6 - improved glueless NS resource record detection and processing.
• Changed log_stats() - optimised for new use.
• Changed hier.c - implemented unsigned int install_manuid from Nemo DJB Library v2.5.1.
• Fixed Build system - minor improvements.
• Requires Nemo DJB Library v2.5.1 or later.

v2.1.2 - December 2, 2015

Version Notes
• Changed Accommodate changes in Nemo DJB Library v2.5.
• Changed Various vector based data structures allocation routines.
• Changed Various vector based data structures allocation routines - declared as static inline.
• Requires Nemo DJB Library v2.5 or later.

v2.1.1 - October 14, 2015

Version Notes
• New rbldns6-conf - sets up an IP-address-listing DNS service (IPv6 network connection).
• New rbldns6-conf(8) - manual page.
• New rbldns6-data - data tool for rbldns6(8) (IPv6 network connection).
• New rbldns6-data(8) - manual page.
• New rbldns6 - an IP-address-listing DNS server (IPv6 network connection).
• New rbldns6(8) - manual page.
• New conf-rbldns6-max-mask - configuration option.
• Changed dd4(), dd6() - code optimisation.
• Changed rbldns-conf(8) - add reference to IPv4 connectivity.
• Changed rbldns-data - now sets the mask for IP addresses in the database.
• Changed rbldns-data(8) - add reference to IPv4 connectivity, changed comment about mask for IP address, fixed reference to rbldns(8).
• Changed rbldns(8) - add reference to IPv4 connectivity.
• Changed global_ip6.c - removed testing of IPv6 native address.
• Changed dnstrace6.c - removed testing of IPv6 native address.
• Changed walldns6.c - removed testing of IPv6 native address.
• Changed Minor reorganisation of build process - shifted/renamed DNS domain tests.
• Fixed rbldns-data - now configures rbldns to be found in the 'sbin' directory.

v2.1 - September 18, 2015

Version Notes
• New axfr-notify - program to notify secondary DNS servers via a NOTIFY request.
• New axfr-notify(8) - manual page.
• New dnscache6-conf - sets up an IPv6 DNS cache service.
• New dnscache6-conf(8) - manual page.
• New dns_ns(3) - manual page.
• New dns_ns_packet(3) - manual page.
• New dns4_ns() - low level routine for reporting NS resource record via IPv4 network connection.
• New dns6_ns() - low level routine for reporting NS resource record via IPv6 network connection.
• New dns_soa(3) - manual page.
• New dns_soa_packet(3) - manual page.
• New dns4_soa() - low level routine for reporting SOA resource record via IPv4 network connection.
• New dns6_soa() - low level routine for reporting SOA resource record via IPv6 network connection.
• New dns4_notify() - low level routine for generating IPv4 NOTIFY requests.
• New dns6_notify() - low level routine for generating IPv6 NOTIFY requests.
• Changed Updated to Nemo CDB v2.2.
• Changed Updated to Nemo DJB Library v2.4.
• Changed tinydns-data(8) - fixed broken formatting, rearranged parts of SEE ALSO, added tinydns6 cross reference to SEE ALSO.
• Changed log_*() - renamed many routines for clarity and consistency. New routine to log empty cache entries.
• Changed djbdns(3) - document $DNSCACHEIP, remove "dns_env_version" documentation.
• Changed dnscache, dnscache6 - upgraded from ignoreip to ignoreip4 and ignoreip6.
• Changed dnscache, dnscache6 - SERVFAIL, NXDOMAIN log messages now have more consistant format.
• Changed ioquery4_havepacket.c: ignore_ip() - updated to new ip4_vector_find() API.
• Changed ioquery6_havepacket.c: ignore_ip() - updated to new ip6_vector_find() API.
• Changed tinydns, tinydns6, axfdns, axfrdns6, dbldns, dbldns6, rbldns, walldns, walldns6 - log NOTIFY queries - log type is "N".
• Changed tinydns, tinydns6, axfdns, axfrdns6, dbldns, dbldns6, rbldns, walldns, walldns6 - log NXDOMAIN query results - log type is "X".
• Changed tinydns, tinydns6, axfdns, axfrdns6, dbldns, dbldns6, rbldns, walldns, walldns6 - log id as decimal.
• Changed various sources files - minor code optimisation.
• Fixed dnscache, dnscache6 - do not respond NXDOMAIN when nameserver supplies answers.
NXDOMAIN response will only occur with zero answers. (cf AVG)
• Fixed dnscache, dnscache6 - TCP responses.
• Fixed dnscache, dnscache6 - for truncated queries, response answer counts are set to zero. (cf DIG)
• Fixed dnscache, dnscache6 - fixed processing "glueless" servers created by CDNs expiring glue resource records before NS resource records.
These events are logged. (cf CloudFlare)
• Fixed dnscache, dnscache6 - fixed processing of CNAME records - now handles CDNs a lot better. (cf CloudFlare)
• Fixed dnscache, dnscache6 - fixed processing of cached results.
• Fixed dnscache, dnscache6 - hash floods eliminated - updated to use siphash24() from Nemo DJB Library.
• Fixed rblcheck.c - removed incorrect options from usage string.
• Fixed qt_vector.c: init4_data() - extended initialisation of member variables.
• Fixed qt_vector.c: init6_data() - replaced call to qt_data_erase() with extended initialisation of member variables.
• Fixed mxname_vector_erase() - trap errors from stralloc_erase().
• Fixed rblcheck - increase parameter checking.
• Fixed dns_name_packet() - record all PTR records, not just the first.
• Requires Nemo DJB Library v2.4 or later.
• Requires Nemo CDB Library v3.0 or later.

v2.0.3 - August 7, 2015

Version Notes
• Changed dnscache6 - okclient6.c: okclient6() replace ip6_fmt() with ip6_fmt_uncompressed().
• Changed dnscache6(8) - change examples as a result of using ip6_fmt_uncompressed().
• Changed tdlookup.c - replace float values with integers.
• Changed server4.c: server4_doit() - code optimisation.
• Changed server6.c: server6_doit() - code optimisation.
• Changed Build system - minor improvements.
• Fixed dns_mx(3) - change 2 SEE ALSO references.
• Fixed tinydns, rbldns, walldns, dbldns - server4.c: server4_doit() unintentional null dereference (wrong constant used).
• Fixed tinydns6, walldns6, dbldns6 - server6.c: server6_doit() unintentional null dereference (wrong constant used).
• Fixed trylsock.c - implement prototype for main().
• Removed trycpp.c - unused.

v2.0.2 - July 31, 2015

Version Notes
• Changed Accommodate changes in Nemo DJB Library v2.2.4.
• Changed Manual pages - incorporate first line of file 'VERSION' into footer.
• Requires Nemo DJB Library v2.2.4 or later.

v2.0.1 - July 15, 2015

Version Notes
• Changed dns4_transmit(3) - removed reference to "skip IPv4 addresses of 0.0.0.0"; now irrelevant.
• Changed dns6_transmit(3) - removed reference to "skip IPv6 addresses of ::0"; now irrelevant.
• Changed roots4.c: roots4_search() - code optimisation.
• Changed roots6.c: roots6_search() - code optimisation.
• Changed query4.c: roots_and_ns() - code optimisation.
• Changed query4.c: do_query_servers() - code optimisation.
• Changed query6.c: roots_and_ns() - code optimisation.
• Changed query6.c: do_query_servers() - code optimisation.

v2.0 - July 6, 2015 - Major Changes from Original Distribution

General:

Version Notes
• New IPv6 support.
• New Makefile target: "clean".
• New Imported manual pages from third party sources.
• Changed Build/installation framework provided by Nemo DJB Library.
• Changed Converted K&R prototypes to ANSI.
• Changed All manual pages have been converted to mdoc(7) format.
• Changed Additional annotations/comments - source code files.
• Changed Using some of the standard integer types in the POSIX standard.
• Changed Changed many signed integers into unsigned integers.
• Changed Source code formatting is now "Compact Control Readability Style" - variant of K&R, similar to the Stroustrup variant.
One exception: single line conditional returns are on same line as the conditional.
Long lines are rarely wrapped.
Indent size is two spaces.
• Fixed Patched source code to use #include <errno.h>
• Fixed Resolved all compile errors and warnings from the GNU C compiler (-W -Wall -Werror).
• Fixed In scripts and the Makefile, all references to "head -1" have been changed to "head -n 1".
• Removed "systype" processing.

Programs:

Version Notes
• New dnscache, dnscache6 - now capable of handling cache size up to 4GB.
• New dnscache6 - IPv6 connectivity, equivalent to dnscache.
• New dbldns - domain-name-listing DNS server (IPv4 connection).
• New dbldns6 - domain-name-listing DNS server (IPv6 connection).
• New dnsip6 - lookup IPv6 (AAAA) addresses.
• New dnsmxip6 - prints the (IPv6) MX records of a FQDN
• New tinydns6 - IPv6 connectivity, equivalent to tinydns.
• New rblcheck - query IP-address-listing DNS servers (RBLs) - IPv4 connectivity.
• New rblcheck6 - IPv6 connectivity, equivalent to rblcheck.
• New axfrdns6 - IPv6 connectivity, equivalent to axfrdns.
• New dblcheck - query domain-name-listing DNS server.
• Changed tinydns-data - now handles natively, resource records of type AAAA, SRV, NAPTR.
Greatly improved error handling of improper data.
• Changed dnsmx - results now printed in "pref" order.
• Changed dnsmxip - results now printed in "pref" order.
• Removed pickdns, et al - now handled by tinydns.

Routines and data structures:

Version Notes
• API change Changed many signed return values into unsigned return values.
• API change Changed many prototypes to use data types in Nemo DJB Library.
• API change dns_domain - DNS name data manipulation.
• API change dns_type - DNS type data manipulation.
• API change dns_class - DNS class data manipulation.
• API change dns_id - DNS id data manipulation.
• Changed Many routines replaced by those found in Nemo DJB Library.
• Changed Routines that used the 1st generation of buffered I/O are now using Nemo DJBIO Library based buffered I/O.
• Changed Many routines replaced by those found in Nemo CDB.

Libraries:

Version Notes
• New libdjbdns.a - the main library.