################################################################################
# 
#  Copyright (c) 2011, EURid. All rights reserved.
#  The YADIFA TM software product is provided under the BSD 3-clause license:
# 
#  Redistribution and use in source and binary forms, with or without 
#  modification, are permitted provided that the following conditions
#  are met:
# 
#         * Redistributions of source code must retain the above copyright 
#           notice, this list of conditions and the following disclaimer.
#         * Redistributions in binary form must reproduce the above copyright 
#           notice, this list of conditions and the following disclaimer in the 
#           documentation and/or other materials provided with the distribution.
#         * Neither the name of EURid nor the names of its contributors may be 
#           used to endorse or promote products derived from this software 
#           without specific prior written permission.
# 
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
#  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
#  FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
#  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
#  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
#  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
#  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# 
################################################################################

20140905:
    YADIFA 2.0.0

    This release is a public release

    Fixes:
    - fixed a log incorrectly reporting an error when the client didn't close the TCP connection fast enough
    - fixed an issue with the statistics on TCP queries

    Known issue:
    - removing the last key of a signed zone is permitted by YADIFA but triggers some chicken-egg issue with signatures.

20140829:
    YADIFA 2.0.0-beta3-public

    This release is a public release

    - --disable-master feature at configure now builds a slave-only server

    Fixes:
    - fixed an issue with TSIG signed queries
    - fixed an issue with thread pool live resizing
    - fixed an issue where reading an undeleted obsolete journal ending at the start of a newly transferred zone from the master would incorrectly trigger an error

    Known issue:
    - removing the last key of a signed zone is permitted by YADIFA but triggers some chicken-egg issue with signatures.

20140630:
    YADIFA 2.0.0-beta2-public

    This release is a public release

    - basepath disabled
    - pidpath removed, only pidfile remains
    - log reopen notification is now timestamped
    - slave zones no longer complain about missing NSEC/NSEC3 private keys
    - the error code ZRE_FILE_NOT_FOUND has been replaced by the more accurate code ZRE_NO_VALID_FILE_FOUND
    - default logging settings no longer output debug

    Fixes:
    - fixed issue in flag computation (AD,CD)
    - fixed an issue with journal truncation sometimes leading to a crash
    - zone parsing now correctly accepts '#' as a comment marker
    - zone parsing now rejects wrong fqdn as soon as it reads them, leading to a more accurate error message
    - removing the last dnskey of a zone no longer crashes the server

    Known issue:
    - removing the last key of a signed zone is permitted by YADIFA but triggers some chicken-egg issue with signatures.

    yadifa remote client commands prototype is now available with the following supported commands:

        -shutdown
            shuts down yadifa
            e.g. ./yadifa -s "192.0.2.1 port 53" -t shutdown
            
        -cfgreload
            reloads the <key> and <zone> sections of the yadifad configuration

            e.g. ./yadifa -s "192.0.2.1 port 53" -t cfgreload

        -logreopen
            closes and reopen the log files

            e.g. ./yadifa -s "192.0.2.1 port 53" -t logreopen

        -freezeall
            prevents all zones from being updated dynamically with nsupdate
            
            e.g. ./yadifa -s "192.0.2.1 port 53" -t freezeall

        -freeze
            prevents a zone from being updated dynamically with nsupdate

            e.g. ./yadifa -s "192.0.2.1 port 53" -t freeze -q somedomain.eu

        -unfreezeall
            enables updates of all zones again

            e.g. ./yadifa -s "192.0.2.1 port 53" -t unfreezeall

        -unfreeze
            enables updates of a zone again

            e.g. ./yadifa -s "192.0.2.1 port 53" -t unfreeze -q somedomain.eu

        In order to work, the allow-control ACL must be defined either in <main> for the global commands and
        may also be defined in <zone> for the ones targetting a specific zone.

            e.g. allow-control 127.0.0.1

        Note that tsig is not supported in the client yet.

20140528:
    YADIFA 2.0.0-beta1-public

	This release is a public release

	- NSID implemented (enabled at ./configure time with --enable-nsid
        - generic parser for:
 		- getops
		- zone file
		- resolv.conf
		- configuration
	- '@' can now be used in a zone file
        - new binary for controlling 'yadifad' (yadifa)
        - framework is rewritten for multi core systems
        - single core server has been removed

    Fixes:	
	- fixed several minor issues

    Know issues:
	- removing all dnskeys from a zone file crashes the server
	- yadifa has some issues with nodelay, nocork
	
20130424:
    YADIFA 1.1.0
        _ added DSA signature
        _ added SHA-256 SHA-384 SHA-512 digest algorithms
        _ now supports additional DNSSEC algorithms:
            DSASHA1
            DSASHA1_NSEC3
            RSASHA256_NSEC3
            RSASHA512_NSEC3
        _ Respone Rate Limitation implemented (enabled at ./configure time with --enable-rrl)
        _ --enable-tiny-footprint now reduces the memory usage further by reducing the standard log queue from 2^20 to 2^12 entries
        _ the general speed has been slightly improved
        _ dynamic updates pending for more than 3 seconds are now dropped with an error
        _ dynamic provisioning
    Fixes:
        _ fixed a memory leak that could occur at NSEC3 generation when loading the zone failed in a particular way
        _ fixed a memory leak at ixfr send
        _ fixed handling of '_' character that was improperly stored in the database
        _ fixed bandwidth limit settings (tcp stream in and out) not always being taken from the configuration
        _ fixed TSIG answer verification for notifies
        _ fixed error codes not being registered and thus logged as unkown hexadecimal error code.
        _ other minor fixes

20130612:
    YADIFA 1.0.3
        Fixes only (backports from 1.1.0)

    Fixes:
        _ fixed an issue preventing YADIFA from being build from another directory
        _ fixed an issue with OSX systems where gsed has to be used instead of sed
        _ fixed an issue with the '_' character not being properly handled
        _ fixed an issue where reading MX record from a zone file would incorrecly be rejected as invalid
        _ fixed an issue where the OPT record would not be properly written
        _ fixed an issue where an undefined ACL reference would be silently ignored
        _ fixed missing code tags for several error codes.  From now on unregistered codes are dumped in hexadicimal.
        _ fixed portability issues with BSD and OSX
        _ fixed several minor issues


20120921:
    YADIFA 1.0.2
        Fixes only

    Fixes:
        _ fixed an issue where the journal file was sometimes not properly closed at the end of a task
        _ fixed an issue where the TCP usage slots would sometimes wrongly return that they were all being used
        _ fixed an issue on IXFR processing (slave side) where the type of answer from the master would not be properly detected
        _ fixed an issue with TSIG on secrets not exactly 16 bytes long (binary form)
        _ fixed an issue on 32 bits architectures where the sig-validity-* fields would not be properly handled if not set
          on each zone section.
        _ slightly improved the replay time of big journal files
        _ fixed several minor issues

    Known issues:
        _ if the serial of a zone is changed in a way that it goes beyond a value such as
          the journal serial start is bigger than the journal serial end, issues are expected
          for IXFR answers.
        _ notify is ignored on TCP  

20120709:
	YADIFA 1.0.1
		_ logging repeat compression is now by channel instead of global

	Fixes:
        _ fixed an issue where glibc whould assert if libgcc_s.so (libgcc_s.so.1) and libc.so (libc.so.6) where not
		  available inside the chrooted directory of YADIFA
		_ fixed an issue in the syslog module

	Known issues:
		_ on 32 bits architectures, the sig-validity-* fields are not properly copied from <main> to <zone>
		  as a workaround, set the sig-validity fields in each <zone> container in 32 bits architectures

		  ie:
			  sig-validity-interval 7
 			  sig-validity-regeneration 168
			  sig-validity-jitter 3600
		_ if the serial of a zone is changed in a way that it goes beyond a value such as
		  the journal serial start is bigger than the journal serial end, issues are expected
		  for IXFR answers.
		_ notify is ignored on TCP

20120625:
	YADIFA 1.0.0
		_ LTO support can be enabled with --enable-lto but this is not working with clang. LTO does not increase
		  the performance significally
		_ parallel processing of listening addresses can now be enabled.
		  It can be set using thread-count-by-address in the <main> section.
		  By default YADIFA will not use parallel processing as this feature has not been
		  as thoroughly tested as the single-thread processing model
		_ default parameters tuning
		_ fixes

	 Known issue:
		_ on 32 bits architectures, the sig-validity-* fields are not properly copied from <main> to <zone>
		  as a workaround, set the sig-validity fields in each <zone> container in 32 bits architectures

		  ie:
			  sig-validity-interval 7
 			  sig-validity-regeneration 168
			  sig-validity-jitter 3600
		
20120530:
	YADIFA 1.0.0RC3
		_ the configuration parser now ignores undefined logger names and
		  report them with a warning
		_ syslog messages are now put in the name of "yadifad" instead of  the name used for the "syslog" channel
		_ syslog messages do not print the time from YADIFA anymore
		_ improved the steps involved in loading a locally cached slave zone
		_ zones are now loaded in background 
		_ man page yadifad-conf.man5 renamed into yadifad.conf.man5

	Fixes:
		_ AXFR/IXFR answers with the RA bit set are nolonger rejected as invalid
		_ YADIFA now answers to SIGINT again (shutdown)
		_ fixed an issue where obsolete AXFR files were not always being deleted
		_ fixed an issue occuring when both IPv4 and IPv6 were available to handle a notify
		_ fixed journal replay issue where some RRSIGs records were not properly removed
		_ fixed an issue occuring with IPv6 queries
		_ fixed an issue in the generation of a specific NSEC3 error answer
		_ fixed named query style layout

	Known issue:
		_ if the serial of a zone is changed in a way that it goes beyond a value such as
		  the journal serial start is bigger than the journal serial end, issues are expected
		  for IXFR answers.
		_ notify is ignored on TCP
		
20120328:
	YADIFA 1.0.0RC2
		_ fixed logging issue on work file creation error
		_ fixed an issue where IXFR queries could be rejected as being wrongly formatted
		_ fixed an issue in the query logging text
		_ enabled command line options ( -u uid -g gid -d )
	
20120319:
	YADIFA 1.0.0RC1

	Is a full functional authoritative name server:

		- works as primary or secondary name server
		- AXFR
		- IXFR
		- NOTIFY
		- NSUPDATE
		- TSIG
		- CLASSES:
			- IN
			- CH (just for version)
		- TYPES:
			- AAAA
			- CNAME
			- DNSKEY
			- DS
			- HINFO
			- MX
			- NAPTR
			- NS
			- NSEC3
			- NSEC3PARAM
			- NSEC
			- PTR
			- RRSIG
			- SOA
			- SRV
			- SSHFP
			- TXT
		- Automatic resigning
		- DNSSEC algorithms:
			- 5 (RSASHA1)
			- 7 (RSASHA1-NSEC3
		- ACL's
	

	KNOWN ISSUES:

		NSEC3:	_ cannot work with multiple NSEC3PARAM chains with mixed OPT-IN/OUT settings

			_ adding a new NSEC3 chain expects that the master sends the NSEC3PARAM first (it does not seems to be always the case)
				  We have a case where a master starts with 2 thousands NSEC3 opt-out records then adds 6 millions NSEC3 opt-in records but does not give the NSEC3PARAM record
				  first. The slave server rejects them all because it's unable to link them to a chain.  (This one has high priority)

		DNSSEC:	_ it is not allowed to change the zone security mode (unsecure, NSEC, or NSEC3).  Once the zone is loaded it keeps its security mode.

			_ dynamic updates of NSEC as well as NSEC3 records are refused

		QUIT:	the server will shutdown on the following conditions:

			_ detection of an impossible situation or an internal integrity issue (ie: for any reason the SOA has vanished from a zone)

			_ memory limit reached which prevents any more work

			_ ipc issue which prevent internal services communication

		ACL:	_ since the access control is set by zone and CHAOS class is not implemented as a configurable zone, it is not possible (yet) to specifically block CHAOS queries.

20111121:
	YADIFA 0.5.5
		-	many fixes 

	KNOWN ISSUE: NSEC3 slave zone replay fails.

20110706:
	YADIFA 0.5.0
		-	slave mode, AXFR/IXFR (no TSIG yet for the slave-side transfer)
		-	answers to a notify from the master
		-	polls the (first) master on the masters list
		-	maintains the .axfr & .ix files (deletes the obsoletes ones)
		-	TSIG queries are checked
		-	Replays the zone journal on startup after the zone load (journaling)
		-	Answers IXFR queries (journaling)

20110601:
	YADIFA 0.4.0
		Operational:
		-	It works as a no dnssec name server
		-	No notifies to slave name servers
		-	daemon
		-	Answers AXFR queries with TSIG
		- 	nsupdate functionality (journaling)
		-	TSIG on client server side will be transmitted, but not checked
		-	ACL works
		- 	The zone has SOA, NS A resource records.

20110524:
	YADIFA 0.3.0
		First release internally of yadifad 20110524115500 GMT+1.

		Operational:
		-	It works as a no dnssec name server
		-	No notifies to slave name servers
		-	daemon
		-	Answers AXFR queries
		- 	The zone has SOA, NS A resource records.
		

20091224:
	YADIFA 0.2.0
		_	Answers AXFR queries
		_	ACL based on IP and TSIG (not all query types are ACL'ed yet)

20091104:
	YADIFA 0.1.0

		YADIFA is a work in progress. The main goal is to have an alternative for BIND or NSD.

		Version 0.1.0 is an authoritative server only. 

		It has no:
		-	AXFR/IXFR functionality
		-	dynupdate
		- 	support for NSEC
		- 	support for NSEC3
		-	caching mechanism
		- 	additional tools (eg.dig, dnssectools, drill,...)

		It has:
		-	a very fast way to give authoritative answer
		-	a very fast method for loading the database and checking the zone files

		This first release is to have a feeling how it works in an operational environment.
	
	TODO

		Everything what is not implemented, has to be implemented. Most of the code is there, but is not activated.

		No comformity tests has been done. (This of course is on the todo list)



Bug Reports and Mailing Lists

        Bugs reports should be sent to

                bugreport@yadifa.eu

