Commits (1017)

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

......@@ -31,29 +31,5 @@ Add any other context about the problem here. In particular, feel free to share
Make sure you anonymize your config files (at the very lease make sure you obfuscate your database credentials, but you may also replace your actual IP addresses and host names with example.com and or 2001:db8::/32).
**Some initial questions**
- Are you sure your feature is not already implemented in the latest Kea version?
- Are you sure what you would like to do is not possible using some other mechanisms?
- Have you discussed your idea on kea-users or kea-dev mailing lists?
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
It is very important to describe what you would like to do and why?
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context about the feature request here.
**Funding its development**
Kea is run by ISC, which is a small non-profit organization without any government funding or any permanent sponsorship organizations. Are you able and willing to participate financially in the development costs?
**Participating in development**
Are you willing to participate in the feature development? ISC team always tries to make a feature as generic as possible, so it can be used in wide variety of situations. That means the proposed solution may be a bit different that you initially thought. Are you willing to take part in the design discussions? Are you willing to test an unreleased engineering code?
**Contacting you**
How can ISC reach you to discuss this matter further? If you do not specify any means such as e-mail, jabber id or a telephone, we may send you a message on github with questions when we have them.
This diff is collapsed.
......@@ -5,19 +5,24 @@ Primary developers:
- Tomek Mrugalski (lead developer: DHCPv4, DHCPv6 components, prefix
delegation, memfile, database interface, core libdhcp++,
host reservation, MAC extraction in DHCPv6,
statistics manager, kea-shell, netconf)
statistics manager, kea-shell, netconf, flex/bison
parsers, flex-id, documentation)
- Stephen Morris (Hooks, MySQL)
- Marcin Siodelski (DHCPv4, DHCPv6 components, options handling, perfdhcp,
host reservation, lease file cleanup, lease expiration,
control agent, shared networks, high availability)
- Thomas Markwalder (DDNS, user_chk, global host reservations)
control agent, shared networks, high availability,
config backend)
- Thomas Markwalder (DDNS, user_chk, global host reservations, stat commands,
congestion handling, config backend)
- Jeremy C. Reed (documentation, build system, testing, release engineering)
- Wlodek Wencel (testing, release engineering)
- Francis Dupont (crypto, flex/bison parsers, perfdhcp, control agent,
radius, netconf)
radius, netconf, config backend)
- Brian Reid (logo design)
- Shawn Routhier (lease file cleanup)
- Michal Nowikowski (testing)
- Michal Nowikowski (testing, hammer, release engineering)
- Razvan Becheriu (cassandra, sysrepo)
- Suzanne Goldlust (documentation)
Primary area of work mentioned in parentheses. The list is in a roughly
chronological order.
......@@ -189,6 +194,7 @@ We have received the following contributions:
- Franciszek Gorski
2018-10: Makefile bug fixed
2019-07: Statistics enhancements
- Suzanne Goldlust
2018-10: API documentation
This diff is collapsed.
Copyright (C) 2009-2018 Internet Systems Consortium, Inc. ("ISC")
Copyright (C) 2009-2019 Internet Systems Consortium, Inc. ("ISC")
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
This diff is collapsed.
......@@ -4,7 +4,7 @@ ACLOCAL_AMFLAGS = -I m4macros ${ACLOCAL_FLAGS}
# We now build doc after src/, because docgen, a tool to generate API
# documentation requires libkea-exceptions and libkea-cc.
SUBDIRS = compatcheck tools . ext src doc m4macros @PREMIUM_DIR@ @CONTRIB_DIR@
SUBDIRS = tools . ext src doc m4macros @PREMIUM_DIR@ @CONTRIB_DIR@
# keerp the sysrepo config
.PHONY: check-valgrind check-valgrind-suppress
......@@ -146,10 +146,16 @@ cppcheck:
--template '{file}:{line}: check_fail: {message} ({severity},{id})' \
# this is a shortcut that builds only documentation dependecies and documentation itself
$(MAKE) -C doc/sphinx
# These steps are necessary during installation
mkdir -p $(DESTDIR)${localstatedir}/log/
mkdir -p $(DESTDIR)${localstatedir}/run/${PACKAGE_NAME}
mkdir -p $(DESTDIR)${localstatedir}/lib/${PACKAGE_NAME}
mkdir -p $(DESTDIR)${runstatedir}/${PACKAGE_NAME}
EXTRA_DIST = tools/path_replacer.sh
EXTRA_DIST += tools/mk_cfgrpt.sh
Kea provides DHCPv4 and DHCPv6 servers, a dynamic DNS update module,
a portable DHCP library, libdhcp++, control agent that provides management
REST interface, netconf agent that provides a YANG/NETCONF interface for Kea,
a portable DHCP library, libdhcp++, a control agent that provides a management
REST interface, a NETCONF agent that provides a YANG/NETCONF interface for Kea,
and a DHCP benchmarking tool, perfdhcp.
Kea is developed by Internet Systems Consortium.
Kea is developed by Internet Systems Consortium, Inc.
The developers website is at https://gitlab.isc.org/isc-projects/kea
The developers' website is at https://gitlab.isc.org/isc-projects/kea.
Limitations, known issues and feature requests can be found
at https://gitlab.isc.org/isc-projects/kea/wikis/known-issues-list
Limitations, known issues, and feature requests can be found
at https://gitlab.isc.org/isc-projects/kea/wikis/known-issues-list.
If you are thinking about contributing a patch, please read this first:
If you are thinking about contributing a patch, please read the
Contributor's Guide first.
The Kea mailing lists are available via
The Kea mailing lists are available via https://lists.isc.org/.
# We're going to abuse install-data-local for a pre-install check. This may
# not be the cleanest way to do this type of job, but that's the least ugly
# one we've found.
# Note also that if any test needs to examine some file that has possibly
# been installed before (e.g., older DB or configuration file), it should be
# referenced with the prefix of DESTDIR. Otherwise
# 'make DESTDIR=/somewhere install' may not work.
if test -e $(DESTDIR)$(localstatedir)/$(PACKAGE)/zone.sqlite3; then \
$(SHELL) $(top_builddir)/src/bin/dbutil/run_dbutil.sh --check \
$(DESTDIR)$(localstatedir)/$(PACKAGE)/zone.sqlite3 || \
(echo "\nSQLite3 DB file schema version is old. " \
"Please run: " \
"$(abs_top_builddir)/src/bin/dbutil/run_dbutil.sh --upgrade " \
"$(DESTDIR)$(localstatedir)/$(PACKAGE)/zone.sqlite3"; exit 1) \
This directory is a collection of compatibility checker programs.
They will be run before any other installation attempts on 'make install'
to see if the installation causes any substantial compatibility problems
with existing configurations. If any checker program finds an issue,
'make install' will stop at that point.
This diff is collapsed.
SUBDIRS = guide docgen
SUBDIRS = sphinx devel
EXTRA_DIST = version.ent.in Doxyfile Doxyfile-xml
EXTRA_DIST += devel/bison.dox
EXTRA_DIST += devel/config-backend.dox
EXTRA_DIST += devel/contribute.dox
EXTRA_DIST += devel/mainpage.dox
EXTRA_DIST += devel/terminology.dox
EXTRA_DIST += devel/unit-tests.dox
EXTRA_DIST += devel/doc.dox
EXTRA_DIST += devel/congestion-handling.dox
EXTRA_DIST = images/kea-logo-100x70.png
nobase_dist_doc_DATA = examples/agent/comments.json
nobase_dist_doc_DATA += examples/agent/simple.json
......@@ -20,11 +12,13 @@ nobase_dist_doc_DATA += examples/https/nginx/kea-nginx.conf
nobase_dist_doc_DATA += examples/https/shell/kea-stunnel.conf
nobase_dist_doc_DATA += examples/kea4/advanced.json
nobase_dist_doc_DATA += examples/kea4/all-keys.json
nobase_dist_doc_DATA += examples/kea4/all-keys-netconf.json
nobase_dist_doc_DATA += examples/kea4/backends.json
nobase_dist_doc_DATA += examples/kea4/cassandra.json
nobase_dist_doc_DATA += examples/kea4/classify.json
nobase_dist_doc_DATA += examples/kea4/classify2.json
nobase_dist_doc_DATA += examples/kea4/comments.json
nobase_dist_doc_DATA += examples/kea4/config-backend.json
nobase_dist_doc_DATA += examples/kea4/dhcpv4-over-dhcpv6.json
nobase_dist_doc_DATA += examples/kea4/global-reservations.json
nobase_dist_doc_DATA += examples/kea4/ha-load-balancing-primary.json
......@@ -41,11 +35,13 @@ nobase_dist_doc_DATA += examples/kea4/single-subnet.json
nobase_dist_doc_DATA += examples/kea4/with-ddns.json
nobase_dist_doc_DATA += examples/kea6/advanced.json
nobase_dist_doc_DATA += examples/kea6/all-keys.json
nobase_dist_doc_DATA += examples/kea6/all-keys-netconf.json
nobase_dist_doc_DATA += examples/kea6/backends.json
nobase_dist_doc_DATA += examples/kea6/cassandra.json
nobase_dist_doc_DATA += examples/kea6/classify.json
nobase_dist_doc_DATA += examples/kea6/classify2.json
nobase_dist_doc_DATA += examples/kea6/comments.json
nobase_dist_doc_DATA += examples/kea6/config-backend.json
nobase_dist_doc_DATA += examples/kea6/dhcpv4-over-dhcpv6.json
nobase_dist_doc_DATA += examples/kea6/duid.json
nobase_dist_doc_DATA += examples/kea6/global-reservations.json
......@@ -62,10 +58,8 @@ nobase_dist_doc_DATA += examples/kea6/shared-network.json
nobase_dist_doc_DATA += examples/kea6/simple.json
nobase_dist_doc_DATA += examples/kea6/softwire46.json
nobase_dist_doc_DATA += examples/kea6/stateless.json
nobase_dist_doc_DATA += examples/kea6/tee-times.json
nobase_dist_doc_DATA += examples/kea6/with-ddns.json
nobase_dist_doc_DATA += examples/netconf/kea-dhcp6-operations/BAD-config.xml
nobase_dist_doc_DATA += examples/netconf/kea-dhcp6-operations/BAD-schema.xml
nobase_dist_doc_DATA += examples/netconf/kea-dhcp6-operations/BAD-translator.xml
nobase_dist_doc_DATA += examples/netconf/kea-dhcp6-operations/boot.json
nobase_dist_doc_DATA += examples/netconf/kea-dhcp6-operations/logging.xml
nobase_dist_doc_DATA += examples/netconf/kea-dhcp6-operations/netconf.json
......@@ -75,99 +69,3 @@ nobase_dist_doc_DATA += examples/netconf/kea-dhcp6-operations/twosubnets.xml
nobase_dist_doc_DATA += examples/netconf/comments.json
nobase_dist_doc_DATA += examples/netconf/simple-dhcp4.json
nobase_dist_doc_DATA += examples/netconf/simple-dhcp6.json
# These are files that document our APIs. They're not really needed as the
# content is included in the api.xml, but may be useful for people who
# want to document the API.
EXTRA_DIST += api/build-report.json
EXTRA_DIST += api/cache-clear.json api/cache-get.json
EXTRA_DIST += api/cache-insert.json api/cache-load.json
EXTRA_DIST += api/cache-remove.json api/cache-write.json
EXTRA_DIST += api/class-add.json api/class-del.json
EXTRA_DIST += api/class-get.json api/class-list.json
EXTRA_DIST += api/class-update.json
EXTRA_DIST += api/config-get.json api/config-reload.json
EXTRA_DIST += api/config-set.json api/config-test.json
EXTRA_DIST += api/config-write.json api/dhcp-disable.json
EXTRA_DIST += api/dhcp-enable.json api/ha-continue.json
EXTRA_DIST += api/ha-heartbeat.json api/ha-scopes.json
EXTRA_DIST += api/ha-sync.json api/lease4-add.json
EXTRA_DIST += api/lease4-del.json api/lease4-get-all.json
EXTRA_DIST += api/lease4-get.json api/lease4-update.json
EXTRA_DIST += api/lease4-wipe.json api/lease6-add.json
EXTRA_DIST += api/lease6-del.json api/lease6-get-all.json
EXTRA_DIST += api/lease6-get.json api/lease6-update.json
EXTRA_DIST += api/lease6-wipe.json api/leases-reclaim.json
EXTRA_DIST += api/libreload.json api/list-commands.json
EXTRA_DIST += api/network4-add.json api/network4-del.json
EXTRA_DIST += api/network4-get.json api/network4-list.json
EXTRA_DIST += api/network4-subnet-add.json api/network4-subnet-del.json
EXTRA_DIST += api/network6-add.json api/network6-del.json
EXTRA_DIST += api/network6-get.json api/network6-list.json
EXTRA_DIST += api/network6-subnet-add.json api/network6-subnet-del.json
EXTRA_DIST += api/reservation-add.json api/reservation-del.json
EXTRA_DIST += api/reservation-get.json api/reservation-get-all.json
EXTRA_DIST += api/reservation-get-page.json api/shutdown.json
EXTRA_DIST += api/statistic-get-all.json api/statistic-get.json
EXTRA_DIST += api/statistic-remove-all.json api/statistic-remove.json
EXTRA_DIST += api/statistic-reset-all.json api/statistic-reset.json
EXTRA_DIST += api/stat-lease4-get.json api/stat-lease6-get.json
EXTRA_DIST += api/subnet4-add.json api/subnet4-del.json
EXTRA_DIST += api/subnet4-get.json api/subnet4-list.json
EXTRA_DIST += api/subnet6-add.json api/subnet6-del.json
EXTRA_DIST += api/subnet6-get.json api/subnet6-list.json
EXTRA_DIST += api/_template.json api/version-get.json
mkdir -p html
(cat Doxyfile; echo PROJECT_NUMBER=$(PACKAGE_VERSION)) | doxygen - > html/doxygen.log 2> html/doxygen-error.log
echo `grep -i ": warning:" html/doxygen-error.log | wc -l` warnings/errors detected.
$(MAKE) -C guide kea-guide.html
rm -rf html
# There are several steps needed to document new API command:
# 1. edit docgen/cmds-list and add the new command
# 2. ./configure --enable-generate-docs
# 3. make - you need to build the sources first, am afraid. The reason why you
# need to do this is that the tool kea-docgen depends on libkea-cc as it
# loads JSON files. This means that the libs need to be built first.
# 4. (optional) run: make templates
# This will go through the list of commands listed in cmds-list
# and will check if there are corresponding JSON files in api/name.json
# If the file is missing, a new JSON will be created using template.
# If you dislike this generator, you can always use api/_template.json
# and copy it over under the name of a new command.
# 5. Edit api/command-name.json. If the command is provided by the daemon
# out of its own (and not via hook), simply delete the hook entry.
# If you don't want to provide command syntax (cmd-syntax key),
# any comments about the syntax (cmd-comment key) or response syntax
# (resp-syntax) or any comment about response (resp-comment), simply
# remove those unused keys. The generator will attempt to generate
# boilerplates for it.
# 6. Generate api.xml: make api
# 7. Rebuild User's Guide as usual: make guide
# This target will generate templates. There's no need to run it, unless
# new commands have been added or there are existing commands that are
# still not documented.
templates: docgen
docgen/generate-templates docgen/cmds-list
# This will generate the api.xml file using docgen generator. It will
# read the JSON files from api/ directory. Make sure they're up to date.
api: docgen
docgen/kea-docgen api/*.json
# This convenience target makes sure the docgen tool is built properly
$(MAKE) -C docgen
# That's a bit of a hack, but we are making sure that devel target
# is always valid. The alternative is to make devel depend on all
# *.cc *.h files in the whole tree.
.PHONY: devel guide docgen
"name": "build-report",
"brief": "Returns a list of compilation options that this particular binary was built with",
"support": [ "kea-dhcp4", "kea-dhcp6", "kea-dhcp-ddns", "kea-ctrl-agent" ],
"avail": "1.2.0",
"cmd-syntax": "{
\"command\": \"build-report\"
"resp-syntax": "{
\"result\": 0,
\"text\": <string with build details>
"resp-comment": ""
"name": "cache-clear",
"brief": "This command removes all cached host reservations.",
"support": [ "kea-dhcp4", "kea-dhcp6" ],
"hook": "host_cache",
"avail": "1.4.0"
"name": "cache-get",
"brief": "Returns full content of the host cache.",
"support": [ "kea-dhcp4", "kea-dhcp6" ],
"avail": "1.4.0",
"hook": "host_cache",
"resp-syntax": "{
\"result\": 0
\"text\": \"123 entries returned.\"
\"arguments\": <list of host reservations>
"name": "cache-insert",
"brief": "This command may be used to manually insert a host into the cache.",
"description": "See <xref linkend=\"host-reservation-v4\"/>",
"support": [ "kea-dhcp4", "kea-dhcp6" ],
"avail": "1.4.0",
"hook": "host_cache",
"cmd-syntax": "{
\"command\": \"cache-insert\",
\"arguments\": {
\"hw-address\": \"01:02:03:04:05:06\",
\"subnet-id4\": 4,
\"subnet-id6\": 0,
\"ip-address\": \"\",
\"hostname\": \"somehost.example.org\",
\"client-classes4\": [ ],
\"client-classes6\": [ ],
\"option-data4\": [ ],
\"option-data6\": [ ],
\"next-server\": \"\",
\"server-hostname\": \"server-hostname.example.org\",
\"boot-file-name\": \"bootfile.efi\",
\"host-id\": 0
\"command\": \"cache-insert\",
\"arguments\": {
\"hw-address\": \"01:02:03:04:05:06\",
\"subnet-id4\": 0,
\"subnet-id6\": 6,
\"ip-addresses\": [ \"2001:db8::cafe:babe\" ],
\"prefixes\": [ \"2001:db8:dead:beef::/64\" ],
\"hostname\": \"\",
\"client-classes4\": [ ],
\"client-classes6\": [ ],
\"option-data4\": [ ],
\"option-data6\": [ ],
\"next-server\": \"\",
\"server-hostname\": \"\",
\"boot-file-name\": \"\",
\"host-id\": 0
"name": "cache-load",