Kea issueshttps://gitlab.isc.org/isc-projects/kea/-/issues2022-01-19T07:50:33Zhttps://gitlab.isc.org/isc-projects/kea/-/issues/21962.1.1 release2022-01-19T07:50:33ZAndrei Pavelandrei@isc.org2.1.1 release---
name: Release Checklist
about: Create a new issue using this checklist for each release
---
# Kea Release Checklist
This is thoroughly documented in [the Kea Release Process guide](https://wiki.isc.org/bin/view/QA/KeaReleaseProcess...---
name: Release Checklist
about: Create a new issue using this checklist for each release
---
# Kea Release Checklist
This is thoroughly documented in [the Kea Release Process guide](https://wiki.isc.org/bin/view/QA/KeaReleaseProcess).
## Pre-Release Preparation
Some of those checks and updates can be made before the actual freeze.
1. Check Jenkins results:
1. [x] Check Jenkins jobs for failures: [distcheck](https://jenkins.aws.isc.org/job/kea-dev/job/distcheck/), etc...
1. [x] Check [Jenkins Tests Report](https://jenkins.aws.isc.org/job/kea-dev/job/jenkins-tests-report/).
1. [x] Check [tarball check report](https://jenkins.aws.isc.org/job/kea-dev/job/tarball-internal/Kea_20Build_20Checks/)
1. [x] Check [Performance Test Results](https://jenkins.isc.org/job/kea-dev/job/performance/KeaPerformanceReport/) in Jenkins for drops in performance.
1. Check versioning, ask the development team if:
- the library versions are being updated
- `KEA_HOOKS_VERSION` is being updated
- [x] create an issue for that for developers in Gitlab
- script: [./tools/bump-lib-versions.sh](https://gitlab.isc.org/isc-projects/kea/-/blob/master/tools/bump-lib-versions.sh) Kea-q.w.e Kea-a.b.c (where `a.b.c` is the version to be released and `q.w.e` is the version previous to that)
1. Prepare Release Notes
1. [x] Create Release Notes on Kea GitLab wiki and notify @tomek about that. It should be created under "release notes" directory, like this one: https://gitlab.isc.org/isc-projects/kea/-/wikis/release%20notes/release-notes-2.1.0
1. [ ] Finish release notes and conduct its review
1. [ ] Run [release-pkgs-upload-internal](https://jenkins.aws.isc.org/job/kea-dev/job/release-pkgs-upload-internal/) and [release-pkgs-check-internal](https://jenkins.aws.isc.org/job/kea-dev/job/release-pkgs-check-internal/) to test repositories for correctness.
1. If a new Cloudsmith repository is used, make sure access tokens have been been synchronized from previous Cloudsmith repositories and to the [check-pkgs.py](https://gitlab.isc.org/isc-private/qa-dhcp/-/blob/master/kea/pkgs-check/check-pkgs.py) QA tool.
1. [x] Check if ReadTheDocs can build Kea documentation.
1. Trigger rebuilding docs on [readthedocs.org](https://readthedocs.org/projects/kea/builds) and wait for the build to complete.
The following steps may involve changing files in the repository.
1. [x] Run [update-code-for-release.py](https://gitlab.isc.org/isc-private/qa-dhcp/-/blob/master/kea/build/update-code-for-release.py) <br>
Example command: `GITLAB_KEA_TOKEN='...' GITLAB_KEA_PREMIUM_TOKEN='...' ./update-code-for-release.py 1.9.7 'Apr 28, 2021' ~/isc/repos/kea/` <br>
The script:
- creates Gitlab issue and MR for release changes
- adds release entries to ChangeLogs
- regenerates BNF grammar
- regenerates documentation
- regenerates messages
- reorders messages in alphabetical order
- regenerates parsers
- updates copyright dates
- pushes the changes to MR
1. Check manually User's Guide sections:
1. Chapter 1. Introduction
1. [x] On what platforms we are running tests using Jenkins? Update Supported Platforms in platforms.rst file.
1. [x] Did we add any additional 3rd party software? Update if needed
1. [x] Is there a new tool installed in bin or sbin released this time? If yes, is it documented?
1. Chapter 2. Quick Start
1. [x] Has the default installation process changed (for kea and hooks)? If yes, are those changes documented and highlighted in the release notes?
1. Chapter 3. Installation
1. [x] Check installation hierarchy (this is also automatically checked at the end of [ut-extended job](https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/))
1. [x] Check and update Build Requirements
1. [x] Check configure options against what `./configure -h` says
1. [x] Check ChangeLog entries in Kea main and premium: spelling, trailing whitespaces, etc.
1. [x] Check AUTHORS, INSTALL, README files in Kea main and premium.
- AUTHORS: update credits
- README: check "provides" with Release Notes, User Guide (1.3 Kea Software)
1. [x] If changes were made, commit the change, push the branch to the main repository and request a review. Once the changes have been approved, merge the MR to master.
## Build selection, tarballs upload and sanity checks
This is the last moment to freeze code! :snowflake:
1. [x] Go to [tarball-internal](https://jenkins.aws.isc.org/job/kea-dev/job/tarball-internal/) Jenkins job and pick the last tarball built - it will be a release candidate.
1. [x] Check tarball before requesting sanity checks from the development team.
1. Download tarballs from picked Jenkins build
1. Check hook libraries.
1. Are there any new hook libraries installed in this release?
1. Are they in the proper tarball? Premium or subscription?
1. Do they have their own package?
1. Check sizes - is the new package reasonable?
1. Check installation tree, compare it with the previous release
1. Check installed libraries.
1. which were updated? (save results)
1. Do any of the libraries from the current release have lower version than in the previous release?
1. Uninstall Kea, check what left (there should be just configuration files)
1. Check if all of the installed binaries has man page
1. if not, is it in the tarball?
1. are man page up-to-date?
1. Check if documentation is properly formatted, has correct versions and dates.
1. it's advised to search for previous version numbers, some of them are statically added in statements that are no longer valid
1. [x] Upload tarballs to repo.isc.org using Jenkins and send sanity checks request.
1. Go to [release-tarball-upload-internal](https://jenkins.aws.isc.org/job/kea-dev/job/release-tarball-upload-internal/) Jenkins job.
1. Click "Build with Parameters"
1. In field "Tarball" select picked tarball build
1. In field "Release_Candidate" pick:
1. rc1 if this is the first selected build for release, it will push the selected tarballs to repo.isc.org, to a directory suffixed with indicated rc#
1. next rc# if this is a respin after some fixes (note: it is not possible to pick previous rc number - it will result in an error)
1. final if the last rc number was ok, this will push the selected tarball to repo.isc.org, to a directory with no suffixes
1. Submit the job that will automatically:
1. Upload the tarballs <br>
and if this is not the final version:
1. Create a GitLab issue for sanity checks, put there the announcement
1. Send Sanity Checks announcement via email to dhcp-team@isc.org and to DHCP channel on Mattermost.<br>
The announcement includes:
- a link to chapter 4 Sanity Checks of the release process: [KeaReleaseProcess - SanityChecks](https://wiki.isc.org/bin/view/QA/KeaReleaseProcess#4.%20Sanity%20Checks)
- a link to the GitLab issue
- tarballs locations with SHA256 checksums
- rpm/deb packages locations and versions
## Releasing Tarballs and Packages
1. [x] Update Release Notes with ChangeLog entries
1. [x] Upload final RPM & DEB packages to cloudsmith.io
1. Go to [release-pkgs-upload-internal](https://jenkins.aws.isc.org/job/kea-dev/job/release-pkgs-upload-internal/).
1. Click "Build with Parameters" link
1. Pick your selected pkg build in Packages field, and select `PrivPubRepos: "both"`, `TestProdRepos: "production"` and click Build button.
1. When it finishes run check: [releases-pkgs-check-internal](https://jenkins.aws.isc.org/job/kea-dev/job/release-pkgs-check-internal/).
1. [x] Upload final tarballs to repo.isc.org
1. Go to [release-tarball-upload-internal](https://jenkins.aws.isc.org/job/kea-dev/job/release-tarball-upload-internal/) Jenkins job.
1. Click "Build with Parameters"
1. In field "Tarball" select picked tarball build
1. In field "Release_Candidate" pick final <br>
This job will also:
- open an issue on [the signing repository](https://gitlab.isc.org/isc-private/signing/-/issues) requesting signing final tarballs on repo.isc.org
- create Git tags `Kea-a.b.c` in Kea main and premium repositories
- send a signing request issue link on the DHCP Mattermost channel
1. [x] Update ReadTheDocs
1. Trigger rebuilding docs on [readthedocs.org](https://readthedocs.org/projects/kea/builds).
1. Publish currently released version. On the `Versions` tab, scroll down to `Activate a version`, search for `kea-a.b.c` and click `Activate`.
1. For stable releases, change the default version to point to this stable release.
1. [x] Mark Jenkins jobs with release artifacts to be kept forever: <br>
Go to the following Jenkins jobs, click release build and then, on the build page, click `Keep this build forever` button: <br>
1. [tarball-internal job](https://jenkins.aws.isc.org/job/kea-dev/job/tarball-internal/)
1. [pkg job](https://jenkins.aws.isc.org/job/kea-dev/job/pkg/)
1. [x] Create an issue and a merge request to bump up Kea version in `configure.ac` to next development version which could be, based on just released version `a.b.c`:
* `a.b.z-git` where `z == c + 1` or
* `a.y.0-git` where `y == b + 1` or
* `x.1.0-git` where `x == a + 1`
1. [x] Send a request for publishing the release on the Support Mattermost channel linking the Signing issue and the release checklist issue.
### On the Day of Public Release
- [x] ***(Support)*** Wait for clearance from Security Officer to proceed with the public release (if applicable).
- [x] ***(Support)*** Place tarballs in public location on FTP site.
- [x] ***(Support)*** Publish links to downloads on ISC website.
- [x] ***(Support)*** Write release email to *kea-announce*.
- [ ] ***(Support)*** Write email to *kea-users* (if a major release).
- [x] ***(Support)*** Send eligible customers updated links to the Subscription software FTP site.
- [ ] ***(Support)*** If it is a new `major.minor` version, SWENG will have created a new repo in Cloudsmith, which will need the customer tokens migrated from an existing repo. Then update support customers that this new private repo exists.
- [x] ***(Support)*** Update tickets in case of waiting for support customers.
- [ ] ***(QA)*** Inform Marketing of the release.
- [ ] ***(Marketing)*** If a new Cloudsmith repository is used, update the Zapier scripts.
- [ ] ***(Marketing)*** Upload Premium hooks tarball to SendOwl. Create a new product if a new branch, otherwise update existing product. Send notifications to existing subscribers of the new version.
- [ ] ***(Marketing)*** Announce on social media.
- [ ] ***(Marketing)*** Update [Wikipedia entry for Kea](https://en.wikipedia.org/wiki/Kea_(software)).
- [ ] ***(Marketing)*** Write blog article (if a major release).
- [ ] ***(Marketing)*** Update [Kea page on web site if any new hooks](https://www.isc.org/kea/).
- [ ] ***(Marketing)*** Update Kea Premium and Kea Subscription data sheets if any new hooks.
- [ ] ***(Marketing)*** Update [significant features matrix](https://kb.isc.org/docs/en/aa-01615) (if any significant new features).
- [ ] ***(Marketing)*** Update [Kea documentation page in KB](https://kb.isc.org/docs/en/kea-administrator-reference-manual).kea2.1.1Andrei Pavelandrei@isc.orgAndrei Pavelandrei@isc.orghttps://gitlab.isc.org/isc-projects/kea/-/issues/584Should not install YANG modules, kea-netconf.conf when --with-sysrepo is not ...2019-07-22T10:52:02ZTomek MrugalskiShould not install YANG modules, kea-netconf.conf when --with-sysrepo is not specified@ondrej reported some time ago that Kea always installs YANG modules and kea-netconf.conf, even when --with-sysrepo is not specified.@ondrej reported some time ago that Kea always installs YANG modules and kea-netconf.conf, even when --with-sysrepo is not specified.Kea1.6-beta2https://gitlab.isc.org/isc-projects/kea/-/issues/153Netconf agent development2018-11-07T06:16:52ZFrancis DupontNetconf agent developmentHome for MRs about netconf.Home for MRs about netconf.Kea1.5-beta1Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/65library for yang <-> json configuration element translators2018-11-05T09:44:05ZGhost Userlibrary for yang <-> json configuration element translatorsNew library with yang <-> json translators for representation of configuration elements.
A priori one fro `src/lib/dhcpsrv/parsers` parse class.New library with yang <-> json translators for representation of configuration elements.
A priori one fro `src/lib/dhcpsrv/parsers` parse class.Kea1.5-beta1Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/2886C++ API and SQL do not use the same column order2023-07-17T13:58:21ZFrancis DupontC++ API and SQL do not use the same column orderJust move the adding of pool_id before binaddr in create and last upgrade scripts.Just move the adding of pool_id before binaddr in create and last upgrade scripts.kea2.3.8Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/1748Old boost versions lack of generic TLS support2021-03-23T13:29:29ZFrancis DupontOld boost versions lack of generic TLS supportThe 2017/03/05 a "generic TLS" method was added to boost/asio/ssl/context_base.hpp which maps the OpenSSL TLS_method() described in the SSL_CTX_NEW manual page.
This ticket does two things:
- as an emergency measure switch to tlsv12 fr...The 2017/03/05 a "generic TLS" method was added to boost/asio/ssl/context_base.hpp which maps the OpenSSL TLS_method() described in the SSL_CTX_NEW manual page.
This ticket does two things:
- as an emergency measure switch to tlsv12 from tls.
- detects the support of the boost::asio::ssl::context::tls method in configure
Note the documentation should be updated to recommend to use a boost version with the support i.e. at least 1.64.0kea1.9.6Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1369Loss of MySQL CB connection causes Kea to segfault2020-08-12T19:23:56ZThomas MarkwalderLoss of MySQL CB connection causes Kea to segfaultThis is very easy to reproduce:
1. Configure kea-dhcp4 with valid MySQL CB parameters
2. Start kea, with MySQL up and running
3. After successful startup, stop MySQL
4. The first attempt to refresh CB detects a loss of connectivity
5. ...This is very easy to reproduce:
1. Configure kea-dhcp4 with valid MySQL CB parameters
2. Start kea, with MySQL up and running
3. After successful startup, stop MySQL
4. The first attempt to refresh CB detects a loss of connectivity
5. The second attempt segfaults. It appears to be trying to use a no longer viable connection
I did this with kea-dhcp4 but I am confident kea-dhcp6 crashes the same way. Apparently after the failure in step 4 we are not flagging the connection as failed?
The stack trace is attached
[mysql_cb_backtrace.txt](/uploads/411a3b0b72df7b67ba629ed6c305114b/mysql_cb_backtrace.txt)kea1.8.0Thomas MarkwalderThomas Markwalderhttps://gitlab.isc.org/isc-projects/kea/-/issues/1204Add the version type (i.e. stable or development) in ChangeLog headers.2020-05-21T08:20:28ZFrancis DupontAdd the version type (i.e. stable or development) in ChangeLog headers.Reference #1184 for making the version type more explicit.Reference #1184 for making the version type more explicit.kea1.7.8Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/764Developer documentation not being built correctly2019-08-02T11:49:57ZStephen MorrisDeveloper documentation not being built correctlyCommit: 812418169c0b95ad1b911cc602a55a47741d6e43 (latest master at the time of writing)
The developer documentation, when built with `cd doc/devel ; make devel` appears to omit a lot of the developer documentation. In addition, that wh...Commit: 812418169c0b95ad1b911cc602a55a47741d6e43 (latest master at the time of writing)
The developer documentation, when built with `cd doc/devel ; make devel` appears to omit a lot of the developer documentation. In addition, that which is present seems to be in a random order. The two attachments show the contents pane as it was (the screenshot omits the bottom few items):
![Screenshot_2019-07-31_at_17.43.32](/uploads/c5281bf9d07a0287a98ac350406e2001/Screenshot_2019-07-31_at_17.43.32.png) ... and as it is now: ![Screenshot_2019-07-31_at_17.43.15](/uploads/1f631575a348584f0c218748d8f376bd/Screenshot_2019-07-31_at_17.43.15.png)Kea1.6-finalTomek MrugalskiTomek Mrugalskihttps://gitlab.isc.org/isc-projects/kea/-/issues/682keactrl unable to kill kea processes2019-07-22T10:48:00ZWlodzimierz Wencelkeactrl unable to kill kea processesThis is my testing setup:
```
wlodek@debian9-64-2:kea (master) $ ps -aux | grep kea
root 17157 0.0 0.9 139624 15880 ? S 05:32 0:00 /home/wlodek/installed/git/sbin/kea-dhcp6 -c /home/wlodek/installed/git/etc/kea/kea.conf...This is my testing setup:
```
wlodek@debian9-64-2:kea (master) $ ps -aux | grep kea
root 17157 0.0 0.9 139624 15880 ? S 05:32 0:00 /home/wlodek/installed/git/sbin/kea-dhcp6 -c /home/wlodek/installed/git/etc/kea/kea.conf
root 17164 0.0 0.6 69876 9604 ? S 05:32 0:00 /home/wlodek/installed/git/sbin/kea-ctrl-agent -c /home/wlodek/installed/git/etc/kea/kea.conf
wlodek 28915 0.0 0.0 11108 936 pts/0 S+ 05:48 0:00 grep kea
wlodek@debian9-64-2:kea (master) $ sudo kill 17157 17164
wlodek@debian9-64-2:kea (master) $ sudo find / -name "kea*pid"
/home/wlodek/installed/git/var/run/kea/kea.kea-dhcp6.pid
/home/wlodek/installed/git/var/run/kea/kea.kea-ctrl-agent.pid
wlodek@debian9-64-2:kea (master) $ sudo /home/wlodek/installed/git/sbin/keactrl status
DHCPv4 server: inactive
DHCPv6 server: inactive
DHCP DDNS: inactive
Control Agent: inactive
Netconf agent: inactive
Kea DHCPv4 configuration file: /home/wlodek/installed/git/etc/kea/kea.conf
Kea DHCPv6 configuration file: /home/wlodek/installed/git/etc/kea/kea.conf
Kea DHCP DDNS configuration file: /home/wlodek/installed/git/etc/kea/kea.conf
Kea Control Agent configuration file: /home/wlodek/installed/git/etc/kea/kea.conf
Kea Netconf configuration file: /home/wlodek/installed/git/etc/kea/kea.conf
keactrl configuration file: /home/wlodek/installed/git/etc/kea/keactrl.conf
```
kea is running but it can't be killed by keactrl. PID files are created in /install-dir/var/run/kea and keactrl is looking for those files in /run/kea. Bug introduced in isc-projects/kea#538Kea1.6-beta2Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/526Improve MySQL unit test time by implementing a wipe-data only mechanism2019-04-10T11:35:46ZThomas MarkwalderImprove MySQL unit test time by implementing a wipe-data only mechanismMySQL and MariaDB variants can be extremely slow doing schema updates. The current mechanism creates and destroys the schema between each MySQL unit test. With dramatic increase in schema size and the number of unit tests, test executio...MySQL and MariaDB variants can be extremely slow doing schema updates. The current mechanism creates and destroys the schema between each MySQL unit test. With dramatic increase in schema size and the number of unit tests, test execution has become untenable.
Rather than creating and destroying the schema each time, it should be sufficient for each test to determine if it has the correct schema version and then simply wipe the transient data from the database upon entry and exit.
If the schema version is incorrect (or non existent), the schema should be destroyed and recreated. In theory this should happen infrequently, once a environment's unit test schema
is correct.Kea1.6Thomas MarkwalderThomas Markwalderhttps://gitlab.isc.org/isc-projects/kea/-/issues/306Distribute YANG modules.2018-11-30T11:07:38ZFrancis DupontDistribute YANG modules.Reference #298.Reference #298.Kea1.5-beta2Wlodzimierz WencelWlodzimierz Wencelhttps://gitlab.isc.org/isc-projects/kea/-/issues/156debian9 64 compilation error2021-08-31T21:20:50ZWlodzimierz Wenceldebian9 64 compilation error```
uname -a
Linux debian9-64-2 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) x86_64 GNU/Linux
autoreconf -if && ./configure --enable-shell --with-pgsql --with-mysql --prefix=/home/wlodek/installed/git/
```
result:
```
Packa...```
uname -a
Linux debian9-64-2 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) x86_64 GNU/Linux
autoreconf -if && ./configure --enable-shell --with-pgsql --with-mysql --prefix=/home/wlodek/installed/git/
```
result:
```
Package:
Name: kea
Version: 1.4.0-git
Extended version: 1.4.0-git (git 3fc0d776ff2262cae0013de1ce4c776c54c32eba)
OS Family: Linux
Hooks directory: /home/wlodek/installed/git/lib/hooks
Premium hooks: yes
Included Hooks: forensic_log flex_id host_cmds subnet_cmds radius host_cache
C++ Compiler:
CXX: g++
CXX_VERSION: g++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
CXX_STANDARD: 201402
DEFS: -DHAVE_CONFIG_H
CPPFLAGS: -DOS_LINUX -DBOOST_ASIO_HEADER_ONLY
CXXFLAGS: -g -O2
LDFLAGS: -lpthread
KEA_CXXFLAGS: -Wall -Wextra -Wnon-virtual-dtor -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -pthread -Wno-missing-field-initializers -fPIC
Python:
PYTHON: /usr/bin/python3
PYTHON_VERSION: 3.5
Boost:
BOOST_VERSION: 1.62
BOOST_INCLUDES:
BOOST_LIBS: -lboost_system
OpenSSL:
CRYPTO_VERSION: OpenSSL 1.1.0f 25 May 2017
CRYPTO_CFLAGS:
CRYPTO_INCLUDES:
CRYPTO_LDFLAGS:
CRYPTO_LIBS: -lcrypto
Botan: no
Log4cplus:
LOG4CPLUS_VERSION: 1.1.2
LOG4CPLUS_INCLUDES: -I/usr/include
LOG4CPLUS_LIBS: -L/usr/lib -L/usr/lib64 -llog4cplus
Flex/bison:
FLEX: flex
BISON: bison -y
MySQL:
MYSQL_VERSION: 10.1.26
MYSQL_CPPFLAGS: -I/usr/include/mysql
MYSQL_LIBS: -L/usr/lib/x86_64-linux-gnu -lmariadbclient -lpthread -lz -lm -ldl
PostgreSQL:
PGSQL_VERSION: PostgreSQL 9.6.10
PGSQL_CPPFLAGS: -Wdate-time -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include/tcl8.6 -I/usr/include/postgresql -I/usr/include/postgresql/9.6/server
PGSQL_LIBS: -L/usr/lib/x86_64-linux-gnu -lpq
```
compilation error:
```
make[6]: Entering directory '/home/wlodek/kea/src/bin/agent'
CXXLD kea-ctrl-agent
../../../src/lib/process/.libs/libkea-process.so: undefined reference to `isc::db::DatabaseConnection::toElementDbAccessString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2: error: ld returned 1 exit status
Makefile:666: recipe for target 'kea-ctrl-agent' failed
make[6]: *** [kea-ctrl-agent] Error 1
```
It looks like this change:
```
diff --git a/src/bin/agent/Makefile.am b/src/bin/agent/Makefile.am
index 31a2798d8..75059f357 100644
--- a/src/bin/agent/Makefile.am
+++ b/src/bin/agent/Makefile.am
@@ -83,6 +83,7 @@ kea_ctrl_agent_LDADD += $(top_builddir)/src/lib/log/libkea-log.la
kea_ctrl_agent_LDADD += $(top_builddir)/src/lib/util/threads/libkea-threads.la
kea_ctrl_agent_LDADD += $(top_builddir)/src/lib/util/libkea-util.la
kea_ctrl_agent_LDADD += $(top_builddir)/src/lib/exceptions/libkea-exceptions.la
+kea_ctrl_agent_LDADD += $(top_builddir)/src/lib/database/libkea-database.la
kea_ctrl_agent_LDADD += $(LOG4CPLUS_LIBS) $(CRYPTO_LIBS) $(BOOST_LIBS)
kea_ctrl_agent_LDFLAGS = $(AM_LDFLAGS) $(CRYPTO_LDFLAGS)
```
fix issueKea1.5-beta1https://gitlab.isc.org/isc-projects/kea/-/issues/134Small bugs from the new Xcode 10.0 compiler2018-09-27T12:49:19ZFrancis DupontSmall bugs from the new Xcode 10.0 compilerI updated yesterday the macOS Xcode to 10.0 and it finds now a few new warnings and I am using --with--werror...I updated yesterday the macOS Xcode to 10.0 and it finds now a few new warnings and I am using --with--werror...Kea1.5-beta1Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/129global reservation mode is DHCPv4 only.2019-09-02T07:12:00ZFrancis Dupontglobal reservation mode is DHCPv4 only.Looks like something forgotten as there is a global entry in reservations.Looks like something forgotten as there is a global entry in reservations.Kea1.5-beta1https://gitlab.isc.org/isc-projects/kea/-/issues/3261bump up lib versions for 2.5.62024-02-26T07:48:09ZWlodzimierz Wencelbump up lib versions for 2.5.6as stated in a subject, do it as last issue before freezeas stated in a subject, do it as last issue before freezekea2.5.6Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/3235bump up lib versions for 2.5.52024-01-26T17:03:30ZWlodzimierz Wencelbump up lib versions for 2.5.5as stated in the subject ;)as stated in the subject ;)kea2.5.5Wlodzimierz WencelWlodzimierz Wencelhttps://gitlab.isc.org/isc-projects/kea/-/issues/2909Migrate DB V6 address string column to inet or binary types2023-07-17T13:58:20ZThomas MarkwalderMigrate DB V6 address string column to inet or binary typeskea2.4.0Thomas MarkwalderThomas Markwalderhttps://gitlab.isc.org/isc-projects/kea/-/issues/2881DHCP4 Vendor-Specific Options do not get encapsulated when using the DB Backe...2023-12-07T14:12:48ZJosef StöcklDHCP4 Vendor-Specific Options do not get encapsulated when using the DB Backend (mysql)**Describe the bug**
While migrating a DHCP4 json-based configuration to the MySQL DB Backend I noticed that the Vendor-Specific Options (Code 43) do not get encapsulated and instead are transmitted as empty fields. The same configurat...**Describe the bug**
While migrating a DHCP4 json-based configuration to the MySQL DB Backend I noticed that the Vendor-Specific Options (Code 43) do not get encapsulated and instead are transmitted as empty fields. The same configuration with json produces the correct encapsulated option 43.
**To Reproduce**
Steps to reproduce the behavior:
1. Configure KEA with the mysql configuration backend and some basic subnet and pool.
```json
"Dhcp4": {
"server-tag": "DHCP",
"interfaces-config": {
"interfaces": [ "eth0" ]
},
"control-socket": {
"socket-type": "unix",
"socket-name": "/tmp/kea4-ctrl-socket"
},
"config-control": {
"config-databases": [{
"type": "mysql",
"name": "dhcp_db",
"host": "10.1.1.2",
"port": 3306,
"user": "kea",
"password": "<super secret pw>"
}],
"config-fetch-wait-time": 20
},
"hooks-libraries": [{
"library": "/usr/lib64/kea/hooks/libdhcp_mysql_cb.so"
}
],
"lease-database": {
"type": "mysql",
"name": "dhcp_db",
"host": "10.1.1.2",
"port": 3306,
"user": "kea",
"password": "<super secret pw>"
},
"hosts-database": {
"type": "mysql",
"name": "dhcp_db",
"host": "10.1.1.2",
"port": 3306,
"user": "kea",
"password": "<super secret pw>"
},
"expired-leases-processing": {
"reclaim-timer-wait-time": 10,
"flush-reclaimed-timer-wait-time": 25,
"hold-reclaimed-time": 3600,
"max-reclaim-leases": 100,
"max-reclaim-time": 250,
"unwarned-reclaim-cycles": 5
},
"renew-timer": 900,
"rebind-timer": 1800,
"valid-lifetime": 3600
}
```
2. Insert the following data into the configuration database:
```sql
-- to make a fully working example, a subnet and pool
INSERT INTO dhcp4_subnet (subnet_id, subnet_prefix, relay) VALUES (2, '10.16.0.0/20', '["10.17.0.1"]');
INSERT INTO dhcp4_subnet_server (subnet_id, server_id) VALUES (2, 1);
INSERT INTO dhcp4_pool (id, start_address, end_address, subnet_id) VALUES
(5, INET_ATON('10.16.0.20'), INET_ATON('10.16.15.200'), 2);
-- now the relevant entries
INSERT INTO dhcp4_option_def (id, code, name, space, type, is_array, encapsulate) VALUES
(3, 1, 'acs_url', 'vendor-encapsulated-options-space', 14, 0, '');
INSERT INTO dhcp4_option_def_server (option_def_id, server_id) VALUES (3, 1);
INSERT INTO dhcp4_options (option_id, code, value, formatted_value, space, persistent, dhcp_client_class, dhcp4_subnet_id, host_id, scope_id, user_context, shared_network_name, pool_id) VALUES
(1, 43, NULL, NULL, 'dhcp4', 1, NULL, NULL, NULL, 0, NULL, NULL, NULL),
(2, 1, NULL, 'http://10.10.10.10:8000/', 'vendor-encapsulated-options-space', 1, NULL, NULL, NULL, 0, NULL, NULL, NULL),
(3, 3, NULL, '10.17.0.1', 'dhcp4', 0, NULL, 2, NULL, 1, NULL, NULL, NULL);
INSERT INTO dhcp4_options_server (option_id, server_id) VALUES (1, 1), (2, 1), (3, 1);
```
3. After starting the server the DHCPOFFER contains for example the following data:
```
options:
type=001, len=004: 4294963200 (uint32)
type=003, len=004: 10.17.0.1
type=012, len=009: "fritz.box" (string)
type=043, len=000:
type=051, len=004: 3600 (uint32)
type=053, len=001: 2 (uint8)
type=054, len=004: 10.1.1.1
type=058, len=004: 900 (uint32)
type=059, len=004: 1800 (uint32)
```
4. See that option 43 does not encapsulate the 'acs_url' sub-option, but remains empty.
**Expected behavior**
The server is supposed to respond with
```
options:
type=001, len=004: 4294963200 (uint32)
type=003, len=004: 10.17.0.1
type=012, len=009: "fritz.box" (string)
type=043, len=034:,
options:
type=001, len=032: "http://10.10.10.10:8000/" (string)
type=051, len=004: 3600 (uint32)
type=053, len=001: 2 (uint8)
type=054, len=004: 10.1.1.1
type=058, len=004: 900 (uint32)
type=059, len=004: 1800 (uint32)
```
which is exactly what the following json configuration (additions into the "Dhcp4" object above) produces:
```json
"Dhcp4": {
"option-def": [
{
"name": "acs_url",
"code": 1,
"type": "string",
"array": false,
"record-types": "",
"space": "vendor-encapsulated-options-space",
"encapsulate": ""
}
],
"option-data": [
{
"name": "vendor-encapsulated-options",
"always-send": true
},
{
"name" : "acs_url",
"space" : "vendor-encapsulated-options-space",
"csv-format" : true,
"data" : "http://10.10.10.10:8000/",
"always-send": true
}
],
"subnet4": [
{
"subnet": "10.16.0.0/20",
"id" : 298,
"pools": [ { "pool": "10.16.0.20 - 10.16.15.200" } ],
"relay": {
"ip-address": "10.17.0.1"
},
"option-data": [
{
"name": "routers",
"space": "dhcp4",
"csv-format": true,
"data": "10.17.0.1"
}
]
}
]
}
```
**Environment:**
- Kea version: 2.2.0 (from Cloudsmith repo)
- OS: AlmaLinux release 8.8 (Sapphire Caracal)
- Which features were compiled in (in particular which backends)
- MySQL backend 14.0, library 3.1.21
- PostgreSQL backend 13.0, library 140008
- Memfile backend 2.1
- If/which hooks where loaded in
- `libdhcp_mysql_cb.so`
**Additional Information**
**Contacting you**
Please via GitLab message.kea2.5.3Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/2799Kea HA can't start in MT mode2023-10-11T21:25:52ZWlodzimierz WencelKea HA can't start in MT modeUsing current master Kea is unable to start HA service when it is configured with MT mode.
```
2023-03-20 09:31:48.578 ERROR [kea-dhcp4.ha-hooks/7532.140440458037120] HA_DHCP4_START_SERVICE_FAILED failed to start DHCPv4 HA service in dhc...Using current master Kea is unable to start HA service when it is configured with MT mode.
```
2023-03-20 09:31:48.578 ERROR [kea-dhcp4.ha-hooks/7532.140440458037120] HA_DHCP4_START_SERVICE_FAILED failed to start DHCPv4 HA service in dhcp4_srv_configured callout: HttpClient thread_pool_size must be zerowhen Kea core multi-threading is disabled
2023-03-20 09:31:48.578 ERROR [kea-dhcp4.callouts/7532.140440458037120] HOOKS_CALLOUT_ERROR error returned by callout on hook dhcp4_srv_configured registered by library with index 2 (callout address 0x7fbacf2c50f0) (callout duration 0.213 ms)
2023-03-20 09:31:48.578 DEBUG [kea-dhcp4.callouts/7532.140440458037120] HOOKS_CALLOUTS_COMPLETE completed callouts for hook dhcp4_srv_configured (total callouts duration: 0.213 ms)
2023-03-20 09:31:48.579 WARN [kea-dhcp4.dhcp4/7532.140440458037120] DHCP4_MULTI_THREADING_INFO enabled: yes, number of threads: 2, queue size: 2
2023-03-20 09:31:48.579 INFO [kea-dhcp4.dhcp4/7532.140440458037120] DHCP4_STARTED Kea DHCPv4 server version 2.3.6-git started
```
There are several issues:
* most important is Kea can't enable HA service
* such error in HA hook should result with failure on startup instead of Kea starting except HA hook
* small typo in log message `must be zerowhen Kea core`
Config used to trigger this error:
```
{
"Dhcp4": {
"option-data": [],
"hooks-libraries": [
{
"library": "/home/wlodek/installed/git/lib/kea/hooks/libdhcp_lease_cmds.so"
},
{
"library": "/home/wlodek/installed/git/lib/kea/hooks/libdhcp_ha.so",
"parameters": {
"high-availability": [
{
"peers": [
{
"auto-failover": true,
"name": "server1",
"role": "primary",
"url": "http://192.168.51.3:8003/"
},
{
"auto-failover": true,
"name": "server2",
"role": "secondary",
"url": "http://192.168.51.4:8003/"
}
],
"state-machine": {
"states": []
},
"mode": "load-balancing",
"heartbeat-delay": 1000,
"max-ack-delay": 100,
"max-response-delay": 4000,
"max-unacked-clients": 2,
"this-server-name": "server2",
"multi-threading": {
"enable-multi-threading": true,
"http-dedicated-listener": true,
"http-listener-threads": 0,
"http-client-threads": 0
}
}
]
}
}
],
"shared-networks": [],
"subnet4": [
{
"subnet": "192.168.50.0/24",
"pools": [
{
"pool": "192.168.50.1-192.168.50.30",
"client-class": "HA_server1"
},
{
"pool": "192.168.50.100-192.168.50.130",
"client-class": "HA_server2"
}
],
"interface": "enp0s9"
}
],
"interfaces-config": {
"interfaces": [
"enp0s9"
]
},
"control-socket": {
"socket-type": "unix",
"socket-name": "/home/wlodek/installed/git/var/run/kea/control_socket"
},
"renew-timer": 1000,
"rebind-timer": 2000,
"valid-lifetime": 4000,
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "/home/wlodek/installed/git/var/log/kea.log"
}
],
"severity": "DEBUG",
"debuglevel": 99
}
],
"lease-database": {
"type": "memfile"
},
"multi-threading": {
"enable-multi-threading": true,
"thread-pool-size": 0,
"packet-queue-size": 0
}
}
}
```
entire log: [kea.log](/uploads/620aae23cb47529c0f55e933bef94785/kea.log)kea2.3.6Razvan BecheriuRazvan Becheriu