= Kea 1.2.0-beta, April 7 2016, Release Notes = Welcome to the 1.2.0-beta release of Kea. Kea is a new DHCP implementation being developed by Internet Systems Consortium, Inc. that features fully functional DHCPv4 and DHCPv6 servers, a dynamic DNS update daemon, a Control Agent (CA) that provides REST API to control DHCP servers, an example shell client to connect to the CA and a DHCP performance measurement tool. Both DHCP servers fully support server discovery, address assignment, renewal, rebinding, release, decline, information request, DNS updates, client classification and host reservations. The DHCPv6 server also supports prefix delegation. Lease information can be stored in a MySQL, PostgreSQL or Cassandra database; it can also be stored in a CSV file. Host reservations can be stored in the configuration file; they can also be stored in a MySQL or PostgreSQL database. Version 1.2.0-beta adds the following features to Kea: * Control Agent - is an optional daemon that can connect to command channels exposed by DHCPv4 and DHCPv6 (this capability in DDNS module is coming soon) and exposes it over REST API. It uses a clean, easy to use HTTP interface that receives commands defined in JSON syntax. A number of existing commands are available, with more being planned for each upcoming releases. * kea-shell - is an example client that can connect to CA. It is a tool that is mostly intended to be used in scripts, but can also be used to send commands manually. It is written in Python (supports both 2.x and 3.x), is optional (no python needed by default) and serves as an illustration on how to take advantage of the REST API. Any software or environment that can form JSON commands and send them over an HTTP interface can take advantage of the new API. * parser refactoring - Part of the Kea code that was responsible for understanding configuration files was very complex, difficult to understand and even more difficult to extend. With the introduction of the REST API and its new commands, new use cases appeared when a file on disk is not the only possible source of configuration. Therefore the Kea team spent significant effort to refactor configuration handling. The code is now much leaner, simpler and much more extensible. There are some user visible benefits, too: you can now use C++ (!//) and C (/* ... */) comments everywhere. C style comments can span multiple lines. It is also now possible to include other files in your configuration file. The default values for absent parameters are now clearly defined and many additional sanity checks have been implemented. Finally, the configuration error messages are now more descriptive and easier to understand. * new commands - a number of new commands have been implemented. In particular, it is now possible to update (config-set), retrieve (config-get) or write the current configuration to disk (config-write). It is possible to list supported command (list-commands), check version (version-get) information or compilation details that cover dependencies versions (build-report) and more. Commands previously available only over command channel API are now also available over REST API. * configuration test - A capability to test new configuration has been added. This works both from the command-line (see -t switch), via REST interface and command channel API (see config-test command). * options in pools - It is now possible to specify options on a pool level. * C++11 - Kea 1.2-beta is the first Kea release that requires C++11 support in your compiler. * Overall 113 tickets and 15 pull requests on github have been closed. == License == Kea 1.1.0 has been released under the Mozilla Public License, version 2.0. https://www.mozilla.org/en-US/MPL/2.0 == Download == The Kea 1.2.0-beta source may be downloaded from: http://ftp.isc.org/isc/kea/1.2.0-beta/kea-1.2.0-beta.tar.gz A PGP signature of the distribution is at http://ftp.isc.org/isc/kea/1.2.0-beta/kea-1.2.0-beta.tar.gz.sha512.asc The signature was generated with the ISC code signing key which is available at https://www.isc.org/about/openpgp ISC provides detailed documentation, including installation instructions and usage tutorials in the Kea Administrator Reference Manual. Documentation is included with the installation or via http://kea.isc.org/docs in HTML, plain text, or PDF formats. ISC maintains a public open source code tree at https://github.com/isc-projects/kea and wiki pages with roadmap and issue tracking at http://kea.isc.org. Limitations and known issues with this release can be found at http://kea.isc.org/wiki/KeaKnownIssues We'd like users of this software to please let us know how it worked for you and what operating system you tested on. Feel free to share your configuration or use case. Also we would like to hear whether the documentation is adequate and accurate (please open tickets for documentation omissions and errors). We want to hear from you even if everything worked. == Support == Professional support for Kea is available from ISC. Free best-effort support is provided by our user community via a mailing list. Information on all public email lists is available at https://www.isc.org/community/mailing-list If you have any comments or questions about working with Kea, please share them to the Kea Users List https://lists.isc.org/mailman/listinfo/kea-users. Bugs and feature requests may be submitted via the ticket tracking system at http://kea.isc.org == Changes == The following summarizes changes and important upgrade notes since the previous release (1.1.0). (See the git history for more details and additional development.) 1238. [build] tmark,tomek Library version numbers bumped for release. (Trac #5201 git 58c9c5b705d72031c1589c30c542384a9d43e0f3) 1237. [bug] marcin Fixed hanging Control Agent unit tests. (Trac #5200, git 65daafd135965f9eb0bd4c3a22085d4bd3c6ffbe) 1236. [build] zeitounator Improvements in tools/tests_in_valgrind.sh script. (Github #49, git 272e7babf9ebeab5f78850394d72c9431041e2e9) 1235. [func] MrMarvin kea-admin now supports -h (and --host) parameter that can specify MySQL or PostgreSQL database locations other than the default localhost. (Github #14, git 4038157a3499ad90956c98a2172c57b173f2b985) 1234. [build] fdupont Improved installation procedure for kea-shell. (Trac #5170, git 68a902fb723965ee6f5b7a8272224395917525cc) 1233. [doc] marcin Documented new component Kea Control Agent in the Administrator's Manual and the Developer's Guide. (Trac #5175, git abf7887ad65eb4b221a1fe61ea0c9773b4feaddb) 1232. [func] tomek host4_identifier and host6_identifier hook points have been added. Premium: Flexible Identifier (flex-id) hook point has been developed. It allows users to specify a custom expression that takes any option, field, characteristic or property of the packet to be used as identifier and then do reservations based on the evaluated expression for each incoming packet. (Trac #5132, git cd497526d5bff7ae55bb41c9264fb33943a0cf62) 1231. [func] marcin Control agent forwards commands to be handled by other Kea servers. (Trac #5078, git 19a50ed1ccafae19ef10d84cba73992cadf49753) 1230. [bug] fdupont kea-dhcp-ddns now correctly populates the original ID in the TSIG rdata when doing signed updates. Prior to this the value was set to zero causing PowerDNS to reject then requests with a bad key error. (Trac #5071, git cafa3d5c24f0112b0b9384a9c1083fe8a3eeb2bf) 1229. [func] fdupont A new command: config-test has been implemented in DHCPv4, DHCPv6 and control agent servers. It allows checking whether new configuration looks correct. (Trac #5150, git 5f6cf226e848baef8d9af64e16c1dbf617a0a798) 1228. [bug] fdupont Logging on syslog now uses correctly the given facility. If none is given the default facility is local0, and with an unrecognized value user (log4cplus default). The syslog openlog() ident parameter is the program name. (Trac #5053, git 532d9f0e459ab1450a83a5015a2dd54745794383) 1227. [func] fdupont, tomek Additional commands: version-get, build-report have been implemented for DHCPv4, DHCPv6 and Control Agent components. Control Agent also now supports shutdown command. (Trac #102, git 9d2b8326fc032876d74c1768c61c630987c25cc5) 1226. [func] fdupont Command line option -t support added to libprocess and implemented for kea-dhcp-ddns and kea-ctrl-agent. It allows configuration sanity checking. Note that some parameters, such as ip-address, port, and DNS server addresses for instance for kea-dhcp-ddns are not fully checked as sockets are not opened or connections are not attempted. (Trac #5152, git 2231d79ebebd3cdf432cd4a8ac32018d180e27b6) 1225. [func] tomek Two new commands: config-get (retrieves current configuration) and config-write (writes current configuration to disk) have been implemented. (Trac #5151, git ffb26811736a2ae6f9b5556b9823aa284b7e0aec) 1224. [func] fdupont toElement(), a crucial functionality for upcoming get-config and write-config command, has been implemented. (Trac #5114, git df38c26f957c9ac329718ac9d70ffbcf7b95c4e9) 1223. [func] tomek Kea-shell, a management client able to connect to REST interface provided by Control Agent, has been added. Control Agent now uses bison parser, which provides better sanity checks, improved comments and file inclusions. (Trac #5137, git 816dc5ccfa374bd9942a49c7bac475f6d0523caa) 1222. [func] fdupont Obsolete parameter 'allow-client-update' has been removed from DHCPv4 and DHCPv6 components. (Trac #5145, git 01fde297a978e2bd832655ac7276e5aa3a7e8400) 1221. [func] tomek Control agent is now able to parse the input configuration and store it in its configuration syntax structure. Upcoming tickets will take advantage of that information. (Trac #5134, git 828304f2f408888e4b096418e90e35ba524979d0) 1220. [func] parisioa, fdupont, tomek DHCPv4 and DHCPv6 parsers have updated to accept database port parameter. The parameter for Cassandra is now called "contact-points" (was "contact_points" previously). (Trac #5061, git d12b6f4a6d80d6bc854f2a8a086e412dc37867bc) 1219. [func] marcin Control Agent uses libkea-http to process commands over the RESTful interface. (Trac #5107, git 88ce715926a46b6b3832630116fc7782adc46c7b) 1218. [func] tmark, tomek Configuration parsing for D2 has been migrated to bison/flex and the SimpleParser framework. This includes changes to libprocess which render the CPL agnostic to the underlying parsing mechanisms. (Trac #5110, git feb2cedc0936364a923ab78542a21114533dd0f5) 1217. [func] marcin Implemented libkea-http library. (Trac #5077, git cd72284b5b221e620770883db7e166c4d3ba7eb6) (Trac #5088, git 715d18f961801ffbd798a65b19459178c3a53857) (Trac #5099, git 7e8df7993f295431e2cb6a13858f746649c4e18d) 1216. [func] fdupont, tomek Command line option -t implemented for DHCPv4 and DHCPv6. It allows configuration sanity checking. Note that not all parameters are completely checked. In particular, service and control channel sockets are not opened, and hook libraries are not loaded. (Trac #3770, git 1d12582e270935ee7b72548d9c66753f4eea4ca4) 1215. [doc] tomek Developer's Guide updated to cover flex/bison parser. (Trac #5112, git 44139d821c1f4e43dbff22d49101a0854e4f9f5b) 1214. [func] tomek Bison parser implemented for Control-agent. The code is able to syntactically parse input configuration, but the output is not used yet. (Trac #5076, git d99048aa5b90efa7812a75cdae98a0913470f5a6) 1213. [bug] fdupont Option string values containing comma can now be specified correctly by preceding comma with double backslashes (e.g. "foo\\,bar"). (Trac #5105, git fa79ac2396aa94d7bac91bd12d3593ebaaa9386d) 1212. [doc] andreipavelQ Many spelling corrections. (Github #47, git a6a7ca1ced8c63c1e11ef4c572f09272340afdd7) 1211. [func] andreipavelQ Updated PostgreSQL version reporting to be in line with MySQL and Cassandra. (Github #42, git 7ef4a190facadd66775b4a44c696d1c4215616cd) 1210. [doc] andreipavelQ Doxygen version updated to 1.8.11. (Github #45, git ce72998382b62269823fa0dcbfa41dfa9c72b69e) 1209. [func] tomek Relay options are now printed in DHCPv6 when sufficiently detailed debug logging is requested. (Trac #5131, git 5bf58b21fcf07f2e2e97275efa1f76cde913b30a) 1208. [func] tomek Global DHCPv4 and DHCPv6 parsers have been migrated to the SimpleParser framework. Several parameters (renew-timer, rebind-timer, preferred-lifetime, valid-lifetime, match-client-id, next-server, decline-probation-period, dhcp4o6-port, echo-client-id) now have explicit default values. (Trac #5019, git f3538dd031e6f29abcd516f425d72c8f929abbb0) 1207. [func] fdupont Client classes parser migrated to SimpleParser. The 'name' parameter in 'client-classes' definitions is now mandatory. (Trac #5098, git e93906e48a6e2b0ff78c5e37dca642646fe47d43) 1206. [func] tomek 'hooks-libraries' parser migrated to SimpleParser. The code will now refuse a configuration if a hook library fails to load. (Trac #5031, #5041, git 1bbaf4cbcf6fda59bacdf526a6c762315fdd88a1) 1205. [func] tomek Parsers for interfaces configuration converted to SimpleParser. Removed obsolete 'version' parameter in Dhcp6. (Trac #5020, #5038, git 3d8e48c640e302670c04907468d11faafbe9fe7b) 1204. [func] marcin Added 'control_command_receive' hook point to Kea Command Manager. (Trac #5100, git d0c7cb29a7df3588c540afb4ca56de55f26142e0) 1203. [func] marcin Implemented TCPAcceptor class in libkea-asiolink. This class provides means to listen and asynchronously accept new TCP connections. (Trac #5094, git 920ba90696ba9d8579a7db5e1efcf955d6654a96) 1202. [func] tomek Parsers for mac-sources, control-socket, and relay-info converted to SimpleParser. It is no longer accepted to specify empty mac-sources. Either specify actual values in mac-sources or don't specify mac-sources at all. (Trac #5032, git f1c9dee0936b48be28f890ffd428fbdeb87c12ea) 1201. [func] tmark kea-dhcp4 and kea-dhcp6 now support the "set-config" command. The command causes the server to replace its current configuration with the configuration supplied as the command's argument. (Trac #5046, git 4afbdcf89c9f83d944f774d05bd401d3f2768d10) 1200. [func] tmark kea-dhcp4 and kea-dhcp6 now support the Command Channel "libreload" command. The command causes the server to unload and then load all currently loaded hook libraries. (Trac #3238, git d4d8665494e1847b34b66f8ef542851ea6f0213c) 1199. [func] tomek, fdupont Dhcp4 parser migrated to bison. This yields a number of user visible changes: - better comment handling (bash, C, C++ style comments) - file includes now supported - better syntax checking - added advanced.json config example - removed obsolete 'version' parameter (Trac #5017, git 1cf853c595a100c86f9b2b3353f1b5964d902147) 1198. [func] marcin Created kea-ctrl-agent. This application currently doesn't do anything. Future tickets will add REST API to allow for managing Kea services. (Trac #5075, git 1ec7586da5ae1474b52d5a395fb80ee37d6d568e) 1197. [doc] tomek Configuration examples now set lfc-interval to a default value of one hour. (Trac #5072, git cf4362196fa2b7892643d1e40b974bb450a3de7e) 1196. [func] tomek, fdupont Dhcp6 parser migrated to bison. This yields a number of user visible changes: - better comment handling (bash, C, C++ style comments) - file includes now supported - better syntax checking (Trac #5036, git 4c5902da95a5228275cdb151b357864cfa9c31f5) 1195. [build] fdupont Altered to compile in C++ 2011 standard mode. Also replace (most) instances of the deprecated std::auto_ptr with std::unique_ptr. (Trac #5066, git a060d4a983860bf3056d50d9bf7ee4355c8372f2) 1194. [build] marcin Moved StateModel class from D2 to libkea-util. (Trac #3175, git 270ec379aec2894104a299cdd1080e24007e25fb) 1193. [doc] stephen Update Hook Developers documentation to make it clearer where the Kea include files and libraries are located. (Trac #5069, git 14a78caaf3af9fe9a0ffe2c8af784eab78e813e0) 1192. [build] marcin Created libkea-process library and moved the Controllable Process Layer (CPL) from D2 to this new library. (Trac #5074, git 4563925f7966e9da2132eb427e742cc3d3feee5d) 1191. [build] tomek Optional support for premium package added. (Trac #5027, git 5ff51f28a1f05d941bb117986922a6f410f23c6c) 1190. [func] tomek User context implemented: an arbitrary user information can now be defined for address and prefix pools. (Trac #5023, git 4f81789e19b72c933bcf86e402b417c63bd7bd3f) 1189. [func] fdupont Owing to API changes, crypto code now requires OpenSSL 1.0.1 or later. (Trac #3908, git 4c14fdfd4187a4c8f7b775432082b76782e47663) 1188. [doc] vlegout Fixed several spelling mistakes. (Github #32, git d51c005519c4add6fd0c37bcd68b0fbe94941b2d) 1187. [bug] marcin DHCPv4 server allows for allocating multiple leases for the same hardware address if a different client identifier is used for each lease. This facilitates the PXE boot use cases where a booted machine may request a lease multiple times. (Trac #5029, git 03defed4d8bb9a997d31dbfcf30ae3f866bd3353) 1186. [func] marcin Support for DHCPv6 options defined in RFC6603 and RFC7598. Thanks to Andrei Pavel and Cristian Secareanu of Qualitance for submitting initial implementation. (Trac #github24, git 59b62eb3ddd9db62c04bd47cd8fbdc1af62fbc1b) 1185. [build] marcin Install Kea headers to be used for building external libraries. Before this change some required headers were not installed. (Trac #5055, git a46087b7b7face4a1318658bbdcbf7602c1bb729) 1184. [bug] eest Fixes in the occasionally failing LFC unit test. This fix was provided by Patrik Lundin. (Github #31, git 69a5722bf3b41bf3b2bc0c2bcac966c23c08f62d) 1183. [bug] tmark kea-dhcp4 now correctly loads declined leases from CSV lease files. Prior to this, declined leases were being incorrectly and silently discarded. In addition, both kea-dhcp4 and kea-dhcp6 will now emit an error log for each invalid row encountered when loading leases from CSV files. (Trac #5058, git 29b088079bed3c5059fdf8a43a4e79cd7f9a4207) 1182. [func] marcin DHCP servers detect overlapping pool ranges during configuration. (Trac #2280, git c8f931e0189c9630f5fba5d2a5553bed4abf36f7) 1181. [func] marcin Extended DHCPv6 server to allow for specifying DHCP options on address and prefix pool levels. (Trac #5022, git e3b2785c79aedbb0c8af7468d61f6d61dafd2282) Thank you again to everyone who assisted us in making this release possible. If you would like to contribute to ISC to assist us in continuing to make quality open source software, please visit our donations page at http://www.isc.org/donate-to-isc/. We look forward to receiving your feedback.