Changes per version

1.0.8 - Unreleased

New features

Fixes

Changes for users

Changes for developers

1.0.7 - 2017-06-25

Fixes

  • Fix Debian and RPM dependencies
  • Fix unnecessary dependency on newer version of pkg_resources

1.0.6 - 2017-06-25

Fixes

  • Fix calculations of maximum domain name length
  • Deal with the release of ZConfig 3.2.0, which broke our ZConfig 3.1.0 previous hacks

Changes for users

  • Switch to idna with better IDNA implementation (it implements RFC 5891 instead of the obsolete RFC 3490)

Changes for developers

  • normalise_hex() now accepts bytes as input, for easier byte printing

1.0.5 - 2017-06-21

New features

  • Provide RPM repositories at https://repo.dhcpkit.org/
  • Add PD-Exclude option implementation
  • Add Client FQDN option implementation
  • Add Timezone options implementation
  • Add Relay Echo-Request option implementation
  • Add Relay Echo-Request option handler implementation

Fixes

  • Fixed Python type annotations in many places

Changes for users

  • Show LDRA relays when printing TransactionBundle
  • The DHCPv6 server will try to keep going when not running as root, it might sometimes work, for example when connecting to a VPP instance instead of the usual opening listening sockets on low ports

Changes for developers

  • Improve DNS handling: be explicit about difference between absolute and relative domain names
  • New UnknownProtocolElement available for more generic protocol parsing
  • All_DHCP_Relay_Agents_and_Servers and All_DHCP_Servers are now instances of IPv6Address instead of strings
  • Added an IgnoreMessage exception type so listeners can signal to the server that the received data is to be ignored
  • The IncompleteMessage exception is now a subclass of IgnoreMessage

1.0.4 - 2016-12-17

New features

  • Provide debian/ubuntu packaging with init/init.d/systemd scripts
  • Provide an extensive default configuration
  • Allow the control socket location to be overridden from the command line

Fixes

  • Improve ipv6-dhcpd to ipv6-dhcpctl communication when shutting down
  • Add missing copyright statement for RFC 7598
  • Fix Sphinx RFC reference

Changes for users

  • Allow unicast listening on ::1 for testing purposes

Changes for developers

  • Make python dependencies more accurate
  • Make building process for documentation more stable

1.0.3 - 2016-11-17

Fixes

  • Fix leasequery statistics output, also fixes Observium stats

1.0.2 - 2016-11-16

Why?

  • Re-release with updated changelog and status

1.0.0 - 2016-11-16

New features

  • Add rate limit handler to ignore obnoxious clients
  • Add implementation for the Leasequery and Bulk Leasequery protocols

Fixes

  • Ignore MAC address 00:00:00:00:00:00 when searching for a server-id
  • Fix finding the inner relay message in a RelayForwardMessage

Changes for users

  • Improve logging for ignored messages
  • The default log level now only logs errors, not warnings
  • Improve exception handling and logging for errors during worker initialisation

Changes for developers

  • Sending replies has been moved from the main process to the worker processes
  • Therefore OutgoingPacketBundle does no longer exist
  • Constants for status codes have been renamed to be more consistent, the old names have been deprecated and will be removed in the future
  • Tests have been moved under the dhcpkit module to be easier to import from other extensions (for example when they need a solicit message and packet to test with)
  • Added Leasequery and Bulk Leasequery messages, options and status codes
  • Leasequery needs RelayForwardMessages without a contained message, so allow that now
  • Code for privilege management have been moved to dhcpkit.common
  • Code for console logging has been moved to dhcpkit.common.logging
  • Replies are now sent directly from worker processes, not first handed back to the master and then sent from there
  • Refactor listeners and message handling to allow for TCP listeners and leasequery extensions
  • Open sockets with SO_REUSEADDR so we can restart quickly without having to wait for TIME_WAIT
  • Allow for multiple responses in transaction bundle, especially useful for TCP connections

0.9.5 - 2016-08-11

New features

  • 2.5x speed improvement.

Changes for developers

0.9.4 - 2016-08-04

New features

Fixes

  • Fix error where command line log-level argument was ignored.
  • Fix error that caused every message to be interpreted as received-over-multicast
  • Don’t block when the inbound queue is full, just drop the message and continue
  • Fixed an interface-id parsing bug in Static-csv and Static-sqlite
  • Allow UnknownOption in all options, otherwise we reject messages with options that contain unknown sub-options

0.9.3 - 2016-07-27

Fixes

  • Not all systems have a wheel group anymore, so don’t use that as a default group for the control socket.
  • Linux doesn’t support SIGINFO, and its functionality has become redundant with the new control socket functionality, so remove SIGINFO handling.

Changes for users

  • Critical errors are now always shown on stderr. Otherwise the server could crash without the user seeing the reason.

0.9.2 - 2016-07-27

Fixes

  • A packaging error slipped through the checks, and it turns out that crucial XML files weren’t packaged in previous 0.9.x versions. This has now been fixed.

0.9.1 - 2016-07-27

New features

  • It is now possible to use IDNs everywhere in DHCPKit, including configuration files.
  • Implement a domain socket to control the server process.
  • Added ipv6-dhcpctl(8) to control the server process through the domain socket.
  • Added a configuration section <statistics> to specify categories that you would like statistics on. Currently it is possible to gather statistics per interface, client subnet or relay.
  • Added stats and stats-json commands for ipv6-dhcpctl.

Changes for users

  • Create PID file /var/run/ipv6-dhcpd.pid by default.
  • Create domain socket /var/run/ipv6-dhcpd.sock control the server by default.

Changes for developers

  • Added support for Internationalized Domain Names (IDN) in parse_domain_bytes() and encode_domain().
  • Created ForOtherServerError as a subclass of CannotRespondError, to enable more accurate logging, and to make it possible to gather better statistics.
  • Replaced IncomingPacketBundle.interface_id bytes with interface_name str, providing interface_id for backwards compatibility.
  • Added relays property to more easily enumerate all the relays a message went through.
  • Moved responsibility of creating the TransactionBundle from the MessageHandler to worker. It gives a cleaner API and helps with statistics counting.
  • Added statistics and updated worker and MessageHandler to update relevant counters.

0.9.0 - 2016-07-16

  • A complete rewrite of the DHCPv6 server with a new configuration style.