4. Release notes

This documentation corresponds to Lease version 1.99.15.20260531075356.32922aefed.

4.1. Dora 1.99.15

The following are release notes for Dora 1.99.15:

  • RT1951: Add Debian installation instructions to the user manuals

  • RT1941: Rename Lease to Dora

  • RT1760: Remove dhclient program

  • RT1937: Make DHCP programs log using the Loop log module

  • RT1940: Use the internal global app context in liblease

  • RT1760: Use integer initializers

  • RT1760: Remove incorrect text from dhcpd.conf(5) manpage

  • RT1931: Add Ubuntu Resolute Raccoon to supported platforms

  • RT1929: Fix Debian packaging errors

4.2. Lease 1.99.14

The following are release notes for Lease 1.99.14:

  • RT1760: Use IPTOS_DSCP_EF instead of IPTOS_LOWDELAY

  • RT1760: Set DF bit on outgoing datagrams over LPF/BPF

  • RT1760: Use a flag to indicate fallback interface instead of string compares

  • RT1760: Rename taskmgr worker threads to "work-%hu"

  • RT1760: Further cleanup redundant errno to result conversion

  • RT1760: Remove the redundant uerr2isc()

  • RT1760: Remove obsolete IGNORE_HOSTUNREACH handling

  • RT1760: Fix argument to SO_BINDTODEVICE which should be the interface name

  • RT1922: Add CLI args for network I/O method selection

  • RT1760: Send responses to yiaddr when client isn't requesting broadcast

  • RT1760: Set BIOCSDIRECTION on BPF sockets

  • RT1760: Fix interface return in the BPF implementation

  • RT1921: Compile multiple network I/O methods

  • RT1760: Fix interface selection code when binding to INADDR_ANY

  • RT1760: Use ISC_LIST instead of custom list implementation

  • RT1760: Use loop_refcount for references in Lease socket code

  • RT1760: Send response to source IP if client knows its address

  • RT1760: Fix BPF implementation

  • RT1760: Set interface index in the interface struct

  • RT1760: Update text in dhcpd(8) manpage

  • RT1760: Cleanup BPF implementation

  • RT1760: Allow IFT_LOOP for testing on FreeBSD

  • RT1760: Add missing includes for FreeBSD

  • RT1920: Implement socket multi-interface support for Linux and FreeBSD

  • RT1760: Save the interface index

  • RT1760: Drop Solaris-specific interface scanning code

  • RT1760: Indent comments properly

  • RT1760: Remove SCO-specific IP_BROADCAST_IF socketopt

  • RT1760: Remove cdefs.h

  • RT1760: Remove osdep.h

  • RT1760: Remove site.h

  • RT1760: Stop using obsolete byte order macros

  • RT1760: Remove obsolete comment

  • RT1760: Cleanups

  • RT1760: Remove obsolete macros

  • RT1760: Use FD_CLOEXEC instead of the value 1 in fcntl() calls

  • RT1760: Remove support for FDDI

  • RT1760: Remove support for Token Ring

  • RT1760: Remove netinet headers from tree

  • RT1760: Add brackets around return argument

  • RT1760: Add brackets around sizeof operand

  • RT1760: Update coding style of the Lease code to the Loop style

  • RT1760: Delete trailing whitespace

  • RT1760: Update text on db-time-format

  • RT1760: Remove unused macros and protos

  • RT1760: Remove obsolete local definition of SHUT_RD

  • RT1760: Remove snprintf()/vsnprintf() hacks

  • RT1760: Update message about authoring-byte-order

  • RT1760: Remove LDAP support

  • RT1760: Add back all of the socket IO code for use in testing

  • RT1760: Add comment

  • RT1760: Remove obsolete macros

  • RT1760: Always build DNS zone lookup support

  • RT1760: Remove remnants of DDNS_UPDATE_STYLE_AD_HOC

  • RT1760: Always build DNS UPDATE support

  • RT1760: Always include pid in log messages

  • RT1760: Update configure macro message

  • RT1760: Always build delayed ack support

  • RT1760: Turn off delayed ack if the delayed-ack count is configured as 0

  • RT1760: Modify code to support DHCP4o6 even when delayed acks are enabled

  • RT1760: Always build failover protocol support

  • RT1760: Always check if byteorder of the secs field is swapped

  • RT1918: Fix section title syntax error

4.3. Lease 1.99.13

The following are release notes for Lease 1.99.13:

  • RT1909: Remove reference count debugging code: this relic from another era just cluttered up the code everywhere; we will also switch to using atomic refcounts in a future release

  • RT1760: Remove unnecessary macros

  • RT1908: Remove tracing code from Lease: this relic from another era just cluttered up the code everywhere. Modern debugging tools do a better job.

  • RT1907: Refactor all of the TSIG algorithm parsing code: this change makes Loop use a single consistent set of TSIG algorithms, and also adds support for HMAC-SHA1, HMAC-SHA256, HMAC-SHA384, HMAC-SHA512 to the DHCP DDNS code

  • RT1760: Fix fallthrough warnings

  • RT1760: Fix warnings about format string conversion specifiers

  • RT1760: Fix warning about snprintf() truncation

  • RT1760: Fix warnings about incompatible function types

  • RT1760: Fix shadowed variable warnings

  • RT1760: Don't pass the format string

  • RT1760: Move declarations to top

  • RT1760: Fix warnings about const discards

  • RT1760: Fix cast from ptr to int

  • RT1760: Remove unused functions

  • RT1760: Fix warning about strncpy() overflow

  • RT1760: Fix warnings about returning aggregates

  • RT1760: Fix warnings in dhcrelay

  • RT1760: Fix signed vs. unsigned comparisons

  • RT1760: Remove old-style function definitions

  • RT1760: Make functions static

A lot of code cleanup and refactoring was done in this release. More to come.

4.4. Lease 1.99.12

The following are release notes for Lease 1.99.12:

  • RT1875: Add missing cocci files to dist

  • RT1870: Fix configure.ac warnings

  • RT1869: Update main copyrights to 2026

4.5. Lease 1.99.11

The following are release notes for Lease 1.99.11:

  • RT1840: Fix release notes text

4.6. Lease 1.99.10

The following are release notes for Lease 1.99.10:

  • RT1819: Fix Debian package homepage URLs

4.7. Lease 1.99.9

The following are release notes for Lease 1.99.9:

  • RT1812: Add Debian and Ubuntu to supported platforms

  • RT1801: Fix warning about possible thread name buffer overflow (pthread_setname_np())

  • RT1760: Remove socket interface code

  • RT1760: Remove unused socket code

  • RT1760: Remove raw socket implementation code

  • RT1760: Remove log messages about HP JetAdmin software

  • RT1760: Update text in manpage

  • RT1760: Remove NIT code

  • RT1760: Remove DLPI code

  • RT1760: Remove UPF code

  • RT1760: Move icmp.c function protos to icmp.h

  • RT1760: Remove local version of inet_aton()

  • RT1776: Use separate heap indexes for tracking active and inactive heaps

  • RT1777: Rename heap callback function types and args

  • RT1772: Refactor and port mdb6_unittest.c

  • RT1775: Save and restore lease's heap index

  • RT1774: Remove CYGWIN specific code

  • RT1771: Refactor and port duid_unittest.c

  • RT1770: Refactor and port leaseq_unittest.c

  • RT1769: Refactor and port simple_unittest.c

  • RT1768: Refactor and port load_bal_unittest.c

  • RT1767: Refactor and port hash_unittest.c

  • RT1766: Make libdhclient library

  • RT1765: Make libdhcpd library

  • RT1764: Refactor and port test_alloc.c

  • RT1763: Refactor and port ns_name_test.c

  • RT1762: Refactor and port misc_unittest.c

  • RT1761: Refactor and port dns_unittest.c

  • RT1760: Move ddns.c function protos to ddns.h

  • RT1760: Move dns.c function protos to dns.h

  • RT1760: Make repudiate_zone() statically scoped

  • RT1760: Make dns_zone_lookup() statically scoped

  • RT1760: Refactor dispatch()

  • RT1760: Add include

  • RT1760: Fix module name, etc.

  • RT1760: Prefix lease to function names

  • RT1760: Delete trailing whitespace

  • RT1760: Fix old style function decl

  • RT1760: Fix function args

  • RT1760: Cleanup includes

  • RT1760: Replace defines with enum

  • RT1760: Delete trailing whitespace

  • RT1760: Make variables static scoped

  • RT1760: Fix no previous prototype compiler warnings

  • RT1755: Add Debian packaging

  • RT1746: Fix user creation in RPM spec file for new RPM versions

  • RT1743: Disable parallel make in docs directories when using Sphinx

  • RT1742: Add installation.rst to EXTRA_DIST

  • RT1740: Update list of supported platforms

  • RT1738: Use standard C integer types

  • RT1737: Move leasechain protos to leasechain.h

  • RT1736: Remove unused resolv.c

4.8. Lease 1.99.8

The following are release notes for Lease 1.99.8:

  • RT1671: libevent and libzip deps are limited to just the border RPM package now.

4.9. Lease 1.99.7

The following are release notes for Lease 1.99.7:

  • RT1428: The packaging of Lease was updated. Lease is part of a source code tree with other components such as Loop and Border, and previously only Lease and Loop were packaged. Other components of the tree are also packaged now as part of a multi-package RPM spec file. The border-release package which installed the border-epel, border-epel-testing, border-fedora, and border-fedora-testing DNF package repositories and their package signing PGP key has been replaced with the akira-release package which installs the akira-epel, akira-epel-testing, akira-fedora, and akira-fedora-testing DNF package repositories and their package signing PGP key.

  • RT1672: A minor syntax error was fixed in the Lease RPM's post-installation script (it did not cause an actual issue other than the error report).

  • RT1613: All the programs of Loop and Lease were updated to use consistent command line options for version, verbosity, help, etc.

  • RT1618: DNS names were added to the list of items in the data and privacy section of the Loop and Lease user manuals.

To upgrade from a previous release of Lease on an RPM platform, first remove the obsolete border-release RPM:

$ sudo dnf remove border-release

Then, install the akira-release package as described in the installation instructions (see the chapter titled Installation). This will install the new DNF package repositories.

Then, upgrade the lease package, which should install it from the new DNF package repository:

$ sudo dnf upgrade lease

You may clean up the old Border Package Signer key using clean-rpm-gpg-pubkey:

$ sudo dnf install clean-rpm-gpg-pubkey
$ sudo clean-rpm-gpg-pubkey

4.10. Lease 1.99.6

This is the first release of Lease. Lease has been a part of a source code tree with other dependency components such as Loop for some time now, where it had been maintained with the extensive code refactoring that was done in the tree. It was not packaged for release previously.

The following are release notes for Lease 1.99.6:

  • RT1606: Lease packages are now built. Lease is part of a source code tree with other components such as Loop, and previously only Loop was packaged. Other components of the tree are also packaged now as part of a multi-package RPM spec file.

To install Lease, please see the chapter titled Installation.

4.11. Version numbering scheme

Dora version numbers have the grammar <MAJOR>.<MINOR>.<PATCH>.<COMMIT-TIMESTAMP>.<COMMIT-HASH>. The MAJOR and MINOR version numbers together represent a source code branch of Dora (see Version branches).

  • The MAJOR version number is incremented when configuration options, API, and behavior of features change compared to the existing version. Switching to a new MAJOR version may require modifying existing config files to make them compatible with the new version.

  • The MINOR version number is incremented when new configuration options, API, and features are introduced that are compatible with existing configuration options. Switching to a new MINOR version will not require modifying existing config files to make them compatible with the new version.

  • The PATCH version number is incremented when only bugs have been fixed in a new version. Switching to a new PATCH version will not require modifying existing config files to make them compatible with the new version.

  • The COMMIT-TIMESTAMP field is auto-generated and contains the UTC timestamp of the source code commit from which the Dora release was made. The timestamp value is formatted as YYYYMMDDHHMMSS, as the output of:

    date +%Y%m%d%H%M%S
    
  • The COMMIT-HASH field is auto-generated and contains the abbreviated commit hash of the source code commit from which the Dora release was made. The hash value is formatted as the output of:

    git log -n1 --reverse --pretty=%h
    

For example,

  • If you're upgrading from version 1.2.1 to version 1.4.0, Dora's config files should not require any changes. You may also check for new features that have become available in the 1.4 branch.

  • If you're upgrading from version 1.2.1 to version 2.0.0, it is possible that some of the contents of your existing config files may need changes. You may also check for new features that have become available in the 2.0 branch.

  • If you're upgrading from version 1.2.1 to version 1.2.4, Dora's config files should not require any changes. The newer version only contains bugfixes.

Note

During a major version's release series, features and/or programs scheduled for removal in the next major release may be marked as deprecated. They will however still be supported until the end-of-life of that major release.

4.11.1. Stable and development versions

Even-numbered minor versions indicate stable branch releases, whereas odd-numbered minor versions indicate development banch releases. For example,

  • 1.2.0 is a stable branch release,

  • 1.3.0 is a development branch release,

  • 1.99.0 is a development branch release,

  • 2.0.3 is a stable branch release, and

  • 2.1.1 is a development branch release.

Warning

Development branch releases should not be used in production as their features and interfaces may change. Development branch releases may not work properly, may have unexpected behaviors, may crash, etc.

4.12. Version branches

The following is information on current Dora branches.

Branch

Type

First release date

End-of-life date

1.99

Development

2024-12-10

To be announced

2.0

Stable

To be announced

To be announced

Development branches have no planned end-of-life. Typically, development on such branches is stopped when a new MINOR+1 or MAJOR+1 stable branch is created off it.

4.13. History of Dora

ISC DHCP was originally written by Ted Lemon under a contract with Vixie Labs with the goal of being a complete reference implementation of the DHCP protocol. Funding for this project was provided by Internet Systems Consortium. The first release of the ISC DHCP distribution in December 1997 included just the DHCP server. Release 2 in June 1999 added a DHCP client and a BOOTP/DHCP relay agent. DHCP 3 was released in October 2001 and included DHCP failover support, OMAPI, Dynamic DNS, conditional behaviour, client classing, and more. Version 3 of the DHCP server was funded by Nominum, Inc. The 4.0 release in December 2007 introduced DHCPv6 protocol support for the server and client.

After the project was abandoned upstream, Dora was started by a former Infoblox NIOS developer with the goal of upgrading the codebase to modern standards, and integrating better with Loop (which is a dependency of Dora). Dora forked from the last ISC-licensed ISC-DHCP codebase. While externally it resembles ISC-DHCP with its similar configuration language and programs, its code has undergone considerable changes and continues to evolve at a high rate.