Changes per version¶
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¶
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
andAll_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 ofIgnoreMessage
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.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¶
ProtocolElement.parse()
and theload_from()
methods it uses no longer callProtocolElement.validate()
because every (nested) element validating everything all the time is rather inefficient. Now callers are supposed to callProtocolElement.validate()
themselves (if they want to).- We no longer use
abc
andABCMeta
. It turned out that all the run-time validation it did caused a ±20% slow down.
0.9.4 - 2016-08-04¶
New features¶
- Added support for the RFC 6939 client link-layer address relay option
- Added support for the RFC 4580 subscriber-id relay option
- Added support for the RFC 6334 DS-Lite AFTR tunnel endpoint name option
- Added support for the RFC 7598 MAP options
- Added support for
linklayer_id
andsubscriber_id
in Static-csv and Static-sqlite
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
andstats-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()
andencode_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
withinterface_name
str
, providinginterface_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 theMessageHandler
toworker
. It gives a cleaner API and helps with statistics counting. - Added
statistics
and updatedworker
andMessageHandler
to update relevant counters.
0.9.0 - 2016-07-16¶
- A complete rewrite of the DHCPv6 server with a new configuration style.