Welcome to the 15th development release of BIND 10. This software suite provides an authoritative DNS server with DNSSEC, IXFR, and AXFR support, an iterative caching resolver, C++ DNS library with Python wrappers, statistics collection, an experimental DHCPv6 server, a C++ DHCP packet library, remote run-time configuration and control, and a lot more. Interesting changes since the last snapshot release include: - Introduction of libdhcp++, a new C++ based library that handles DHCPv6 packets and options, and a simple skeleton DHCPv6 server that uses that library and is able to assign a single, hardcoded lease to a client (SOLICIT-ADVERTISE-REQUEST-REPLY exchange is performed). - Introduction of system tests using Behavior-Driven Development tool, Lettuce. (Please let us you if you'd like to participate in providing system-agnostic behavior and RFC protocol tests.) - Outbound IXFR (over TCP) is now supported and journaling of zone differences was added. NOTE: The SQLite3 schema changed and for IXFR support the database needs to be upgraded by running in the build directory: "compatcheck/sqlite3-difftbl-check.py --upgrade /path/to/zone.sqlite3". - Statistics retrieval for specific counters or resource items, for example: http://localhost:8000/bind10/statistics/xml/Stats/boot_time - Run-time configuration (for choosing components to run) is more flexible now. Note that the Boss start_auth and start_resolver configurations have been removed; see the BIND 10 Guide for details. This latest snapshot tarball and its PGP signature can be downloaded at: ftp://ftp.isc.org/isc/bind10/devel-20111128/bind10-devel-20111128.tar.gz ftp://ftp.isc.org/isc/bind10/devel-20111128/bind10-devel-20111128.tar.gz.sha512.asc Users and developers are encouraged to participate on the BIND 10 mailing lists. https://lists.isc.org/mailman/listinfo/bind10-users https://lists.isc.org/mailman/listinfo/bind10-dev Please let us know about your experiences with using BIND 10. Jeremy C. Reed BIND 10 Release Engineer ISC p.s. A summary of the significant changes since the previous release include (from the ChangeLog): 331. [bug] shane Fixed a bug in data source library where a zone with more labels than an out-of-bailiwick name server would cause an exception to be raised. (Trac #1430, git 81f62344db074bc5eea3aaf3682122fdec6451ad) 330. [bug] jelte Fixed a bug in b10-auth where it would sometimes fail because it tried to check for queued msgq messages before the session was fully running. (git c35d0dde3e835fc5f0a78fcfcc8b76c74bc727ca) 329. [doc] vorner, jreed Document the bind10 run control configuration in guide and manual page. (Trac #1341, git c1171699a2b501321ab54207ad26e5da2b092d63) 328. [func] jelte b10-auth now passes IXFR requests on to b10-xfrout, and no longer responds to them with NOTIMPL. (Trac #1390, git ab3f90da16d31fc6833d869686e07729d9b8c135) 327. [func] jinmei b10-xfrout now supports IXFR. (Right now there is no user configurable parameter about this feature; b10-xfrout will always respond to IXFR requests according to RFC1995). (Trac #1371 and #1372, git 80c131f5b0763753d199b0fb9b51f10990bcd92b) 326. [build]* jinmei Added a check script for the SQLite3 schema version. It will be run at the beginning of 'make install', and if it detects an old version of schema, installation will stop. You'll then need to upgrade the database file by following the error message. (Trac #1404, git a435f3ac50667bcb76dca44b7b5d152f45432b57) 325. [func] jinmei Python isc.datasrc: added interfaces for difference management: DataSourceClient.get_updater() now has the 'journaling' parameter to enable storing diffs to the data source, and a new class ZoneJournalReader was introduced to retrieve them, which can be created by the new DataSourceClient.get_journal_reader() method. (Trac #1333, git 3e19362bc1ba7dc67a87768e2b172c48b32417f5, git 39def1d39c9543fc485eceaa5d390062edb97676) 324. [bug] jinmei Fixed reference leak in the isc.log Python module. Most of all BIND 10 Python programs had memory leak (even though the pace of leak may be slow) due to this bug. (Trac #1359, git 164d651a0e4c1059c71f56b52ea87ac72b7f6c77) 323. [bug] jinmei b10-xfrout incorrectly skipped adding TSIG RRs to some intermediate responses (when TSIG is to be used for the responses). While RFC2845 optionally allows to skip intermediate TSIGs (as long as the digest for the skipped part was included in a later TSIG), the underlying TSIG API doesn't support this mode of signing. (Trac #1370, git 76fb414ea5257b639ba58ee336fae9a68998b30d) 322. [func] jinmei datasrc: Added C++ API for retrieving difference of two versions of a zone. A new ZoneJournalReader class was introduced for this purpose, and a corresponding factory method was added to DataSourceClient. (Trac #1332, git c1138d13b2692fa3a4f2ae1454052c866d24e654) 321. [func]* jinmei b10-xfrin now installs IXFR differences into the underlying data source (if it supports journaling) so that the stored differences can be used for subsequent IXFR-out transactions. Note: this is a backward incompatibility change for older sqlite3 database files. They need to be upgraded to have a "diffs" table. (Trac #1376, git 1219d81b49e51adece77dc57b5902fa1c6be1407) 320. [func]* vorner The --brittle switch was removed from the bind10 executable. It didn't work after change #316 (Trac #213) and the same effect can be accomplished by declaring all components as core. (Trac #1340, git f9224368908dd7ba16875b0d36329cf1161193f0) 319. [func] naokikambe b10-stats-httpd was updated. In addition of the access to all statistics items of all modules, the specified item or the items of the specified module name can be accessed. For example, the URI requested by using the feature is showed as "/bind10/statistics/xml/Auth" or "/bind10/statistics/xml/Auth/queries.tcp". The list of all possible module names and all possible item names can be showed in the root document, whose URI is "/bind10/statistics/xml". This change is not only for the XML documents but also is for the XSD and XSL documents. (Trac #917, git b34bf286c064d44746ec0b79e38a6177d01e6956) 318. [func] stephen Add C++ API for accessing zone difference information in database-based data sources. (Trac #1330, git 78770f52c7f1e7268d99e8bfa8c61e889813bb33) 317. [func] vorner datasrc: the getUpdater method of DataSourceClient supports an optional 'journaling' parameter to indicate the generated updater to store diffs. The database based derived class implements this extension. (Trac #1331, git 713160c9bed3d991a00b2ea5e7e3e7714d79625d) 316. [func]* vorner The configuration of what parts of the system run is more flexible now. Everything that should run must have an entry in Boss/components. (Trac #213, git 08e1873a3593b4fa06754654d22d99771aa388a6) 315. [func] tomek libdhcp: Support for DHCPv4 packet manipulation is now implemented. All fixed fields are now supported. Generic support for DHCPv4 options is available (both parsing and assembly). There is no code that uses this new functionality yet, so it is not usable directly at this time. This code will be used by upcoming b10-dhcp4 daemon. (Trac #1228, git 31d5a4f66b18cca838ca1182b9f13034066427a7) 314. [bug] jelte b10-xfrin would previously initiate incoming transfers upon receiving NOTIFY messages from any address (if the zone was known to b10-xfrin, and using the configured address). It now only starts a transfer if the source address from the NOTIFY packet matches the configured master address and port. This was really already fixed in release bind10-devel-20111014, but there were some deferred cleanups to add. (Trac #1298, git 1177bfe30e17a76bea6b6447e14ae9be9e1ca8c2) 313. [func] jinmei datasrc: Added C++ API for adding zone differences to database based data sources. It's intended to be used for the support for IXFR-in and dynamic update (so they can subsequently be retrieved for IXFR-out). The addRecordDiff method of the DatabaseAccessor defines the interface, and a concrete implementation for SQLite3 was provided. (Trac #1329, git 1aa233fab1d74dc776899df61181806679d14013) 312. [func] jelte Added an initial framework for doing system tests using the cucumber-based BDD tool Lettuce. A number of general steps are included, for instance running bind10 with specific configurations, sending queries, and inspecting query answers. A few very basic tests are included as well. (Trac #1290, git 6b75c128bcdcefd85c18ccb6def59e9acedd4437) 311. [bug] jelte Fixed a bug in bindctl where tab-completion for names that contain a hyphen resulted in unexpected behaviour, such as appending the already-typed part again. (Trac #1345, git f80ab7879cc29f875c40dde6b44e3796ac98d6da) 310. [bug] jelte Fixed a bug where bindctl could not set a value that is optional and has no default, resulting in the error that the setting itself was unknown. bindctl now correctly sees the setting and is able to set it. (Trac #1344, git 0e776c32330aee466073771600390ce74b959b38) 309. [bug] jelte Fixed a bug in bindctl where the removal of elements from a set with default values was not stored, unless the set had been modified in another way already. (Trac #1343, git 25c802dd1c30580b94345e83eeb6a168ab329a33) 308. [build] jelte The configure script will now use pkg-config for finding information about the Botan library. If pkg-config is unavailable, or unaware of Botan, it will fall back to botan-config. It will also use botan-config when a specific botan library directory is given using the '--with-botan=' flag (Trac #1194, git dc491833cf75ac1481ba1475795b0f266545013d) 307. [func] vorner When zone transfer in fails with IXFR, it is retried with AXFR automatically. (Trac #1279, git cd3588c9020d0310f949bfd053c4d3a4bd84ef88) 306. [bug] stephen Boss process now waits for the configuration manager to initialize itself before continuing with startup. This fixes a race condition whereby the Boss could start the configuration manager and then immediately start components that depended on that component being fully initialized. (Trac #1271, git 607cbae949553adac7e2a684fa25bda804658f61) 305. [bug] jinmei Python isc.dns, isc.datasrc, xfrin, xfrout: fixed reference leak in Message.get_question(), Message.get_section(), RRset.get_rdata(), and DataSourceClient.get_updater(). The leak caused severe memory leak in b10-xfrin, and (although no one reported it) should have caused less visible leak in b10-xfrout. b10-xfrin had its own leak, which was also fixed. (Trac #1028, git a72886e643864bb6f86ab47b115a55e0c7f7fcad) 304. [bug] jelte The run_bind10.sh test script now no longer runs processes from an installed version of BIND 10, but will correctly use the build tree paths. (Trac #1246, git 1d43b46ab58077daaaf5cae3c6aa3e0eb76eb5d8) 303. [bug] jinmei Changed the installation path for the UNIX domain file used for the communication between b10-auth and b10-xfrout to a "@PACKAGE@" subdirectory (e.g. from /usr/local/var to /usr/local/var/bind10-devel). This should be transparent change because this file is automatically created and cleaned up, but if the old file somehow remains, it can now be safely removed. (Trac #869, git 96e22f4284307b1d5f15e03837559711bb4f580c) 302. [bug] jelte msgq no longer crashes if the remote end is closed while msgq tries to send data. It will now simply drop the message and close the connection itself. (Trac #1180, git 6e68b97b050e40e073f736d84b62b3e193dd870a) 301. [func] stephen Add system test for IXFR over TCP. (Trac #1213, git 68ee3818bcbecebf3e6789e81ea79d551a4ff3e8) 300. [func]* tomek libdhcp: DHCP packet library was implemented. Currently it handles packet reception, option parsing, option generation and output packet building. Generic and specialized classes for several DHCPv6 options (IA_NA, IAADDR, address-list) are available. A simple code was added that leverages libdhcp. It is a skeleton DHCPv6 server. It receives incoming SOLICIT and REQUEST messages and responds with proper ADVERTISE and REPLY. Note that since LeaseManager is not implemented, server assigns the same hardcoded lease for every client. This change removes existing DHCPv6 echo server as it was only a proof of concept code. (Trac #1186, git 67ea6de047d4dbd63c25fe7f03f5d5cc2452ad7d) 299. [build] jreed Do not install the libfake_session, libtestutils, or libbench libraries. They are used by tests within the source tree. Convert all test-related makefiles to build test code at regular make time to better work with test-driven development. This reverts some of #1901. (The tests are ran using "make check".) (Trac #1286, git cee641fd3d12341d6bfce5a6fbd913e3aebc1e8e)