- Fix Debian and RPM dependencies
- Fix unnecessary dependency on newer version of pkg_resources
- 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
- Switch to
idna
with better IDNA implementation (it implements5891
instead of the obsolete3490
)
normalise_hex
now accepts bytes as input, for easier byte printing
- 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
- Fixed Python type annotations in many places
- 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
- 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
- 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
- Improve ipv6-dhcpd to ipv6-dhcpctl communication when shutting down
- Add missing copyright statement for RFC 7598
- Fix Sphinx RFC reference
- Allow unicast listening on ::1 for testing purposes
- Make python dependencies more accurate
- Make building process for documentation more stable
- Fix leasequery statistics output, also fixes Observium stats
- Re-release with updated changelog and status
- Add rate limit handler to ignore obnoxious clients
- Add implementation for the Leasequery and Bulk Leasequery protocols
- Ignore MAC address 00:00:00:00:00:00 when searching for a server-id
- Fix finding the inner relay message in a RelayForwardMessage
- 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
- 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
- 2.5x speed improvement.
.ProtocolElement.parse
and the~.ProtocolElement.load_from
methods it uses no longer call.ProtocolElement.validate
because every (nested) element validating everything all the time is rather inefficient. Now callers are supposed to call.ProtocolElement.validate
themselves (if they want to).- We no longer use
abc
and~abc.ABCMeta
. It turned out that all the run-time validation it did caused a ±20% slow down.
- Added support for the
6939
client link-layer address relay option - Added support for the
4580
subscriber-id relay option - Added support for the
6334
DS-Lite AFTR tunnel endpoint name option - Added support for the
7598
MAP options - Added support for
~dhcpkit.ipv6.extensions.linklayer_id
and~dhcpkit.ipv6.extensions.subscriber_id
instatic-csv
andstatic-sqlite
- 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
andstatic-sqlite
- Allow UnknownOption in all options, otherwise we reject messages with options that contain unknown sub-options
- 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.
- Critical errors are now always shown on stderr. Otherwise the server could crash without the user seeing the reason.
- 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.
- 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
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.
- Create PID file /var/run/ipv6-dhcpd.pid by default.
- Create domain socket /var/run/ipv6-dhcpd.sock control the server by default.
- Added support for Internationalized Domain Names (IDN) in
~dhcpkit.utils.parse_domain_bytes
and~dhcpkit.utils.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~.IncomingPacketBundle.interface_name
str
, providing~.IncomingPacketBundle.interface_id
for backwards compatibility. - Added
~.TransactionBundle.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.
- A complete rewrite of the DHCPv6 server with a new configuration style.