summaryrefslogtreecommitdiffstats
path: root/src/share/api
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/share/api/Makefile.am17
-rw-r--r--src/share/api/Makefile.in756
-rw-r--r--src/share/api/README27
-rw-r--r--src/share/api/_template.json48
-rw-r--r--src/share/api/api_files.mk196
-rw-r--r--src/share/api/build-report.json28
-rw-r--r--src/share/api/cache-clear.json13
-rw-r--r--src/share/api/cache-flush.json19
-rw-r--r--src/share/api/cache-get-by-id.json28
-rw-r--r--src/share/api/cache-get.json20
-rw-r--r--src/share/api/cache-insert.json55
-rw-r--r--src/share/api/cache-load.json20
-rw-r--r--src/share/api/cache-remove.json32
-rw-r--r--src/share/api/cache-size.json20
-rw-r--r--src/share/api/cache-write.json22
-rw-r--r--src/share/api/class-add.json42
-rw-r--r--src/share/api/class-del.json31
-rw-r--r--src/share/api/class-get.json45
-rw-r--r--src/share/api/class-list.json48
-rw-r--r--src/share/api/class-update.json42
-rw-r--r--src/share/api/config-backend-pull.json31
-rw-r--r--src/share/api/config-get.json35
-rw-r--r--src/share/api/config-hash-get.json33
-rw-r--r--src/share/api/config-reload.json20
-rw-r--r--src/share/api/config-set.json45
-rw-r--r--src/share/api/config-test.json34
-rw-r--r--src/share/api/config-write.json24
-rw-r--r--src/share/api/dhcp-disable.json22
-rw-r--r--src/share/api/dhcp-enable.json21
-rw-r--r--src/share/api/extended-info4-upgrade.json30
-rwxr-xr-xsrc/share/api/generate-api-files15
-rwxr-xr-xsrc/share/api/generate-templates43
-rw-r--r--src/share/api/gss-tsig-get-all.json53
-rw-r--r--src/share/api/gss-tsig-get.json44
-rw-r--r--src/share/api/gss-tsig-key-del.json23
-rw-r--r--src/share/api/gss-tsig-key-expire.json23
-rw-r--r--src/share/api/gss-tsig-key-get.json33
-rw-r--r--src/share/api/gss-tsig-list.json31
-rw-r--r--src/share/api/gss-tsig-purge-all.json20
-rw-r--r--src/share/api/gss-tsig-purge.json24
-rw-r--r--src/share/api/gss-tsig-rekey-all.json20
-rw-r--r--src/share/api/gss-tsig-rekey.json24
-rw-r--r--src/share/api/ha-continue.json14
-rw-r--r--src/share/api/ha-heartbeat.json34
-rw-r--r--src/share/api/ha-maintenance-cancel.json17
-rw-r--r--src/share/api/ha-maintenance-notify.json37
-rw-r--r--src/share/api/ha-maintenance-start.json19
-rw-r--r--src/share/api/ha-reset.json14
-rw-r--r--src/share/api/ha-scopes.json26
-rw-r--r--src/share/api/ha-sync-complete-notify.json19
-rw-r--r--src/share/api/ha-sync.json24
-rw-r--r--src/share/api/lease4-add.json28
-rw-r--r--src/share/api/lease4-del.json24
-rw-r--r--src/share/api/lease4-get-all.json64
-rw-r--r--src/share/api/lease4-get-by-client-id.json47
-rw-r--r--src/share/api/lease4-get-by-hostname.json47
-rw-r--r--src/share/api/lease4-get-by-hw-address.json48
-rw-r--r--src/share/api/lease4-get-page.json63
-rw-r--r--src/share/api/lease4-get.json44
-rw-r--r--src/share/api/lease4-resend-ddns.json32
-rw-r--r--src/share/api/lease4-update.json28
-rw-r--r--src/share/api/lease4-wipe.json21
-rw-r--r--src/share/api/lease4-write.json21
-rw-r--r--src/share/api/lease6-add.json35
-rw-r--r--src/share/api/lease6-bulk-apply.json75
-rw-r--r--src/share/api/lease6-del.json24
-rw-r--r--src/share/api/lease6-get-all.json71
-rw-r--r--src/share/api/lease6-get-by-duid.json50
-rw-r--r--src/share/api/lease6-get-by-hostname.json50
-rw-r--r--src/share/api/lease6-get-page.json68
-rw-r--r--src/share/api/lease6-get.json54
-rw-r--r--src/share/api/lease6-resend-ddns.json32
-rw-r--r--src/share/api/lease6-update.json30
-rw-r--r--src/share/api/lease6-wipe.json24
-rw-r--r--src/share/api/lease6-write.json21
-rw-r--r--src/share/api/leases-reclaim.json21
-rw-r--r--src/share/api/libreload.json23
-rw-r--r--src/share/api/list-commands.json24
-rw-r--r--src/share/api/network4-add.json55
-rw-r--r--src/share/api/network4-del.json35
-rw-r--r--src/share/api/network4-get.json57
-rw-r--r--src/share/api/network4-list.json30
-rw-r--r--src/share/api/network4-subnet-add.json28
-rw-r--r--src/share/api/network4-subnet-del.json28
-rw-r--r--src/share/api/network6-add.json55
-rw-r--r--src/share/api/network6-del.json35
-rw-r--r--src/share/api/network6-get.json57
-rw-r--r--src/share/api/network6-list.json30
-rw-r--r--src/share/api/network6-subnet-add.json28
-rw-r--r--src/share/api/network6-subnet-del.json28
-rw-r--r--src/share/api/remote-class4-del.json39
-rw-r--r--src/share/api/remote-class4-get-all.json52
-rw-r--r--src/share/api/remote-class4-get.json51
-rw-r--r--src/share/api/remote-class4-set.json45
-rw-r--r--src/share/api/remote-class6-del.json39
-rw-r--r--src/share/api/remote-class6-get-all.json52
-rw-r--r--src/share/api/remote-class6-get.json51
-rw-r--r--src/share/api/remote-class6-set.json45
-rw-r--r--src/share/api/remote-global-parameter4-del.json36
-rw-r--r--src/share/api/remote-global-parameter4-get-all.json52
-rw-r--r--src/share/api/remote-global-parameter4-get.json45
-rw-r--r--src/share/api/remote-global-parameter4-set.json43
-rw-r--r--src/share/api/remote-global-parameter6-del.json36
-rw-r--r--src/share/api/remote-global-parameter6-get-all.json52
-rw-r--r--src/share/api/remote-global-parameter6-get.json45
-rw-r--r--src/share/api/remote-global-parameter6-set.json43
-rw-r--r--src/share/api/remote-network4-del.json40
-rw-r--r--src/share/api/remote-network4-get.json52
-rw-r--r--src/share/api/remote-network4-list.json52
-rw-r--r--src/share/api/remote-network4-set.json37
-rw-r--r--src/share/api/remote-network6-del.json40
-rw-r--r--src/share/api/remote-network6-get.json52
-rw-r--r--src/share/api/remote-network6-list.json52
-rw-r--r--src/share/api/remote-network6-set.json37
-rw-r--r--src/share/api/remote-option-def4-del.json39
-rw-r--r--src/share/api/remote-option-def4-get-all.json52
-rw-r--r--src/share/api/remote-option-def4-get.json52
-rw-r--r--src/share/api/remote-option-def4-set.json37
-rw-r--r--src/share/api/remote-option-def6-del.json39
-rw-r--r--src/share/api/remote-option-def6-get-all.json52
-rw-r--r--src/share/api/remote-option-def6-get.json52
-rw-r--r--src/share/api/remote-option-def6-set.json37
-rw-r--r--src/share/api/remote-option4-global-del.json41
-rw-r--r--src/share/api/remote-option4-global-get-all.json52
-rw-r--r--src/share/api/remote-option4-global-get.json51
-rw-r--r--src/share/api/remote-option4-global-set.json45
-rw-r--r--src/share/api/remote-option4-network-del.json45
-rw-r--r--src/share/api/remote-option4-network-set.json49
-rw-r--r--src/share/api/remote-option4-pool-del.json45
-rw-r--r--src/share/api/remote-option4-pool-set.json49
-rw-r--r--src/share/api/remote-option4-subnet-del.json45
-rw-r--r--src/share/api/remote-option4-subnet-set.json49
-rw-r--r--src/share/api/remote-option6-global-del.json41
-rw-r--r--src/share/api/remote-option6-global-get-all.json52
-rw-r--r--src/share/api/remote-option6-global-get.json51
-rw-r--r--src/share/api/remote-option6-global-set.json45
-rw-r--r--src/share/api/remote-option6-network-del.json45
-rw-r--r--src/share/api/remote-option6-network-set.json49
-rw-r--r--src/share/api/remote-option6-pd-pool-del.json46
-rw-r--r--src/share/api/remote-option6-pd-pool-set.json50
-rw-r--r--src/share/api/remote-option6-pool-del.json45
-rw-r--r--src/share/api/remote-option6-pool-set.json49
-rw-r--r--src/share/api/remote-option6-subnet-del.json45
-rw-r--r--src/share/api/remote-option6-subnet-set.json49
-rw-r--r--src/share/api/remote-server4-del.json39
-rw-r--r--src/share/api/remote-server4-get-all.json47
-rw-r--r--src/share/api/remote-server4-get.json48
-rw-r--r--src/share/api/remote-server4-set.json45
-rw-r--r--src/share/api/remote-server6-del.json39
-rw-r--r--src/share/api/remote-server6-get-all.json47
-rw-r--r--src/share/api/remote-server6-get.json48
-rw-r--r--src/share/api/remote-server6-set.json45
-rw-r--r--src/share/api/remote-subnet4-del-by-id.json39
-rw-r--r--src/share/api/remote-subnet4-del-by-prefix.json39
-rw-r--r--src/share/api/remote-subnet4-get-by-id.json49
-rw-r--r--src/share/api/remote-subnet4-get-by-prefix.json51
-rw-r--r--src/share/api/remote-subnet4-list.json56
-rw-r--r--src/share/api/remote-subnet4-set.json44
-rw-r--r--src/share/api/remote-subnet6-del-by-id.json39
-rw-r--r--src/share/api/remote-subnet6-del-by-prefix.json39
-rw-r--r--src/share/api/remote-subnet6-get-by-id.json53
-rw-r--r--src/share/api/remote-subnet6-get-by-prefix.json51
-rw-r--r--src/share/api/remote-subnet6-list.json56
-rw-r--r--src/share/api/remote-subnet6-set.json44
-rw-r--r--src/share/api/reservation-add.json50
-rw-r--r--src/share/api/reservation-del.json28
-rw-r--r--src/share/api/reservation-get-all.json28
-rw-r--r--src/share/api/reservation-get-by-address.json29
-rw-r--r--src/share/api/reservation-get-by-hostname.json29
-rw-r--r--src/share/api/reservation-get-by-id.json29
-rw-r--r--src/share/api/reservation-get-page.json27
-rw-r--r--src/share/api/reservation-get.json55
-rw-r--r--src/share/api/reservation-update.json50
-rw-r--r--src/share/api/server-tag-get.json30
-rw-r--r--src/share/api/shutdown.json26
-rw-r--r--src/share/api/stat-lease4-get.json34
-rw-r--r--src/share/api/stat-lease6-get.json38
-rw-r--r--src/share/api/statistic-get-all.json659
-rw-r--r--src/share/api/statistic-get.json33
-rw-r--r--src/share/api/statistic-remove-all.json22
-rw-r--r--src/share/api/statistic-remove.json24
-rw-r--r--src/share/api/statistic-reset-all.json23
-rw-r--r--src/share/api/statistic-reset.json25
-rw-r--r--src/share/api/statistic-sample-age-set-all.json24
-rw-r--r--src/share/api/statistic-sample-age-set.json25
-rw-r--r--src/share/api/statistic-sample-count-set-all.json24
-rw-r--r--src/share/api/statistic-sample-count-set.json25
-rw-r--r--src/share/api/status-get.json62
-rw-r--r--src/share/api/subnet4-add.json39
-rw-r--r--src/share/api/subnet4-del.json35
-rw-r--r--src/share/api/subnet4-delta-add.json39
-rw-r--r--src/share/api/subnet4-delta-del.json39
-rw-r--r--src/share/api/subnet4-get.json39
-rw-r--r--src/share/api/subnet4-list.json39
-rw-r--r--src/share/api/subnet4-update.json39
-rw-r--r--src/share/api/subnet6-add.json39
-rw-r--r--src/share/api/subnet6-del.json33
-rw-r--r--src/share/api/subnet6-delta-add.json39
-rw-r--r--src/share/api/subnet6-delta-del.json39
-rw-r--r--src/share/api/subnet6-get.json39
-rw-r--r--src/share/api/subnet6-list.json39
-rw-r--r--src/share/api/subnet6-update.json39
-rw-r--r--src/share/api/version-get.json20
203 files changed, 9255 insertions, 0 deletions
diff --git a/src/share/api/Makefile.am b/src/share/api/Makefile.am
new file mode 100644
index 0000000..e84b630
--- /dev/null
+++ b/src/share/api/Makefile.am
@@ -0,0 +1,17 @@
+# list of api files
+api_files =
+include $(srcdir)/api_files.mk
+
+EXTRA_DIST = api_files.mk
+EXTRA_DIST += README
+EXTRA_DIST += _template.json
+EXTRA_DIST += generate-templates
+EXTRA_DIST += generate-api-files
+EXTRA_DIST += $(api_files)
+
+install-data-local:
+ mkdir -p $(DESTDIR)$(datarootdir)/${PACKAGE_NAME}/api
+ cp $(api_files) $(DESTDIR)$(datarootdir)/${PACKAGE_NAME}/api
+
+uninstall-local:
+ rm -rf $(DESTDIR)$(datarootdir)/${PACKAGE_NAME}/api
diff --git a/src/share/api/Makefile.in b/src/share/api/Makefile.in
new file mode 100644
index 0000000..17aed08
--- /dev/null
+++ b/src/share/api/Makefile.in
@@ -0,0 +1,756 @@
+# Makefile.in generated by automake 1.16.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994-2018 Free Software Foundation, Inc.
+
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+VPATH = @srcdir@
+am__is_gnu_make = { \
+ if test -z '$(MAKELEVEL)'; then \
+ false; \
+ elif test -n '$(MAKE_HOST)'; then \
+ true; \
+ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
+ true; \
+ else \
+ false; \
+ fi; \
+}
+am__make_running_with_option = \
+ case $${target_option-} in \
+ ?) ;; \
+ *) echo "am__make_running_with_option: internal error: invalid" \
+ "target option '$${target_option-}' specified" >&2; \
+ exit 1;; \
+ esac; \
+ has_opt=no; \
+ sane_makeflags=$$MAKEFLAGS; \
+ if $(am__is_gnu_make); then \
+ sane_makeflags=$$MFLAGS; \
+ else \
+ case $$MAKEFLAGS in \
+ *\\[\ \ ]*) \
+ bs=\\; \
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
+ esac; \
+ fi; \
+ skip_next=no; \
+ strip_trailopt () \
+ { \
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+ }; \
+ for flg in $$sane_makeflags; do \
+ test $$skip_next = yes && { skip_next=no; continue; }; \
+ case $$flg in \
+ *=*|--*) continue;; \
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
+ -*I?*) strip_trailopt 'I';; \
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
+ -*O?*) strip_trailopt 'O';; \
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
+ -*l?*) strip_trailopt 'l';; \
+ -[dEDm]) skip_next=yes;; \
+ -[JT]) skip_next=yes;; \
+ esac; \
+ case $$flg in \
+ *$$target_option*) has_opt=yes; break;; \
+ esac; \
+ done; \
+ test $$has_opt = yes
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = src/share/api
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4macros/ax_boost_for_kea.m4 \
+ $(top_srcdir)/m4macros/ax_cpp11.m4 \
+ $(top_srcdir)/m4macros/ax_cpp20.m4 \
+ $(top_srcdir)/m4macros/ax_crypto.m4 \
+ $(top_srcdir)/m4macros/ax_find_library.m4 \
+ $(top_srcdir)/m4macros/ax_gssapi.m4 \
+ $(top_srcdir)/m4macros/ax_gtest.m4 \
+ $(top_srcdir)/m4macros/ax_isc_rpath.m4 \
+ $(top_srcdir)/m4macros/ax_netconf.m4 \
+ $(top_srcdir)/m4macros/libtool.m4 \
+ $(top_srcdir)/m4macros/ltoptions.m4 \
+ $(top_srcdir)/m4macros/ltsugar.m4 \
+ $(top_srcdir)/m4macros/ltversion.m4 \
+ $(top_srcdir)/m4macros/lt~obsolete.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
+AM_V_P = $(am__v_P_@AM_V@)
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+am__v_P_0 = false
+am__v_P_1 = :
+AM_V_GEN = $(am__v_GEN_@AM_V@)
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+am__v_GEN_0 = @echo " GEN " $@;
+am__v_GEN_1 =
+AM_V_at = $(am__v_at_@AM_V@)
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+am__v_at_0 = @
+am__v_at_1 =
+SOURCES =
+DIST_SOURCES =
+am__can_run_installinfo = \
+ case $$AM_UPDATE_INFO_DIR in \
+ n|no|NO) false;; \
+ *) (install-info --version) >/dev/null 2>&1;; \
+ esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/api_files.mk README
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
+AR = @AR@
+ASCIIDOC = @ASCIIDOC@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BOOST_INCLUDES = @BOOST_INCLUDES@
+BOOST_LIBS = @BOOST_LIBS@
+BOTAN_TOOL = @BOTAN_TOOL@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CONTRIB_DIR = @CONTRIB_DIR@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CRYPTO_CFLAGS = @CRYPTO_CFLAGS@
+CRYPTO_INCLUDES = @CRYPTO_INCLUDES@
+CRYPTO_LDFLAGS = @CRYPTO_LDFLAGS@
+CRYPTO_LIBS = @CRYPTO_LIBS@
+CRYPTO_PACKAGE = @CRYPTO_PACKAGE@
+CRYPTO_RPATH = @CRYPTO_RPATH@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTCHECK_BOOST_CONFIGURE_FLAG = @DISTCHECK_BOOST_CONFIGURE_FLAG@
+DISTCHECK_CONTRIB_CONFIGURE_FLAG = @DISTCHECK_CONTRIB_CONFIGURE_FLAG@
+DISTCHECK_CRYPTO_CONFIGURE_FLAG = @DISTCHECK_CRYPTO_CONFIGURE_FLAG@
+DISTCHECK_GSSAPI_CONFIGURE_FLAG = @DISTCHECK_GSSAPI_CONFIGURE_FLAG@
+DISTCHECK_GTEST_CONFIGURE_FLAG = @DISTCHECK_GTEST_CONFIGURE_FLAG@
+DISTCHECK_KEA_SHELL_CONFIGURE_FLAG = @DISTCHECK_KEA_SHELL_CONFIGURE_FLAG@
+DISTCHECK_LIBYANGCPP_CONFIGURE_FLAG = @DISTCHECK_LIBYANGCPP_CONFIGURE_FLAG@
+DISTCHECK_LIBYANG_CONFIGURE_FLAG = @DISTCHECK_LIBYANG_CONFIGURE_FLAG@
+DISTCHECK_LOG4CPLUS_CONFIGURE_FLAG = @DISTCHECK_LOG4CPLUS_CONFIGURE_FLAG@
+DISTCHECK_MYSQL_CONFIGURE_FLAG = @DISTCHECK_MYSQL_CONFIGURE_FLAG@
+DISTCHECK_PERFDHCP_CONFIGURE_FLAG = @DISTCHECK_PERFDHCP_CONFIGURE_FLAG@
+DISTCHECK_PGSQL_CONFIGURE_FLAG = @DISTCHECK_PGSQL_CONFIGURE_FLAG@
+DISTCHECK_PREMIUM_CONFIGURE_FLAG = @DISTCHECK_PREMIUM_CONFIGURE_FLAG@
+DISTCHECK_SYSREPOCPP_CONFIGURE_FLAG = @DISTCHECK_SYSREPOCPP_CONFIGURE_FLAG@
+DISTCHECK_SYSREPO_CONFIGURE_FLAG = @DISTCHECK_SYSREPO_CONFIGURE_FLAG@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GENHTML = @GENHTML@
+GREP = @GREP@
+GSSAPI_CFLAGS = @GSSAPI_CFLAGS@
+GSSAPI_LIBS = @GSSAPI_LIBS@
+GTEST_CONFIG = @GTEST_CONFIG@
+GTEST_INCLUDES = @GTEST_INCLUDES@
+GTEST_LDADD = @GTEST_LDADD@
+GTEST_LDFLAGS = @GTEST_LDFLAGS@
+GTEST_SOURCE = @GTEST_SOURCE@
+HAVE_NETCONF = @HAVE_NETCONF@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+KEA_CXXFLAGS = @KEA_CXXFLAGS@
+KEA_SRCID = @KEA_SRCID@
+KRB5_CONFIG = @KRB5_CONFIG@
+LCOV = @LCOV@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LEX = @LEX@
+LEXLIB = @LEXLIB@
+LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIBYANGCPP_CPPFLAGS = @LIBYANGCPP_CPPFLAGS@
+LIBYANGCPP_INCLUDEDIR = @LIBYANGCPP_INCLUDEDIR@
+LIBYANGCPP_LIBS = @LIBYANGCPP_LIBS@
+LIBYANGCPP_PREFIX = @LIBYANGCPP_PREFIX@
+LIBYANGCPP_VERSION = @LIBYANGCPP_VERSION@
+LIBYANG_CPPFLAGS = @LIBYANG_CPPFLAGS@
+LIBYANG_INCLUDEDIR = @LIBYANG_INCLUDEDIR@
+LIBYANG_LIBS = @LIBYANG_LIBS@
+LIBYANG_PREFIX = @LIBYANG_PREFIX@
+LIBYANG_VERSION = @LIBYANG_VERSION@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LOG4CPLUS_INCLUDES = @LOG4CPLUS_INCLUDES@
+LOG4CPLUS_LIBS = @LOG4CPLUS_LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
+MAKEINFO = @MAKEINFO@
+MANIFEST_TOOL = @MANIFEST_TOOL@
+MKDIR_P = @MKDIR_P@
+MYSQL_CPPFLAGS = @MYSQL_CPPFLAGS@
+MYSQL_LIBS = @MYSQL_LIBS@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PACKAGE_VERSION_TYPE = @PACKAGE_VERSION_TYPE@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PDFLATEX = @PDFLATEX@
+PERL = @PERL@
+PGSQL_CPPFLAGS = @PGSQL_CPPFLAGS@
+PGSQL_LIBS = @PGSQL_LIBS@
+PKGPYTHONDIR = @PKGPYTHONDIR@
+PKG_CONFIG = @PKG_CONFIG@
+PLANTUML = @PLANTUML@
+PREMIUM_DIR = @PREMIUM_DIR@
+PYTHON = @PYTHON@
+PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
+PYTHON_PLATFORM = @PYTHON_PLATFORM@
+PYTHON_PREFIX = @PYTHON_PREFIX@
+PYTHON_VERSION = @PYTHON_VERSION@
+RANLIB = @RANLIB@
+SED = @SED@
+SEP = @SEP@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SPHINXBUILD = @SPHINXBUILD@
+SRPD_PLUGINS_PATH = @SRPD_PLUGINS_PATH@
+SR_PLUGINS_PATH = @SR_PLUGINS_PATH@
+SR_REPO_PATH = @SR_REPO_PATH@
+STRIP = @STRIP@
+SYSREPOCPP_CPPFLAGS = @SYSREPOCPP_CPPFLAGS@
+SYSREPOCPP_INCLUDEDIR = @SYSREPOCPP_INCLUDEDIR@
+SYSREPOCPP_LIBS = @SYSREPOCPP_LIBS@
+SYSREPOCPP_PREFIX = @SYSREPOCPP_PREFIX@
+SYSREPOCPP_VERSION = @SYSREPOCPP_VERSION@
+SYSREPO_CPPFLAGS = @SYSREPO_CPPFLAGS@
+SYSREPO_INCLUDEDIR = @SYSREPO_INCLUDEDIR@
+SYSREPO_LIBS = @SYSREPO_LIBS@
+SYSREPO_PREFIX = @SYSREPO_PREFIX@
+SYSREPO_VERSION = @SYSREPO_VERSION@
+USE_LCOV = @USE_LCOV@
+VALGRIND = @VALGRIND@
+VERSION = @VERSION@
+WARNING_GCC_44_STRICT_ALIASING_CFLAG = @WARNING_GCC_44_STRICT_ALIASING_CFLAG@
+YACC = @YACC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgpyexecdir = @pkgpyexecdir@
+pkgpythondir = @pkgpythondir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+pyexecdir = @pyexecdir@
+pythondir = @pythondir@
+runstatedir = @runstatedir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+
+# list of api files
+api_files = $(top_srcdir)/src/share/api/build-report.json \
+ $(top_srcdir)/src/share/api/cache-clear.json \
+ $(top_srcdir)/src/share/api/cache-flush.json \
+ $(top_srcdir)/src/share/api/cache-get-by-id.json \
+ $(top_srcdir)/src/share/api/cache-get.json \
+ $(top_srcdir)/src/share/api/cache-insert.json \
+ $(top_srcdir)/src/share/api/cache-load.json \
+ $(top_srcdir)/src/share/api/cache-remove.json \
+ $(top_srcdir)/src/share/api/cache-size.json \
+ $(top_srcdir)/src/share/api/cache-write.json \
+ $(top_srcdir)/src/share/api/class-add.json \
+ $(top_srcdir)/src/share/api/class-del.json \
+ $(top_srcdir)/src/share/api/class-get.json \
+ $(top_srcdir)/src/share/api/class-list.json \
+ $(top_srcdir)/src/share/api/class-update.json \
+ $(top_srcdir)/src/share/api/config-backend-pull.json \
+ $(top_srcdir)/src/share/api/config-get.json \
+ $(top_srcdir)/src/share/api/config-hash-get.json \
+ $(top_srcdir)/src/share/api/config-reload.json \
+ $(top_srcdir)/src/share/api/config-set.json \
+ $(top_srcdir)/src/share/api/config-test.json \
+ $(top_srcdir)/src/share/api/config-write.json \
+ $(top_srcdir)/src/share/api/dhcp-disable.json \
+ $(top_srcdir)/src/share/api/dhcp-enable.json \
+ $(top_srcdir)/src/share/api/extended-info4-upgrade.json \
+ $(top_srcdir)/src/share/api/gss-tsig-get-all.json \
+ $(top_srcdir)/src/share/api/gss-tsig-get.json \
+ $(top_srcdir)/src/share/api/gss-tsig-key-del.json \
+ $(top_srcdir)/src/share/api/gss-tsig-key-expire.json \
+ $(top_srcdir)/src/share/api/gss-tsig-key-get.json \
+ $(top_srcdir)/src/share/api/gss-tsig-list.json \
+ $(top_srcdir)/src/share/api/gss-tsig-purge-all.json \
+ $(top_srcdir)/src/share/api/gss-tsig-purge.json \
+ $(top_srcdir)/src/share/api/gss-tsig-rekey-all.json \
+ $(top_srcdir)/src/share/api/gss-tsig-rekey.json \
+ $(top_srcdir)/src/share/api/ha-continue.json \
+ $(top_srcdir)/src/share/api/ha-heartbeat.json \
+ $(top_srcdir)/src/share/api/ha-maintenance-cancel.json \
+ $(top_srcdir)/src/share/api/ha-maintenance-notify.json \
+ $(top_srcdir)/src/share/api/ha-maintenance-start.json \
+ $(top_srcdir)/src/share/api/ha-reset.json \
+ $(top_srcdir)/src/share/api/ha-scopes.json \
+ $(top_srcdir)/src/share/api/ha-sync-complete-notify.json \
+ $(top_srcdir)/src/share/api/ha-sync.json \
+ $(top_srcdir)/src/share/api/lease4-add.json \
+ $(top_srcdir)/src/share/api/lease4-del.json \
+ $(top_srcdir)/src/share/api/lease4-get-all.json \
+ $(top_srcdir)/src/share/api/lease4-get-by-client-id.json \
+ $(top_srcdir)/src/share/api/lease4-get-by-hostname.json \
+ $(top_srcdir)/src/share/api/lease4-get-by-hw-address.json \
+ $(top_srcdir)/src/share/api/lease4-get-page.json \
+ $(top_srcdir)/src/share/api/lease4-get.json \
+ $(top_srcdir)/src/share/api/lease4-resend-ddns.json \
+ $(top_srcdir)/src/share/api/lease4-update.json \
+ $(top_srcdir)/src/share/api/lease4-wipe.json \
+ $(top_srcdir)/src/share/api/lease4-write.json \
+ $(top_srcdir)/src/share/api/lease6-add.json \
+ $(top_srcdir)/src/share/api/lease6-bulk-apply.json \
+ $(top_srcdir)/src/share/api/lease6-del.json \
+ $(top_srcdir)/src/share/api/lease6-get-all.json \
+ $(top_srcdir)/src/share/api/lease6-get-by-duid.json \
+ $(top_srcdir)/src/share/api/lease6-get-by-hostname.json \
+ $(top_srcdir)/src/share/api/lease6-get-page.json \
+ $(top_srcdir)/src/share/api/lease6-get.json \
+ $(top_srcdir)/src/share/api/lease6-resend-ddns.json \
+ $(top_srcdir)/src/share/api/lease6-update.json \
+ $(top_srcdir)/src/share/api/lease6-wipe.json \
+ $(top_srcdir)/src/share/api/lease6-write.json \
+ $(top_srcdir)/src/share/api/leases-reclaim.json \
+ $(top_srcdir)/src/share/api/libreload.json \
+ $(top_srcdir)/src/share/api/list-commands.json \
+ $(top_srcdir)/src/share/api/network4-add.json \
+ $(top_srcdir)/src/share/api/network4-del.json \
+ $(top_srcdir)/src/share/api/network4-get.json \
+ $(top_srcdir)/src/share/api/network4-list.json \
+ $(top_srcdir)/src/share/api/network4-subnet-add.json \
+ $(top_srcdir)/src/share/api/network4-subnet-del.json \
+ $(top_srcdir)/src/share/api/network6-add.json \
+ $(top_srcdir)/src/share/api/network6-del.json \
+ $(top_srcdir)/src/share/api/network6-get.json \
+ $(top_srcdir)/src/share/api/network6-list.json \
+ $(top_srcdir)/src/share/api/network6-subnet-add.json \
+ $(top_srcdir)/src/share/api/network6-subnet-del.json \
+ $(top_srcdir)/src/share/api/remote-class4-del.json \
+ $(top_srcdir)/src/share/api/remote-class4-get-all.json \
+ $(top_srcdir)/src/share/api/remote-class4-get.json \
+ $(top_srcdir)/src/share/api/remote-class4-set.json \
+ $(top_srcdir)/src/share/api/remote-class6-del.json \
+ $(top_srcdir)/src/share/api/remote-class6-get-all.json \
+ $(top_srcdir)/src/share/api/remote-class6-get.json \
+ $(top_srcdir)/src/share/api/remote-class6-set.json \
+ $(top_srcdir)/src/share/api/remote-global-parameter4-del.json \
+ $(top_srcdir)/src/share/api/remote-global-parameter4-get-all.json \
+ $(top_srcdir)/src/share/api/remote-global-parameter4-get.json \
+ $(top_srcdir)/src/share/api/remote-global-parameter4-set.json \
+ $(top_srcdir)/src/share/api/remote-global-parameter6-del.json \
+ $(top_srcdir)/src/share/api/remote-global-parameter6-get-all.json \
+ $(top_srcdir)/src/share/api/remote-global-parameter6-get.json \
+ $(top_srcdir)/src/share/api/remote-global-parameter6-set.json \
+ $(top_srcdir)/src/share/api/remote-network4-del.json \
+ $(top_srcdir)/src/share/api/remote-network4-get.json \
+ $(top_srcdir)/src/share/api/remote-network4-list.json \
+ $(top_srcdir)/src/share/api/remote-network4-set.json \
+ $(top_srcdir)/src/share/api/remote-network6-del.json \
+ $(top_srcdir)/src/share/api/remote-network6-get.json \
+ $(top_srcdir)/src/share/api/remote-network6-list.json \
+ $(top_srcdir)/src/share/api/remote-network6-set.json \
+ $(top_srcdir)/src/share/api/remote-option-def4-del.json \
+ $(top_srcdir)/src/share/api/remote-option-def4-get-all.json \
+ $(top_srcdir)/src/share/api/remote-option-def4-get.json \
+ $(top_srcdir)/src/share/api/remote-option-def4-set.json \
+ $(top_srcdir)/src/share/api/remote-option-def6-del.json \
+ $(top_srcdir)/src/share/api/remote-option-def6-get-all.json \
+ $(top_srcdir)/src/share/api/remote-option-def6-get.json \
+ $(top_srcdir)/src/share/api/remote-option-def6-set.json \
+ $(top_srcdir)/src/share/api/remote-option4-global-del.json \
+ $(top_srcdir)/src/share/api/remote-option4-global-get-all.json \
+ $(top_srcdir)/src/share/api/remote-option4-global-get.json \
+ $(top_srcdir)/src/share/api/remote-option4-global-set.json \
+ $(top_srcdir)/src/share/api/remote-option4-network-del.json \
+ $(top_srcdir)/src/share/api/remote-option4-network-set.json \
+ $(top_srcdir)/src/share/api/remote-option4-pool-del.json \
+ $(top_srcdir)/src/share/api/remote-option4-pool-set.json \
+ $(top_srcdir)/src/share/api/remote-option4-subnet-del.json \
+ $(top_srcdir)/src/share/api/remote-option4-subnet-set.json \
+ $(top_srcdir)/src/share/api/remote-option6-global-del.json \
+ $(top_srcdir)/src/share/api/remote-option6-global-get-all.json \
+ $(top_srcdir)/src/share/api/remote-option6-global-get.json \
+ $(top_srcdir)/src/share/api/remote-option6-global-set.json \
+ $(top_srcdir)/src/share/api/remote-option6-network-del.json \
+ $(top_srcdir)/src/share/api/remote-option6-network-set.json \
+ $(top_srcdir)/src/share/api/remote-option6-pd-pool-del.json \
+ $(top_srcdir)/src/share/api/remote-option6-pd-pool-set.json \
+ $(top_srcdir)/src/share/api/remote-option6-pool-del.json \
+ $(top_srcdir)/src/share/api/remote-option6-pool-set.json \
+ $(top_srcdir)/src/share/api/remote-option6-subnet-del.json \
+ $(top_srcdir)/src/share/api/remote-option6-subnet-set.json \
+ $(top_srcdir)/src/share/api/remote-server4-del.json \
+ $(top_srcdir)/src/share/api/remote-server4-get-all.json \
+ $(top_srcdir)/src/share/api/remote-server4-get.json \
+ $(top_srcdir)/src/share/api/remote-server4-set.json \
+ $(top_srcdir)/src/share/api/remote-server6-del.json \
+ $(top_srcdir)/src/share/api/remote-server6-get-all.json \
+ $(top_srcdir)/src/share/api/remote-server6-get.json \
+ $(top_srcdir)/src/share/api/remote-server6-set.json \
+ $(top_srcdir)/src/share/api/remote-subnet4-del-by-id.json \
+ $(top_srcdir)/src/share/api/remote-subnet4-del-by-prefix.json \
+ $(top_srcdir)/src/share/api/remote-subnet4-get-by-id.json \
+ $(top_srcdir)/src/share/api/remote-subnet4-get-by-prefix.json \
+ $(top_srcdir)/src/share/api/remote-subnet4-list.json \
+ $(top_srcdir)/src/share/api/remote-subnet4-set.json \
+ $(top_srcdir)/src/share/api/remote-subnet6-del-by-id.json \
+ $(top_srcdir)/src/share/api/remote-subnet6-del-by-prefix.json \
+ $(top_srcdir)/src/share/api/remote-subnet6-get-by-id.json \
+ $(top_srcdir)/src/share/api/remote-subnet6-get-by-prefix.json \
+ $(top_srcdir)/src/share/api/remote-subnet6-list.json \
+ $(top_srcdir)/src/share/api/remote-subnet6-set.json \
+ $(top_srcdir)/src/share/api/reservation-add.json \
+ $(top_srcdir)/src/share/api/reservation-del.json \
+ $(top_srcdir)/src/share/api/reservation-get-all.json \
+ $(top_srcdir)/src/share/api/reservation-get-by-address.json \
+ $(top_srcdir)/src/share/api/reservation-get-by-hostname.json \
+ $(top_srcdir)/src/share/api/reservation-get-by-id.json \
+ $(top_srcdir)/src/share/api/reservation-get-page.json \
+ $(top_srcdir)/src/share/api/reservation-get.json \
+ $(top_srcdir)/src/share/api/reservation-update.json \
+ $(top_srcdir)/src/share/api/server-tag-get.json \
+ $(top_srcdir)/src/share/api/shutdown.json \
+ $(top_srcdir)/src/share/api/stat-lease4-get.json \
+ $(top_srcdir)/src/share/api/stat-lease6-get.json \
+ $(top_srcdir)/src/share/api/statistic-get-all.json \
+ $(top_srcdir)/src/share/api/statistic-get.json \
+ $(top_srcdir)/src/share/api/statistic-remove-all.json \
+ $(top_srcdir)/src/share/api/statistic-remove.json \
+ $(top_srcdir)/src/share/api/statistic-reset-all.json \
+ $(top_srcdir)/src/share/api/statistic-reset.json \
+ $(top_srcdir)/src/share/api/statistic-sample-age-set-all.json \
+ $(top_srcdir)/src/share/api/statistic-sample-age-set.json \
+ $(top_srcdir)/src/share/api/statistic-sample-count-set-all.json \
+ $(top_srcdir)/src/share/api/statistic-sample-count-set.json \
+ $(top_srcdir)/src/share/api/status-get.json \
+ $(top_srcdir)/src/share/api/subnet4-add.json \
+ $(top_srcdir)/src/share/api/subnet4-del.json \
+ $(top_srcdir)/src/share/api/subnet4-delta-add.json \
+ $(top_srcdir)/src/share/api/subnet4-delta-del.json \
+ $(top_srcdir)/src/share/api/subnet4-get.json \
+ $(top_srcdir)/src/share/api/subnet4-list.json \
+ $(top_srcdir)/src/share/api/subnet4-update.json \
+ $(top_srcdir)/src/share/api/subnet6-add.json \
+ $(top_srcdir)/src/share/api/subnet6-del.json \
+ $(top_srcdir)/src/share/api/subnet6-delta-add.json \
+ $(top_srcdir)/src/share/api/subnet6-delta-del.json \
+ $(top_srcdir)/src/share/api/subnet6-get.json \
+ $(top_srcdir)/src/share/api/subnet6-list.json \
+ $(top_srcdir)/src/share/api/subnet6-update.json \
+ $(top_srcdir)/src/share/api/version-get.json
+EXTRA_DIST = api_files.mk README _template.json generate-templates \
+ generate-api-files $(api_files)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/api_files.mk $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/share/api/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign src/share/api/Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
+ esac;
+$(srcdir)/api_files.mk $(am__empty):
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags TAGS:
+
+ctags CTAGS:
+
+cscope cscopelist:
+
+
+distdir: $(BUILT_SOURCES)
+ $(MAKE) $(AM_MAKEFLAGS) distdir-am
+
+distdir-am: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
+ else \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ if test -z '$(STRIP)'; then \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ install; \
+ else \
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
+ fi
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-local
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ cscopelist-am ctags-am distclean distclean-generic \
+ distclean-libtool distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am \
+ install-data-local install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-strip installcheck \
+ installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \
+ uninstall-am uninstall-local
+
+.PRECIOUS: Makefile
+
+
+install-data-local:
+ mkdir -p $(DESTDIR)$(datarootdir)/${PACKAGE_NAME}/api
+ cp $(api_files) $(DESTDIR)$(datarootdir)/${PACKAGE_NAME}/api
+
+uninstall-local:
+ rm -rf $(DESTDIR)$(datarootdir)/${PACKAGE_NAME}/api
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/share/api/README b/src/share/api/README
new file mode 100644
index 0000000..fa659f6
--- /dev/null
+++ b/src/share/api/README
@@ -0,0 +1,27 @@
+There are several steps needed to document new API command:
+
+1. (optional) run: ./generate-templates cmd1 cmd2...
+ This will go through the list of commands given in arguments
+ and will check if there are corresponding JSON files in name.json
+ If the file is missing, a new JSON will be created using template.
+ If you dislike this generator, you can always use _template.json
+ and copy it over under the name of a new command.
+2. Edit 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.
+3. Update api_files.mk. You can also run: ./generate-api-files > api_files.mk
+ or check the update by: ./generate-api-files | diff - api_files.mk
+4. Rebuild User's Guide as usual, run in doc/sphinx folder: make
+
+Files in this directory:
+ - README: this file
+ - _template.json: template used by generate-templates
+ - api-files.mk: list of command files for inclusion in Makefiles
+ (can be build by ./generate-api-files)
+ - generate-templates: script generating new command files from the
+ the template (_template.json)
+ - generate-api-files: script generating api-files.mk
diff --git a/src/share/api/_template.json b/src/share/api/_template.json
new file mode 100644
index 0000000..4ccbb9f
--- /dev/null
+++ b/src/share/api/_template.json
@@ -0,0 +1,48 @@
+// Note the *.json files are to be processed by api2doc.py and possibly other
+// JSON tools that do not handle comments. If using this template, make sure you
+// have all the comments removed.
+{
+ // This specifies the name of the command. Must be the same as the filename.
+ "name": "template-command",
+
+ // This provides a short description. Since JSON does not support multi-line
+ // strings, each line is a separate string. Feel free to have one long string,
+ // or several lines of nicely wrapped text.
+ "brief": [ "a sentence or two explaining what it is" ],
+
+ // This provides a full description. Since we have most (all?) commands
+ // already documented, we don't want to copy over the text. Instead,
+ // we provide links to specific section.
+ "description": "See :ref:`anchor-in-the-docs`/>",
+
+ // This enumerates the daemons that are able to handle specific commands.
+ // Usually this will be a subset of those specified below as there are very
+ // few commands that are supported by every daemon.
+ "support": [ "kea-dhcp4", "kea-dhcp6", "dhcp-ddns", "ca", "netconf" ],
+
+ // Historical information. May need a bit of digging, but this info can
+ // be extracted by looking at older Kea user guides. We have them published
+ // on FTP.
+ "avail": "first version the command appeared in",
+
+ // Many commands are provided by a hook. Specify the name of the hook here.
+ // If this hook is provided by the daemons natively (without needing to load
+ // a hook), remove the whole "hook" entry.
+ "hook": "name of the hook that provides this command. remove if provided by the core code",
+
+ // This defines the read or write access. Default is write access
+ // to not leave unrestricted access to a dangerous command by accident.
+ "access": "write",
+
+ // This defines the syntax of the command.
+ "cmd-syntax": [ "Syntax of the command" ],
+
+ // This defines a description printed immediately below the command syntax.
+ "cmd-comment": [ "Possibly some extra comments after the syntax." ],
+
+ // This defines the syntax of the response.
+ "resp-syntax": [ "Syntax of the response" ],
+
+ // This defines a description printed immediately below the response syntax.
+ "resp-comment": [ "Optional extra comments after the response syntax." ]
+}
diff --git a/src/share/api/api_files.mk b/src/share/api/api_files.mk
new file mode 100644
index 0000000..bb3f761
--- /dev/null
+++ b/src/share/api/api_files.mk
@@ -0,0 +1,196 @@
+api_files += $(top_srcdir)/src/share/api/build-report.json
+api_files += $(top_srcdir)/src/share/api/cache-clear.json
+api_files += $(top_srcdir)/src/share/api/cache-flush.json
+api_files += $(top_srcdir)/src/share/api/cache-get-by-id.json
+api_files += $(top_srcdir)/src/share/api/cache-get.json
+api_files += $(top_srcdir)/src/share/api/cache-insert.json
+api_files += $(top_srcdir)/src/share/api/cache-load.json
+api_files += $(top_srcdir)/src/share/api/cache-remove.json
+api_files += $(top_srcdir)/src/share/api/cache-size.json
+api_files += $(top_srcdir)/src/share/api/cache-write.json
+api_files += $(top_srcdir)/src/share/api/class-add.json
+api_files += $(top_srcdir)/src/share/api/class-del.json
+api_files += $(top_srcdir)/src/share/api/class-get.json
+api_files += $(top_srcdir)/src/share/api/class-list.json
+api_files += $(top_srcdir)/src/share/api/class-update.json
+api_files += $(top_srcdir)/src/share/api/config-backend-pull.json
+api_files += $(top_srcdir)/src/share/api/config-get.json
+api_files += $(top_srcdir)/src/share/api/config-hash-get.json
+api_files += $(top_srcdir)/src/share/api/config-reload.json
+api_files += $(top_srcdir)/src/share/api/config-set.json
+api_files += $(top_srcdir)/src/share/api/config-test.json
+api_files += $(top_srcdir)/src/share/api/config-write.json
+api_files += $(top_srcdir)/src/share/api/dhcp-disable.json
+api_files += $(top_srcdir)/src/share/api/dhcp-enable.json
+api_files += $(top_srcdir)/src/share/api/extended-info4-upgrade.json
+api_files += $(top_srcdir)/src/share/api/gss-tsig-get-all.json
+api_files += $(top_srcdir)/src/share/api/gss-tsig-get.json
+api_files += $(top_srcdir)/src/share/api/gss-tsig-key-del.json
+api_files += $(top_srcdir)/src/share/api/gss-tsig-key-expire.json
+api_files += $(top_srcdir)/src/share/api/gss-tsig-key-get.json
+api_files += $(top_srcdir)/src/share/api/gss-tsig-list.json
+api_files += $(top_srcdir)/src/share/api/gss-tsig-purge-all.json
+api_files += $(top_srcdir)/src/share/api/gss-tsig-purge.json
+api_files += $(top_srcdir)/src/share/api/gss-tsig-rekey-all.json
+api_files += $(top_srcdir)/src/share/api/gss-tsig-rekey.json
+api_files += $(top_srcdir)/src/share/api/ha-continue.json
+api_files += $(top_srcdir)/src/share/api/ha-heartbeat.json
+api_files += $(top_srcdir)/src/share/api/ha-maintenance-cancel.json
+api_files += $(top_srcdir)/src/share/api/ha-maintenance-notify.json
+api_files += $(top_srcdir)/src/share/api/ha-maintenance-start.json
+api_files += $(top_srcdir)/src/share/api/ha-reset.json
+api_files += $(top_srcdir)/src/share/api/ha-scopes.json
+api_files += $(top_srcdir)/src/share/api/ha-sync-complete-notify.json
+api_files += $(top_srcdir)/src/share/api/ha-sync.json
+api_files += $(top_srcdir)/src/share/api/lease4-add.json
+api_files += $(top_srcdir)/src/share/api/lease4-del.json
+api_files += $(top_srcdir)/src/share/api/lease4-get-all.json
+api_files += $(top_srcdir)/src/share/api/lease4-get-by-client-id.json
+api_files += $(top_srcdir)/src/share/api/lease4-get-by-hostname.json
+api_files += $(top_srcdir)/src/share/api/lease4-get-by-hw-address.json
+api_files += $(top_srcdir)/src/share/api/lease4-get-page.json
+api_files += $(top_srcdir)/src/share/api/lease4-get.json
+api_files += $(top_srcdir)/src/share/api/lease4-resend-ddns.json
+api_files += $(top_srcdir)/src/share/api/lease4-update.json
+api_files += $(top_srcdir)/src/share/api/lease4-wipe.json
+api_files += $(top_srcdir)/src/share/api/lease4-write.json
+api_files += $(top_srcdir)/src/share/api/lease6-add.json
+api_files += $(top_srcdir)/src/share/api/lease6-bulk-apply.json
+api_files += $(top_srcdir)/src/share/api/lease6-del.json
+api_files += $(top_srcdir)/src/share/api/lease6-get-all.json
+api_files += $(top_srcdir)/src/share/api/lease6-get-by-duid.json
+api_files += $(top_srcdir)/src/share/api/lease6-get-by-hostname.json
+api_files += $(top_srcdir)/src/share/api/lease6-get-page.json
+api_files += $(top_srcdir)/src/share/api/lease6-get.json
+api_files += $(top_srcdir)/src/share/api/lease6-resend-ddns.json
+api_files += $(top_srcdir)/src/share/api/lease6-update.json
+api_files += $(top_srcdir)/src/share/api/lease6-wipe.json
+api_files += $(top_srcdir)/src/share/api/lease6-write.json
+api_files += $(top_srcdir)/src/share/api/leases-reclaim.json
+api_files += $(top_srcdir)/src/share/api/libreload.json
+api_files += $(top_srcdir)/src/share/api/list-commands.json
+api_files += $(top_srcdir)/src/share/api/network4-add.json
+api_files += $(top_srcdir)/src/share/api/network4-del.json
+api_files += $(top_srcdir)/src/share/api/network4-get.json
+api_files += $(top_srcdir)/src/share/api/network4-list.json
+api_files += $(top_srcdir)/src/share/api/network4-subnet-add.json
+api_files += $(top_srcdir)/src/share/api/network4-subnet-del.json
+api_files += $(top_srcdir)/src/share/api/network6-add.json
+api_files += $(top_srcdir)/src/share/api/network6-del.json
+api_files += $(top_srcdir)/src/share/api/network6-get.json
+api_files += $(top_srcdir)/src/share/api/network6-list.json
+api_files += $(top_srcdir)/src/share/api/network6-subnet-add.json
+api_files += $(top_srcdir)/src/share/api/network6-subnet-del.json
+api_files += $(top_srcdir)/src/share/api/remote-class4-del.json
+api_files += $(top_srcdir)/src/share/api/remote-class4-get-all.json
+api_files += $(top_srcdir)/src/share/api/remote-class4-get.json
+api_files += $(top_srcdir)/src/share/api/remote-class4-set.json
+api_files += $(top_srcdir)/src/share/api/remote-class6-del.json
+api_files += $(top_srcdir)/src/share/api/remote-class6-get-all.json
+api_files += $(top_srcdir)/src/share/api/remote-class6-get.json
+api_files += $(top_srcdir)/src/share/api/remote-class6-set.json
+api_files += $(top_srcdir)/src/share/api/remote-global-parameter4-del.json
+api_files += $(top_srcdir)/src/share/api/remote-global-parameter4-get-all.json
+api_files += $(top_srcdir)/src/share/api/remote-global-parameter4-get.json
+api_files += $(top_srcdir)/src/share/api/remote-global-parameter4-set.json
+api_files += $(top_srcdir)/src/share/api/remote-global-parameter6-del.json
+api_files += $(top_srcdir)/src/share/api/remote-global-parameter6-get-all.json
+api_files += $(top_srcdir)/src/share/api/remote-global-parameter6-get.json
+api_files += $(top_srcdir)/src/share/api/remote-global-parameter6-set.json
+api_files += $(top_srcdir)/src/share/api/remote-network4-del.json
+api_files += $(top_srcdir)/src/share/api/remote-network4-get.json
+api_files += $(top_srcdir)/src/share/api/remote-network4-list.json
+api_files += $(top_srcdir)/src/share/api/remote-network4-set.json
+api_files += $(top_srcdir)/src/share/api/remote-network6-del.json
+api_files += $(top_srcdir)/src/share/api/remote-network6-get.json
+api_files += $(top_srcdir)/src/share/api/remote-network6-list.json
+api_files += $(top_srcdir)/src/share/api/remote-network6-set.json
+api_files += $(top_srcdir)/src/share/api/remote-option-def4-del.json
+api_files += $(top_srcdir)/src/share/api/remote-option-def4-get-all.json
+api_files += $(top_srcdir)/src/share/api/remote-option-def4-get.json
+api_files += $(top_srcdir)/src/share/api/remote-option-def4-set.json
+api_files += $(top_srcdir)/src/share/api/remote-option-def6-del.json
+api_files += $(top_srcdir)/src/share/api/remote-option-def6-get-all.json
+api_files += $(top_srcdir)/src/share/api/remote-option-def6-get.json
+api_files += $(top_srcdir)/src/share/api/remote-option-def6-set.json
+api_files += $(top_srcdir)/src/share/api/remote-option4-global-del.json
+api_files += $(top_srcdir)/src/share/api/remote-option4-global-get-all.json
+api_files += $(top_srcdir)/src/share/api/remote-option4-global-get.json
+api_files += $(top_srcdir)/src/share/api/remote-option4-global-set.json
+api_files += $(top_srcdir)/src/share/api/remote-option4-network-del.json
+api_files += $(top_srcdir)/src/share/api/remote-option4-network-set.json
+api_files += $(top_srcdir)/src/share/api/remote-option4-pool-del.json
+api_files += $(top_srcdir)/src/share/api/remote-option4-pool-set.json
+api_files += $(top_srcdir)/src/share/api/remote-option4-subnet-del.json
+api_files += $(top_srcdir)/src/share/api/remote-option4-subnet-set.json
+api_files += $(top_srcdir)/src/share/api/remote-option6-global-del.json
+api_files += $(top_srcdir)/src/share/api/remote-option6-global-get-all.json
+api_files += $(top_srcdir)/src/share/api/remote-option6-global-get.json
+api_files += $(top_srcdir)/src/share/api/remote-option6-global-set.json
+api_files += $(top_srcdir)/src/share/api/remote-option6-network-del.json
+api_files += $(top_srcdir)/src/share/api/remote-option6-network-set.json
+api_files += $(top_srcdir)/src/share/api/remote-option6-pd-pool-del.json
+api_files += $(top_srcdir)/src/share/api/remote-option6-pd-pool-set.json
+api_files += $(top_srcdir)/src/share/api/remote-option6-pool-del.json
+api_files += $(top_srcdir)/src/share/api/remote-option6-pool-set.json
+api_files += $(top_srcdir)/src/share/api/remote-option6-subnet-del.json
+api_files += $(top_srcdir)/src/share/api/remote-option6-subnet-set.json
+api_files += $(top_srcdir)/src/share/api/remote-server4-del.json
+api_files += $(top_srcdir)/src/share/api/remote-server4-get-all.json
+api_files += $(top_srcdir)/src/share/api/remote-server4-get.json
+api_files += $(top_srcdir)/src/share/api/remote-server4-set.json
+api_files += $(top_srcdir)/src/share/api/remote-server6-del.json
+api_files += $(top_srcdir)/src/share/api/remote-server6-get-all.json
+api_files += $(top_srcdir)/src/share/api/remote-server6-get.json
+api_files += $(top_srcdir)/src/share/api/remote-server6-set.json
+api_files += $(top_srcdir)/src/share/api/remote-subnet4-del-by-id.json
+api_files += $(top_srcdir)/src/share/api/remote-subnet4-del-by-prefix.json
+api_files += $(top_srcdir)/src/share/api/remote-subnet4-get-by-id.json
+api_files += $(top_srcdir)/src/share/api/remote-subnet4-get-by-prefix.json
+api_files += $(top_srcdir)/src/share/api/remote-subnet4-list.json
+api_files += $(top_srcdir)/src/share/api/remote-subnet4-set.json
+api_files += $(top_srcdir)/src/share/api/remote-subnet6-del-by-id.json
+api_files += $(top_srcdir)/src/share/api/remote-subnet6-del-by-prefix.json
+api_files += $(top_srcdir)/src/share/api/remote-subnet6-get-by-id.json
+api_files += $(top_srcdir)/src/share/api/remote-subnet6-get-by-prefix.json
+api_files += $(top_srcdir)/src/share/api/remote-subnet6-list.json
+api_files += $(top_srcdir)/src/share/api/remote-subnet6-set.json
+api_files += $(top_srcdir)/src/share/api/reservation-add.json
+api_files += $(top_srcdir)/src/share/api/reservation-del.json
+api_files += $(top_srcdir)/src/share/api/reservation-get-all.json
+api_files += $(top_srcdir)/src/share/api/reservation-get-by-address.json
+api_files += $(top_srcdir)/src/share/api/reservation-get-by-hostname.json
+api_files += $(top_srcdir)/src/share/api/reservation-get-by-id.json
+api_files += $(top_srcdir)/src/share/api/reservation-get-page.json
+api_files += $(top_srcdir)/src/share/api/reservation-get.json
+api_files += $(top_srcdir)/src/share/api/reservation-update.json
+api_files += $(top_srcdir)/src/share/api/server-tag-get.json
+api_files += $(top_srcdir)/src/share/api/shutdown.json
+api_files += $(top_srcdir)/src/share/api/stat-lease4-get.json
+api_files += $(top_srcdir)/src/share/api/stat-lease6-get.json
+api_files += $(top_srcdir)/src/share/api/statistic-get-all.json
+api_files += $(top_srcdir)/src/share/api/statistic-get.json
+api_files += $(top_srcdir)/src/share/api/statistic-remove-all.json
+api_files += $(top_srcdir)/src/share/api/statistic-remove.json
+api_files += $(top_srcdir)/src/share/api/statistic-reset-all.json
+api_files += $(top_srcdir)/src/share/api/statistic-reset.json
+api_files += $(top_srcdir)/src/share/api/statistic-sample-age-set-all.json
+api_files += $(top_srcdir)/src/share/api/statistic-sample-age-set.json
+api_files += $(top_srcdir)/src/share/api/statistic-sample-count-set-all.json
+api_files += $(top_srcdir)/src/share/api/statistic-sample-count-set.json
+api_files += $(top_srcdir)/src/share/api/status-get.json
+api_files += $(top_srcdir)/src/share/api/subnet4-add.json
+api_files += $(top_srcdir)/src/share/api/subnet4-del.json
+api_files += $(top_srcdir)/src/share/api/subnet4-delta-add.json
+api_files += $(top_srcdir)/src/share/api/subnet4-delta-del.json
+api_files += $(top_srcdir)/src/share/api/subnet4-get.json
+api_files += $(top_srcdir)/src/share/api/subnet4-list.json
+api_files += $(top_srcdir)/src/share/api/subnet4-update.json
+api_files += $(top_srcdir)/src/share/api/subnet6-add.json
+api_files += $(top_srcdir)/src/share/api/subnet6-del.json
+api_files += $(top_srcdir)/src/share/api/subnet6-delta-add.json
+api_files += $(top_srcdir)/src/share/api/subnet6-delta-del.json
+api_files += $(top_srcdir)/src/share/api/subnet6-get.json
+api_files += $(top_srcdir)/src/share/api/subnet6-list.json
+api_files += $(top_srcdir)/src/share/api/subnet6-update.json
+api_files += $(top_srcdir)/src/share/api/version-get.json
diff --git a/src/share/api/build-report.json b/src/share/api/build-report.json
new file mode 100644
index 0000000..bd09c08
--- /dev/null
+++ b/src/share/api/build-report.json
@@ -0,0 +1,28 @@
+{
+ "access": "read",
+ "avail": "1.2.0",
+ "brief": [
+ "This command returns the list of compilation options that this particular binary was built with."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"build-report\"",
+ "}"
+ ],
+ "name": "build-report",
+ "resp-comment": [
+ ""
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": <string with build details>",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns",
+ "kea-ctrl-agent"
+ ]
+}
diff --git a/src/share/api/cache-clear.json b/src/share/api/cache-clear.json
new file mode 100644
index 0000000..47ef877
--- /dev/null
+++ b/src/share/api/cache-clear.json
@@ -0,0 +1,13 @@
+{
+ "access": "write",
+ "avail": "1.4.0",
+ "brief": [
+ "This command removes all cached host reservations."
+ ],
+ "hook": "host_cache",
+ "name": "cache-clear",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/cache-flush.json b/src/share/api/cache-flush.json
new file mode 100644
index 0000000..be7371b
--- /dev/null
+++ b/src/share/api/cache-flush.json
@@ -0,0 +1,19 @@
+{
+ "access": "write",
+ "avail": "1.4.0",
+ "brief": [
+ "This command removes up to the given number or all cached host reservations."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"cache-flush\",",
+ " \"arguments\": 5",
+ "}"
+ ],
+ "hook": "host_cache",
+ "name": "cache-flush",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/cache-get-by-id.json b/src/share/api/cache-get-by-id.json
new file mode 100644
index 0000000..64bb8fd
--- /dev/null
+++ b/src/share/api/cache-get-by-id.json
@@ -0,0 +1,28 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command returns entries matching the given identifier from the host cache."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"cache-get-by-id\",",
+ " \"arguments\": {",
+ " \"hw-address\": \"01:02:03:04:05:06\"",
+ " }",
+ "}"
+ ],
+ "hook": "host_cache",
+ "name": "cache-get-by-id",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 entries returned.\",",
+ " \"arguments\": <list of host reservations>",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/cache-get.json b/src/share/api/cache-get.json
new file mode 100644
index 0000000..0ea703e
--- /dev/null
+++ b/src/share/api/cache-get.json
@@ -0,0 +1,20 @@
+{
+ "access": "read",
+ "avail": "1.4.0",
+ "brief": [
+ "This command returns the full content of the host cache."
+ ],
+ "hook": "host_cache",
+ "name": "cache-get",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"123 entries returned.\",",
+ " \"arguments\": <list of host reservations>",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/cache-insert.json b/src/share/api/cache-insert.json
new file mode 100644
index 0000000..d0cc594
--- /dev/null
+++ b/src/share/api/cache-insert.json
@@ -0,0 +1,55 @@
+{
+ "access": "write",
+ "avail": "1.4.0",
+ "brief": [
+ "This command inserts a host into the cache."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"cache-insert\",",
+ " \"arguments\": {",
+ " \"hw-address\": \"01:02:03:04:05:06\",",
+ " \"subnet-id4\": 4,",
+ " \"subnet-id6\": 0,",
+ " \"ip-address\": \"192.0.2.100\",",
+ " \"hostname\": \"somehost.example.org\",",
+ " \"client-classes4\": [ ],",
+ " \"client-classes6\": [ ],",
+ " \"option-data4\": [ ],",
+ " \"option-data6\": [ ],",
+ " \"next-server\": \"192.0.0.2\",",
+ " \"server-hostname\": \"server-hostname.example.org\",",
+ " \"boot-file-name\": \"bootfile.efi\",",
+ " \"host-id\": 0",
+ " }",
+ "}",
+ "",
+ "Another example that adds IPv6 host reservation to cache is:",
+ "{",
+ " \"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\": \"0.0.0.0\",",
+ " \"server-hostname\": \"\",",
+ " \"boot-file-name\": \"\",",
+ " \"host-id\": 0",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"host-reservation-v4\"/>",
+ "hook": "host_cache",
+ "name": "cache-insert",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/cache-load.json b/src/share/api/cache-load.json
new file mode 100644
index 0000000..ed06c48
--- /dev/null
+++ b/src/share/api/cache-load.json
@@ -0,0 +1,20 @@
+{
+ "access": "write",
+ "avail": "1.4.0",
+ "brief": [
+ "This command allows the contents of a file on disk to be loaded into an in-memory cache."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"cache-load\",",
+ " \"arguments\": \"/tmp/kea-host-cache.json\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-cache-load\"/>",
+ "hook": "host_cache",
+ "name": "cache-load",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/cache-remove.json b/src/share/api/cache-remove.json
new file mode 100644
index 0000000..ccf6674
--- /dev/null
+++ b/src/share/api/cache-remove.json
@@ -0,0 +1,32 @@
+{
+ "access": "write",
+ "avail": "1.4.0",
+ "brief": [
+ "This command removes entries from the host cache. It takes parameters similar to the ``reservation-get`` command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"cache-remove\",",
+ " \"arguments\": {",
+ " \"ip-address\": \"192.0.2.1\",",
+ " \"subnet-id\": 123",
+ " }",
+ "}",
+ "",
+ "Another example that removes the IPv6 host identifier by DUID and specific subnet-id is:",
+ "{",
+ " \"command\": \"cache-remove\",",
+ " \"arguments\": {",
+ " \"duid\": \"00:01:ab:cd:f0:a1:c2:d3:e4\",",
+ " \"subnet-id\": 123",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-cache-remove\"/>",
+ "hook": "host_cache",
+ "name": "cache-remove",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/cache-size.json b/src/share/api/cache-size.json
new file mode 100644
index 0000000..b92b00c
--- /dev/null
+++ b/src/share/api/cache-size.json
@@ -0,0 +1,20 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command returns the number of entries in the host cache."
+ ],
+ "hook": "host_cache",
+ "name": "cache-size",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"123 entries.\",",
+ " \"arguments\": { \"size\": 123 }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/cache-write.json b/src/share/api/cache-write.json
new file mode 100644
index 0000000..3d6850a
--- /dev/null
+++ b/src/share/api/cache-write.json
@@ -0,0 +1,22 @@
+{
+ "access": "write",
+ "avail": "1.4.0",
+ "brief": [
+ "This command instructs Kea to write its host cache content to disk."
+ ],
+ "cmd-comment": [
+ "The command takes one mandatory argument that specifies the filename path of a file to be written."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"cache-write\",",
+ " \"arguments\": \"/path/to/the/file.json\"",
+ "}"
+ ],
+ "hook": "host_cache",
+ "name": "cache-write",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/class-add.json b/src/share/api/class-add.json
new file mode 100644
index 0000000..07d8762
--- /dev/null
+++ b/src/share/api/class-add.json
@@ -0,0 +1,42 @@
+{
+ "access": "write",
+ "avail": "1.5.0",
+ "brief": [
+ "This command adds a new class to the existing server configuration."
+ ],
+ "cmd-comment": [
+ "The ``next-server``, ``server-hostname``, and ``boot-file-name`` are DHCPv4-specific. Only one client class can be added with a single command. "
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"class-add\",",
+ " \"arguments\": {",
+ " \"client-classes\": [ {",
+ " \"name\": <name of the class>,",
+ " \"test\": <test expression to be evaluated on incoming packets>,",
+ " \"option-data\": [ <option values here> ],",
+ " \"option-def\": [ <option definitions here> ],",
+ " \"next-server\": <ipv4 address>,",
+ " \"server-hostname\": <string>,",
+ " \"boot-file-name\": <name of the boot file>",
+ " } ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-class-add\"/>",
+ "hook": "class_cmds",
+ "name": "class-add",
+ "resp-comment": [
+ "The command is successful (result 0), unless the class name is a duplicate or another error occurs (result 1)."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"Class '<class-name>' added.\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/class-del.json b/src/share/api/class-del.json
new file mode 100644
index 0000000..38c4818
--- /dev/null
+++ b/src/share/api/class-del.json
@@ -0,0 +1,31 @@
+{
+ "access": "write",
+ "avail": "1.5.0",
+ "brief": [
+ "This command removes a client class from the server configuration."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"class-del\",",
+ " \"arguments\": {",
+ " \"name\": <name of the class>",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-class-del\"/>",
+ "hook": "class_cmds",
+ "name": "class-del",
+ "resp-comment": [
+ "The command returns a result of 3 (empty) if the client class does not exist. If the client class exists, the returned result is 0 if the deletion was successful; the result is 1 if the deletion is unsuccessful."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"Class '<class-name>' deleted.\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/class-get.json b/src/share/api/class-get.json
new file mode 100644
index 0000000..1d7c5b2
--- /dev/null
+++ b/src/share/api/class-get.json
@@ -0,0 +1,45 @@
+{
+ "access": "read",
+ "avail": "1.5.0",
+ "brief": [
+ "This command returns detailed information about an existing client class."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"class-get\",",
+ " \"arguments\": {",
+ " \"name\": <name of the class>",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-class-get\"/>",
+ "hook": "class_cmds",
+ "name": "class-get",
+ "resp-comment": [
+ "The returned information depends on the DHCP server type, i.e. some parameters are specific to the DHCPv4 server. Also, some parameters may not be returned if they are not set for the client class. If a class with the specified name does not exist, a result of 3 (empty) is returned. If the client class is found, the result of 0 is returned. If there is an error while processing the command, the result of 1 is returned."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"Class '<class-name>' definition returned\",",
+ " \"arguments\": {",
+ " \"client-classes\": [",
+ " {",
+ " \"name\": <name of the class>,",
+ " \"only-if-required\": <only if required boolean value>,",
+ " \"test\": <test expression to be evaluated on incoming packets>,",
+ " \"option-data\": [ <option values here> ],",
+ " \"option-def\": [ <option definitions here> ],",
+ " \"next-server\": <ipv4 address>,",
+ " \"server-hostname\": <string>,",
+ " \"boot-file-name\": <name of the boot file>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/class-list.json b/src/share/api/class-list.json
new file mode 100644
index 0000000..17544c8
--- /dev/null
+++ b/src/share/api/class-list.json
@@ -0,0 +1,48 @@
+{
+ "access": "read",
+ "avail": "1.5.0",
+ "brief": [
+ "This command retrieves a list of all client classes from the server configuration."
+ ],
+ "cmd-comment": [
+ "This command includes no arguments."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"class-list\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-class-list\"/>",
+ "hook": "class_cmds",
+ "name": "class-list",
+ "resp-comment": [
+ "The returned list of classes merely contains their names.",
+ "In order to retrieve full information about one of these",
+ "classes, use :ref:`command-class-get`.",
+ "The returned result is 3 (empty) if no classes are found.",
+ "If the command is processed successfully and the list of",
+ "client classes is not empty, the result of 0 is returned.",
+ "If there is an error while processing the command, the",
+ "result of 1 is returned."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"'<number of>' classes found\",",
+ " \"arguments\": {",
+ " \"client-classes\": [",
+ " {",
+ " \"name\": <first class name>",
+ " },",
+ " {",
+ " \"name\": <second class name>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/class-update.json b/src/share/api/class-update.json
new file mode 100644
index 0000000..c3b8284
--- /dev/null
+++ b/src/share/api/class-update.json
@@ -0,0 +1,42 @@
+{
+ "access": "write",
+ "avail": "1.5.0",
+ "brief": [
+ "This command updates an existing client class in the server configuration."
+ ],
+ "cmd-comment": [
+ "The ``next-server``, ``server-hostname``, and ``boot-file-name`` are DHCPv4-specific. Only one client class can be updated with a single command. "
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"class-update\",",
+ " \"arguments\": {",
+ " \"client-classes\": [ {",
+ " \"name\": <name of the class>,",
+ " \"test\": <test expression to be evaluated on incoming packets>,",
+ " \"option-data\": [ <option values here> ],",
+ " \"option-def\": [ <option definitions here> ],",
+ " \"next-server\": <ipv4 address>,",
+ " \"server-hostname\": <string>,",
+ " \"boot-file-name\": <name of the boot file>",
+ " } ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-class-update\"/>",
+ "hook": "class_cmds",
+ "name": "class-update",
+ "resp-comment": [
+ "The command returns the result of 3 (empty) if the client class does not exist. If the client class exists, the returned result is 0 if the update was successful, or 1 if the update is unsuccessful."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"Class '<class-name>' updated.\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/config-backend-pull.json b/src/share/api/config-backend-pull.json
new file mode 100644
index 0000000..db13b16
--- /dev/null
+++ b/src/share/api/config-backend-pull.json
@@ -0,0 +1,31 @@
+{
+ "access": "write",
+ "avail": "1.7.1",
+ "brief": [
+ "This command forces an immediate update of the server using Config Backends.",
+ "This command does not take any parameters."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"config-backend-pull\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-config-backend-pull\"/>",
+ "name": "config-backend-pull",
+ "resp-comment": [
+ "When no Config Backends are configured this command returns empty (3); ",
+ "If an error occurs error (1) is returned with the error details; ",
+ "otherwise success (0) is returned."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"On demand configuration update successful.\"",
+ "}"
+ ],
+
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/config-get.json b/src/share/api/config-get.json
new file mode 100644
index 0000000..61c130e
--- /dev/null
+++ b/src/share/api/config-get.json
@@ -0,0 +1,35 @@
+{
+ "access": "read",
+ "avail": "1.2.0",
+ "brief": [
+ "This command retrieves the current configuration used by the server. The configuration is essentially the same as the contents of the configuration file, but includes additional changes made by other commands and due to parameters' inheritance."
+ ],
+ "cmd-comment": [
+ "This command takes no parameters."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"config-get\"",
+ "}"
+ ],
+ "name": "config-get",
+ "resp-syntax": [
+ "{",
+ " \"result\": <integer>,",
+ " \"arguments\": {",
+ " <Dhcp4, Dhcp6, or Control-agent object>: <JSON configuration here> ",
+ " }",
+ "}"
+ ],
+ "resp-comment": [
+ "Starting with Kea 2.4.0, the successful response contains an SHA256 digest of the configuration that was ",
+ "just retrieved. It might be used to determine if a configuration has been modified or not, possibly with the ",
+ "use of config-hash-get."
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns",
+ "kea-ctrl-agent"
+ ]
+}
diff --git a/src/share/api/config-hash-get.json b/src/share/api/config-hash-get.json
new file mode 100644
index 0000000..b3cf17d
--- /dev/null
+++ b/src/share/api/config-hash-get.json
@@ -0,0 +1,33 @@
+{
+ "access": "read",
+ "avail": "2.4.0",
+ "brief": [
+ "This command retrieves the hash of the current configuration used by the server. The ",
+ "configuration is essentially the same as the contents of the configuration file, but ",
+ "includes additional changes made by other commands and due to parameters' inheritance.",
+ "Currently it is SHA256, but the algorithm may change in the future."
+ ],
+ "cmd-comment": [
+ "This command takes no parameters."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"config-hash-get\"",
+ "}"
+ ],
+ "name": "config-hash-get",
+ "resp-syntax": [
+ "{",
+ " \"result\": <integer>,",
+ " \"arguments\": {",
+ " \"hash\": <SHA256 hash of the config in hexa> ",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns",
+ "kea-ctrl-agent"
+ ]
+}
diff --git a/src/share/api/config-reload.json b/src/share/api/config-reload.json
new file mode 100644
index 0000000..0df6326
--- /dev/null
+++ b/src/share/api/config-reload.json
@@ -0,0 +1,20 @@
+{
+ "access": "write",
+ "avail": "1.2.0",
+ "brief": [
+ "This command instructs Kea to reload the configuration file that was used previously."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"config-reload\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-config-reload\"/>",
+ "name": "config-reload",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns",
+ "kea-ctrl-agent"
+ ]
+}
diff --git a/src/share/api/config-set.json b/src/share/api/config-set.json
new file mode 100644
index 0000000..60b4d99
--- /dev/null
+++ b/src/share/api/config-set.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.2.0",
+ "brief": [
+ "This command instructs the server to replace its current configuration with the new configuration supplied in the command's arguments."
+ ],
+ "cmd-comment": [
+ "In the example below, '<server>' is the configuration element name for a given server such as \"Dhcp4\" or \"Dhcp6\"."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"config-set\",",
+ " \"arguments\": {",
+ " \"'<server>'\": {",
+ " }",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-config-set\"/>",
+ "name": "config-set",
+ "resp-syntax": [
+ "{",
+ " \"arguments\": {",
+ " \"hash\": \"8B5F5822E93178B65CE658304C37EA511BDE7D29F792AA5E88012FC741F2BE32\"",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"Configuration successful.\"",
+ "}",
+ "",
+ "or",
+ "",
+ "{ \"result\": 1, \"text\": \"unsupported parameter: BOGUS (<string>:16:26)\" }"
+ ],
+ "resp-comment": [
+ "Starting with Kea 2.4.0, the successful response from a DHCPv4, DHCPv6, or DHCP-DDNS daemons",
+ "also contain a SHA-256 digest of the newly set configuration. The digest can be used to easily",
+ "determine if a configuration has been modified or not, possibly with the use of config-hash-get."
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns",
+ "kea-ctrl-agent"
+ ]
+}
diff --git a/src/share/api/config-test.json b/src/share/api/config-test.json
new file mode 100644
index 0000000..39aa367
--- /dev/null
+++ b/src/share/api/config-test.json
@@ -0,0 +1,34 @@
+{
+ "access": "write",
+ "avail": "1.2.0",
+ "brief": [
+ "This command instructs the server to check whether the new configuration supplied in the command's arguments can be loaded."
+ ],
+ "cmd-comment": [
+ "In the example below, '<server>' is the configuration element name for a given server such as \"Dhcp4\" or \"Dhcp6\"."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"config-test\",",
+ " \"arguments\": {",
+ " \"'<server>'\": {",
+ " }",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-config-test\"/>",
+ "name": "config-test",
+ "resp-syntax": [
+ "{ \"result\": 0, \"text\": \"Configuration seems sane.\" }",
+ "",
+ "or",
+ "",
+ "{ \"result\": 1, \"text\": \"unsupported parameter: BOGUS (<string>:16:26)\" }"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns",
+ "kea-ctrl-agent"
+ ]
+}
diff --git a/src/share/api/config-write.json b/src/share/api/config-write.json
new file mode 100644
index 0000000..8aa3da4
--- /dev/null
+++ b/src/share/api/config-write.json
@@ -0,0 +1,24 @@
+{
+ "access": "write",
+ "avail": "1.2.0",
+ "brief": [
+ "This command instructs the Kea server to write its",
+ "current configuration to a file on disk."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"config-write\",",
+ " \"arguments\": {",
+ " \"filename\": \"config-modified-2017-03-15.json\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-config-write\"/>",
+ "name": "config-write",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns",
+ "kea-ctrl-agent"
+ ]
+}
diff --git a/src/share/api/dhcp-disable.json b/src/share/api/dhcp-disable.json
new file mode 100644
index 0000000..a12764c
--- /dev/null
+++ b/src/share/api/dhcp-disable.json
@@ -0,0 +1,22 @@
+{
+ "access": "write",
+ "avail": "1.4.0",
+ "brief": [
+ "This command globally disables the DHCP service."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"dhcp-disable\",",
+ " \"arguments\": {",
+ " \"max-period\": 20,",
+ " \"origin\": \"user\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-dhcp-disable\"/>",
+ "name": "dhcp-disable",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/dhcp-enable.json b/src/share/api/dhcp-enable.json
new file mode 100644
index 0000000..d7a9959
--- /dev/null
+++ b/src/share/api/dhcp-enable.json
@@ -0,0 +1,21 @@
+{
+ "access": "write",
+ "avail": "1.4.0",
+ "brief": [
+ "This command globally enables the DHCP service."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"dhcp-enable\",",
+ " \"arguments\": {",
+ " \"origin\": \"user\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-dhcp-enable\"/>",
+ "name": "dhcp-enable",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/extended-info4-upgrade.json b/src/share/api/extended-info4-upgrade.json
new file mode 100644
index 0000000..4205628
--- /dev/null
+++ b/src/share/api/extended-info4-upgrade.json
@@ -0,0 +1,30 @@
+{
+ "access": "write",
+ "avail": "2.3.8",
+ "brief": [
+ "This command sanitizes extended info of all IPv4 leases and fills relay and remote ID columns in the SQL lease database."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"extended-info4-upgrade\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-extended-info4-upgrade\"/>",
+ "hook": "lease_query",
+ "name": "extended-info4-upgrade",
+ "resp-comment": [
+ "This command should be used when some old IPv4 leases are present in the lease database using a SQL backend."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"arguments\": {",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"to be done\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/generate-api-files b/src/share/api/generate-api-files
new file mode 100755
index 0000000..ff223cf
--- /dev/null
+++ b/src/share/api/generate-api-files
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# This script generates api_files.mk
+# Usage:
+#
+# ./generate-api-files > api_files.mk
+
+if [ $# -ne 0 ]; then
+ echo "Usage: ./generate-api-files"
+ exit
+fi
+
+for f in [a-z]*.json ; do
+ echo "api_files += \$(top_srcdir)/src/share/api/$f"
+done
diff --git a/src/share/api/generate-templates b/src/share/api/generate-templates
new file mode 100755
index 0000000..1bfc9ec
--- /dev/null
+++ b/src/share/api/generate-templates
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# This script generates API documentation templates.
+# Usage:
+#
+# ./generate-templates cmd...
+#
+# Arguments are a list of new commands.
+# The templates will be created in local directory.
+
+if [ $# -eq 0 ]; then
+ echo "Usage: ./generate-templates cmd..."
+ exit
+fi
+
+while [ $# -ne 0 ]; do
+ CMD="$1"
+ shift
+ F=$CMD.json
+
+ if [ -e "$F" ]; then
+ echo "$F exists, skipping"
+ continue;
+ fi
+ echo "{" > "$F"
+
+ echo " \"name\": \"$CMD\"," >> "$F"
+ echo " \"brief\": [ \"a sentence or two explaining what this command does\" ]," >> "$F"
+ echo " \"description\": [ \"See <xref linkend=\\\"cmd-$LINE\\\"/>\" ]," >> "$F"
+ echo " \"support\": [ \"undocumented\" ]," >> "$F"
+ echo " \"avail\": \"0.0.0\"," >> "$F"
+ echo " \"hook\": \"undocumented\"," >> "$F"
+ echo " \"access\": \"write\"," >> $F
+
+ echo " \"cmd-syntax\": [ \"Syntax of the command\" ]," >> "$F"
+ echo " \"cmd-comment\": [ \"Possibly some extra comments after the syntax.\" ]," >> "$F"
+
+ echo " \"resp-syntax\": [ \"Syntax of the response\" ]," >> "$F"
+ echo " \"resp-comment\": [ \"Optional extra comments after the response syntax.\" ]" >> "$F"
+ echo "}" >> "$F"
+
+ echo "$CMD generated."
+done
diff --git a/src/share/api/gss-tsig-get-all.json b/src/share/api/gss-tsig-get-all.json
new file mode 100644
index 0000000..8ef38e2
--- /dev/null
+++ b/src/share/api/gss-tsig-get-all.json
@@ -0,0 +1,53 @@
+{
+ "access": "read",
+ "avail": "2.0.0",
+ "brief": [ "This command lists GSS-TSIG servers and keys." ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"gss-tsig-get-all\"",
+ "}"
+ ],
+ "description": [ "See <xref linkend=\"command-gss-tsig-get-all\"/>" ],
+ "hook": "gss_tsig",
+ "name": "gss-tsig-get-all",
+ "support": [ "kea-dhcp-ddns" ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 GSS-TSIG servers and 1 keys\",",
+ " \"arguments\": {",
+ " \"gss-tsig-servers\": [",
+ " {",
+ " \"id\": \"foo\",",
+ " \"ip-address\": \"192.1.2.3\",",
+ " \"port\": 53,",
+ " \"server-principal\": \"DNS/foo.com@FOO.COM\",",
+ " \"key-name-suffix\": \"foo.com.\",",
+ " \"tkey-lifetime\": 3600,",
+ " \"tkey-protocol\": \"TCP\",",
+ " \"keys\": [",
+ " {",
+ " \"name\": \"1234.sig-foo.com.\",",
+ " \"inception-date\": \"2021-09-05 12:23:36.281176\",",
+ " \"server-id\": \"foo\",",
+ " \"expire-date\": \"2021-09-05 13:23:36.281176\",",
+ " \"status\": \"not yet ready\",",
+ " \"tkey-exchange\": true",
+ " }",
+ " ]",
+ " },",
+ " {",
+ " \"id\": \"bar\",",
+ " \"ip-address\": \"192.1.2.4\",",
+ " \"port\": 53,",
+ " \"server-principal\": \"DNS/bar.com@FOO.COM\",",
+ " \"key-name-suffix\": \"bar.com.\",",
+ " \"tkey-lifetime\": 7200,",
+ " \"tkey-protocol\": \"UDP\",",
+ " \"keys\": [ ]",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ]
+}
diff --git a/src/share/api/gss-tsig-get.json b/src/share/api/gss-tsig-get.json
new file mode 100644
index 0000000..8e7e182
--- /dev/null
+++ b/src/share/api/gss-tsig-get.json
@@ -0,0 +1,44 @@
+{
+ "access": "read",
+ "avail": "2.0.0",
+ "brief": [
+ "This command retrieves information about the specified GSS-TSIG server."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"gss-tsig-get\",",
+ " \"arguments\": {",
+ " \"server-id\": \"foo\"",
+ " }",
+ "}"
+ ],
+ "description": [ "See <xref linkend=\"command-gss-tsig-get\"/>" ],
+ "hook": "gss_tsig",
+ "name": "gss-tsig-get",
+ "support": [ "kea-dhcp-ddns" ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"GSS-TSIG server[foo] found\",",
+ " \"arguments\": {",
+ " \"id\": \"foo\",",
+ " \"ip-address\": \"192.1.2.3\",",
+ " \"port\": 53,",
+ " \"server-principal\": \"DNS/foo.com@FOO.COM\",",
+ " \"key-name-suffix\": \"foo.com.\",",
+ " \"tkey-lifetime\": 3600,",
+ " \"tkey-protocol\": \"TCP\",",
+ " \"keys\": [",
+ " {",
+ " \"name\": \"1234.sig-foo.com.\",",
+ " \"server-id\": \"foo\",",
+ " \"inception-date\": \"2021-09-05 12:23:36.281176\",",
+ " \"expire-date\": \"2021-09-05 13:23:36.281176\",",
+ " \"status\": \"not yet ready\",",
+ " \"tkey-exchange\": true",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ]
+}
diff --git a/src/share/api/gss-tsig-key-del.json b/src/share/api/gss-tsig-key-del.json
new file mode 100644
index 0000000..115f56c
--- /dev/null
+++ b/src/share/api/gss-tsig-key-del.json
@@ -0,0 +1,23 @@
+{
+ "access": "write",
+ "avail": "2.0.0",
+ "brief": [ "This command deletes the specified GSS-TSIG key." ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"gss-tsig-key-del\",",
+ " \"arguments\": {",
+ " \"key-name\": \"1234.sig-foo.com.\"",
+ " }",
+ "}"
+ ],
+ "description": [ "See <xref linkend=\"command-gss-tsig-key-del\"/>" ],
+ "hook": "gss_tsig",
+ "name": "gss-tsig-key-del",
+ "support": [ "kea-dhcp-ddns" ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"GSS-TSIG key '1234.sig-foo.com.' deleted\"",
+ "}"
+ ]
+}
diff --git a/src/share/api/gss-tsig-key-expire.json b/src/share/api/gss-tsig-key-expire.json
new file mode 100644
index 0000000..7dff6e5
--- /dev/null
+++ b/src/share/api/gss-tsig-key-expire.json
@@ -0,0 +1,23 @@
+{
+ "access": "write",
+ "avail": "2.0.0",
+ "brief": [ "This command expires the specified GSS-TSIG key." ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"gss-tsig-key-expire\",",
+ " \"arguments\": {",
+ " \"key-name\": \"1234.sig-foo.com.\"",
+ " }",
+ "}"
+ ],
+ "description": [ "See <xref linkend=\"command-gss-tsig-key-expire\"/>" ],
+ "hook": "gss_tsig",
+ "name": "gss-tsig-key-expire",
+ "support": [ "kea-dhcp-ddns" ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"GSS-TSIG key '1234.sig-foo.com.' expired\"",
+ "}"
+ ]
+}
diff --git a/src/share/api/gss-tsig-key-get.json b/src/share/api/gss-tsig-key-get.json
new file mode 100644
index 0000000..4003b69
--- /dev/null
+++ b/src/share/api/gss-tsig-key-get.json
@@ -0,0 +1,33 @@
+{
+ "access": "read",
+ "avail": "2.0.0",
+ "brief": [
+ "This command retrieves information about the specified GSS-TSIG key."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"gss-tsig-key-get\",",
+ " \"arguments\": {",
+ " \"key-name\": \"1234.sig-foo.com.\"",
+ " }",
+ "}"
+ ],
+ "description": [ "See <xref linkend=\"command-gss-tsig-key-get\"/>" ],
+ "hook": "gss_tsig",
+ "name": "gss-tsig-key-get",
+ "support": [ "kea-dhcp-ddns" ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"GSS-TSIG key '1234.sig-foo.com.' found\",",
+ " \"arguments\": {",
+ " \"name\": \"1234.sig-foo.com.\",",
+ " \"server-id\": \"foo\",",
+ " \"inception-date\": \"2021-09-05 12:23:36.281176\",",
+ " \"expire-date\": \"2021-09-05 13:23:36.281176\",",
+ " \"status\": \"not yet ready\",",
+ " \"tkey-exchange\": true",
+ " }",
+ "}"
+ ]
+}
diff --git a/src/share/api/gss-tsig-list.json b/src/share/api/gss-tsig-list.json
new file mode 100644
index 0000000..c2f5946
--- /dev/null
+++ b/src/share/api/gss-tsig-list.json
@@ -0,0 +1,31 @@
+{
+ "access": "read",
+ "avail": "2.0.0",
+ "brief": [ "This command lists GSS-TSIG server IDs and key names." ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"gss-tsig-list\"",
+ "}"
+ ],
+ "description": [ "See <xref linkend=\"command-gss-tsig-list\"/>" ],
+ "hook": "gss_tsig",
+ "name": "gss-tsig-list",
+ "support": [ "kea-dhcp-ddns" ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 GSS-TSIG servers and 3 keys\",",
+ " \"arguments\": {",
+ " \"gss-tsig-servers\": [",
+ " \"foo\",",
+ " \"bar\"",
+ " ],",
+ " \"gss-tsig-keys\": [",
+ " \"1234.example.com.\",",
+ " \"5678.example.com.\",",
+ " \"43888.example.org.\"",
+ " ]",
+ " }",
+ "}"
+ ]
+}
diff --git a/src/share/api/gss-tsig-purge-all.json b/src/share/api/gss-tsig-purge-all.json
new file mode 100644
index 0000000..638b6fd
--- /dev/null
+++ b/src/share/api/gss-tsig-purge-all.json
@@ -0,0 +1,20 @@
+{
+ "access": "write",
+ "avail": "2.0.0",
+ "brief": [ "This command removes not usable GSS-TSIG keys." ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"gss-tsig-purge-all\"",
+ "}"
+ ],
+ "description": [ "See <xref linkend=\"command-gss-tsig-purge-all\"/>" ],
+ "hook": "gss_tsig",
+ "name": "gss-tsig-purge-all",
+ "support": [ "kea-dhcp-ddns" ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 purged GSS-TSIG keys\"",
+ "}"
+ ]
+}
diff --git a/src/share/api/gss-tsig-purge.json b/src/share/api/gss-tsig-purge.json
new file mode 100644
index 0000000..8b23086
--- /dev/null
+++ b/src/share/api/gss-tsig-purge.json
@@ -0,0 +1,24 @@
+{
+ "access": "write",
+ "avail": "2.0.0",
+ "brief": [ "This command removes not usable GSS-TSIG keys for the specified server."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"gss-tsig-purge\",",
+ " \"arguments\": {",
+ " \"server-id\": \"foo\"",
+ " }",
+ "}"
+ ],
+ "description": [ "See <xref linkend=\"command-gss-tsig-purge\"/>" ],
+ "hook": "gss_tsig",
+ "name": "gss-tsig-purge",
+ "support": [ "kea-dhcp-ddns" ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 purged keys for GSS-TSIG server[foo]\"",
+ "}"
+ ]
+}
diff --git a/src/share/api/gss-tsig-rekey-all.json b/src/share/api/gss-tsig-rekey-all.json
new file mode 100644
index 0000000..844fa85
--- /dev/null
+++ b/src/share/api/gss-tsig-rekey-all.json
@@ -0,0 +1,20 @@
+{
+ "access": "write",
+ "avail": "2.0.0",
+ "brief": [ "This command unconditionally creates new GSS-TSIG keys (rekeys) for all DNS servers." ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"gss-tsig-rekey-all\"",
+ "}"
+ ],
+ "description": [ "See <xref linkend=\"command-gss-tsig-rekey-all\"/>" ],
+ "hook": "gss_tsig",
+ "name": "gss-tsig-rekey-all",
+ "support": [ "kea-dhcp-ddns" ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"rekeyed\"",
+ "}"
+ ]
+}
diff --git a/src/share/api/gss-tsig-rekey.json b/src/share/api/gss-tsig-rekey.json
new file mode 100644
index 0000000..6198973
--- /dev/null
+++ b/src/share/api/gss-tsig-rekey.json
@@ -0,0 +1,24 @@
+{
+ "access": "write",
+ "avail": "2.0.0",
+ "brief": [ "The command unconditionally creates new GSS-TSIG keys for (rekeys) a specified DNS server."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"gss-tsig-rekey\",",
+ " \"arguments\": {",
+ " \"server-id\": \"foo\"",
+ " }",
+ "}"
+ ],
+ "description": [ "See <xref linkend=\"command-gss-tsig-rekey\"/>" ],
+ "hook": "gss_tsig",
+ "name": "gss-tsig-rekey",
+ "support": [ "kea-dhcp-ddns" ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"GSS-TSIG server[foo] rekeyed\"",
+ "}"
+ ]
+}
diff --git a/src/share/api/ha-continue.json b/src/share/api/ha-continue.json
new file mode 100644
index 0000000..606296c
--- /dev/null
+++ b/src/share/api/ha-continue.json
@@ -0,0 +1,14 @@
+{
+ "access": "write",
+ "avail": "1.4.0",
+ "brief": [
+ "This command resumes the operation of a paused HA state machine."
+ ],
+ "description": "See <xref linkend=\"command-ha-continue\"/>",
+ "hook": "high_availability",
+ "name": "ha-continue",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/ha-heartbeat.json b/src/share/api/ha-heartbeat.json
new file mode 100644
index 0000000..f7f0539
--- /dev/null
+++ b/src/share/api/ha-heartbeat.json
@@ -0,0 +1,34 @@
+{
+ "access": "write",
+ "avail": "1.4.0",
+ "brief": [
+ "This command is sent internally by a Kea partner when operating in High Availability (HA) mode or by the system administrator to verify the state of the servers with regards to the High Availability. It retrieves the server's HA state and clock value."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"ha-heartbeat\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"ha-server-states\"/>",
+ "hook": "high_availability",
+ "name": "ha-heartbeat",
+ "resp-comment": [
+ "The response includes a server state (see :ref:`ha-server-states`), current clock value, served scopes and the counter indicating how many leases the server has allocated without sending lease updates to its partner. The partner uses this counter to determine if it should synchronize its lease database."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"HA peer status returned.\",",
+ " \"arguments\": {",
+ " \"state\": <server state>,",
+ " \"date-time\": <server notion of time>,",
+ " \"scopes\": [ <first scope>, <second scope>, ... ],",
+ " \"unsent-update-count\": <total number of lease allocations in partner-down state>",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/ha-maintenance-cancel.json b/src/share/api/ha-maintenance-cancel.json
new file mode 100644
index 0000000..4ea868f
--- /dev/null
+++ b/src/share/api/ha-maintenance-cancel.json
@@ -0,0 +1,17 @@
+{
+ "access": "write",
+ "avail": "1.7.4",
+ "brief": [
+ "This command is sent to instruct a server in the partner-in-maintenance",
+ "state to transition back to the previous state, effectively canceling the",
+ "maintenance."
+ ],
+ "cmd-comment": [ "This command takes no arguments." ],
+ "description": [ "See <xref linkend=\"command-ha-maintenance-cancel\"/>" ],
+ "hook": "high_availability",
+ "name": "ha-maintenance-cancel",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/ha-maintenance-notify.json b/src/share/api/ha-maintenance-notify.json
new file mode 100644
index 0000000..d187107
--- /dev/null
+++ b/src/share/api/ha-maintenance-notify.json
@@ -0,0 +1,37 @@
+{
+ "access": "write",
+ "avail": "1.7.4",
+ "brief": [
+ "This command is sent by the server receiving the ha-maintenance-start",
+ "to its partner to cause the partner to transition to the in-maintenance",
+ "state or to revert it from the in-maintenance state as a result of",
+ "receiving the ha-maintenance-cancel command."
+ ],
+ "cmd-comment": [
+ "This command includes a boolean argument which, if false, indicates",
+ "that the server should transition to the in-maintenance state.",
+ "If the argument is set to true it instructs the server to revert from",
+ "the in-maintenance state to its previous state.",
+ "This command is not meant to be used by the administrator. It is",
+ "merely used for internal communication between the HA partners."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"ha-maintenance-notify\",",
+ " \"arguments\": {",
+ " \"cancel\": <boolean>",
+ " }",
+ "}"
+ ],
+ "description": [ "See <xref linkend=\"command-ha-maintenance-notify\"/>" ],
+ "hook": "high_availability",
+ "name": "ha-maintenance-notify",
+ "resp-comment": [
+ "The response may include a special error code of 1001",
+ "to indicate that the partner refused to enter the maintenance state."
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/ha-maintenance-start.json b/src/share/api/ha-maintenance-start.json
new file mode 100644
index 0000000..d76f2f0
--- /dev/null
+++ b/src/share/api/ha-maintenance-start.json
@@ -0,0 +1,19 @@
+{
+ "access": "write",
+ "avail": "1.7.4",
+ "brief": [
+ "This command is sent to instruct one of the servers to transition",
+ "to the partner-in-maintenance state in which it will be responding to",
+ "all DHCP queries. The server receiving this command sends the",
+ "ha-maintenance-notify to its partner to cause the partner to",
+ "transition to the in-maintenance state."
+ ],
+ "cmd-comment": [ "This command takes no arguments." ],
+ "description": [ "See <xref linkend=\"command-ha-maintenance-start\"/>" ],
+ "hook": "high_availability",
+ "name": "ha-maintenance-start",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/ha-reset.json b/src/share/api/ha-reset.json
new file mode 100644
index 0000000..6a78a12
--- /dev/null
+++ b/src/share/api/ha-reset.json
@@ -0,0 +1,14 @@
+{
+ "access": "write",
+ "avail": "1.9.4",
+ "brief": [
+ "This command resets the HA state machine of the server by transitioning it to the waiting state."
+ ],
+ "description": "See <xref linkend=\"command-ha-reset\"/>",
+ "hook": "high_availability",
+ "name": "ha-reset",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/ha-scopes.json b/src/share/api/ha-scopes.json
new file mode 100644
index 0000000..99240aa
--- /dev/null
+++ b/src/share/api/ha-scopes.json
@@ -0,0 +1,26 @@
+{
+ "access": "write",
+ "avail": "1.4.0",
+ "brief": [
+ "This command modifies the scope that the server is responsible for serving when operating in High Availability (HA) mode."
+ ],
+ "cmd-comment": [
+ "In the example below, the arguments configure the server to handle traffic from both the HA_server1 and HA_server2 scopes."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"ha-scopes\",",
+ " \"service\": [ <service, typically 'dhcp4' or 'dhcp6'> ],",
+ " \"arguments\": {",
+ " \"scopes\": [ \"HA_server1\", \"HA_server2\" ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-ha-scopes\"/>",
+ "hook": "high_availability",
+ "name": "ha-scopes",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/ha-sync-complete-notify.json b/src/share/api/ha-sync-complete-notify.json
new file mode 100644
index 0000000..998157b
--- /dev/null
+++ b/src/share/api/ha-sync-complete-notify.json
@@ -0,0 +1,19 @@
+{
+ "access": "write",
+ "avail": "1.9.11",
+ "brief": [
+ "A server notifies its partner with this command that it has finished the",
+ "lease database synchronization. If the partner is in the partner-down state",
+ "it temporarily stops allocating new leases until it transitions to a normal",
+ "operation state (e.g. load-balancing). If the partner observes a failing",
+ "heartbeat it can resume allocating new leases in the partner-down state."
+ ],
+ "cmd-comment": [ "This command takes no arguments." ],
+ "description": [ "See <xref linkend=\"command-ha-sync-complete-notify\"/>" ],
+ "hook": "high_availability",
+ "name": "ha-sync-complete-notify",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/ha-sync.json b/src/share/api/ha-sync.json
new file mode 100644
index 0000000..b4e4277
--- /dev/null
+++ b/src/share/api/ha-sync.json
@@ -0,0 +1,24 @@
+{
+ "access": "write",
+ "avail": "1.4.0",
+ "brief": [
+ "This command instructs the server running in HA mode to synchronize its local lease database with the selected peer."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"ha-sync\",",
+ " \"service\": [ <service affected: 'dhcp4' or 'dhcp6'> ],",
+ " \"arguments\": {",
+ " \"server-name\": <name of the partner server>,",
+ " \"max-period\": <integer, in seconds>",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-ha-sync\"/>",
+ "hook": "high_availability",
+ "name": "ha-sync",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/lease4-add.json b/src/share/api/lease4-add.json
new file mode 100644
index 0000000..3e6e834
--- /dev/null
+++ b/src/share/api/lease4-add.json
@@ -0,0 +1,28 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command administratively adds a new IPv4 lease."
+ ],
+ "cmd-comment": [
+ "Note that Kea 1.4 requires an additional argument, subnet-ID, which is optional as of Kea 1.5. A number of other, more-detailed, optional arguments are also supported."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease4-add\",",
+ " \"arguments\": {",
+ " \"ip-address\": \"192.0.2.202\",",
+ " \"hw-address\": \"1a:1b:1c:1d:1e:1f\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp64\"/>",
+ "hook": "lease_cmds",
+ "name": "lease4-add",
+ "resp-comment": [
+ "If the returned result is equal to 4, it indicates that the lease could not be created because it was in conflict with the server's state or its notion of the configuration. The High Availability hook library can handle such a result differently than a general error. A general error of 1 can indicate issues with processing the command, database availability etc."
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/lease4-del.json b/src/share/api/lease4-del.json
new file mode 100644
index 0000000..49719b2
--- /dev/null
+++ b/src/share/api/lease4-del.json
@@ -0,0 +1,24 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command deletes a lease from the lease database."
+ ],
+ "cmd-comment": [
+ "The lease to be deleted can be specified either by IP address or by identifier-type and identifier value. The currently supported identifiers are \"hw-address\" and \"client-id\"."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease4-del\",",
+ " \"arguments\": {",
+ " \"ip-address\": \"192.0.2.202\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-lease4-del\"/>",
+ "hook": "lease_cmds",
+ "name": "lease4-del",
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/lease4-get-all.json b/src/share/api/lease4-get-all.json
new file mode 100644
index 0000000..117995b
--- /dev/null
+++ b/src/share/api/lease4-get-all.json
@@ -0,0 +1,64 @@
+{
+ "access": "read",
+ "avail": "1.4.0",
+ "brief": [
+ "This command retrieves all IPv4 leases or all leases for the specified set of subnets."
+ ],
+ "cmd-comment": [
+ "The ``lease4-get-all`` command may result in very large responses. Please consider using ",
+ "``lease4-get-page`` to get them in chunks. The ``subnets`` parameter is optional. If not ",
+ "specified, leases from all subnets are returned."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease4-get-all\",",
+ " \"arguments\": {",
+ " \"subnets\": [ 1, 2, 3, ... ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp59\"/>",
+ "hook": "lease_cmds",
+ "name": "lease4-get-all",
+ "resp-comment": [
+ "Result 0 is returned when at least one lease is found, 1 when parameters are malformed or missing,",
+ "3 is returned if no leases are found with specified parameter."
+ ],
+ "resp-syntax": [
+ " {",
+ " \"arguments\": {",
+ " \"leases\": [",
+ " {",
+ " \"client-id\": \"01:00:0c:01:02:03:04\",",
+ " \"cltt\": 1600432232,",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": false,",
+ " \"hostname\": \"\",",
+ " \"hw-address\": \"00:0c:01:02:03:04\",",
+ " \"ip-address\": \"192.168.1.150\",",
+ " \"state\": 0,",
+ " \"subnet-id\": 1,",
+ " \"valid-lft\": 4000",
+ " },",
+ " {",
+ " \"client-id\": \"01:00:0c:01:02:03:05\",",
+ " \"cltt\": 1600432234,",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": false,",
+ " \"hostname\": \"\",",
+ " \"hw-address\": \"00:0c:01:02:03:05\",",
+ " \"ip-address\": \"192.168.1.151\",",
+ " \"state\": 0,",
+ " \"subnet-id\": 1,",
+ " \"valid-lft\": 4000",
+ " }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"2 IPv4 lease(s) found.\"",
+ " }"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/lease4-get-by-client-id.json b/src/share/api/lease4-get-by-client-id.json
new file mode 100644
index 0000000..9f8f973
--- /dev/null
+++ b/src/share/api/lease4-get-by-client-id.json
@@ -0,0 +1,47 @@
+{
+ "access": "read",
+ "avail": "1.7.1",
+ "brief": [
+ "This command retrieves all IPv4 leases with the specified client id."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease4-get-by-client-id\",",
+ " \"arguments\": {",
+ " \"client-id\": \"01:00:0c:01:02:03:04\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-lease4-get-by-client-id\"/>",
+ "hook": "lease_cmds",
+ "name": "lease4-get-by-client-id",
+ "resp-comment": [
+ "Result 0 is returned when at least one lease is found, 1 when parameters are malformed or missing,",
+ "3 is returned if no leases are found."
+ ],
+ "resp-syntax": [
+ " {",
+ " \"arguments\": {",
+ " \"leases\": [",
+ " {",
+ " \"client-id\": \"01:00:0c:01:02:03:04\",",
+ " \"cltt\": 1600432232,",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": false,",
+ " \"hostname\": \"\",",
+ " \"hw-address\": \"00:0c:01:02:03:04\",",
+ " \"ip-address\": \"192.168.1.150\",",
+ " \"state\": 0,",
+ " \"subnet-id\": 1,",
+ " \"valid-lft\": 4000",
+ " }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv4 lease(s) found.\"",
+ " }"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/lease4-get-by-hostname.json b/src/share/api/lease4-get-by-hostname.json
new file mode 100644
index 0000000..38e5224
--- /dev/null
+++ b/src/share/api/lease4-get-by-hostname.json
@@ -0,0 +1,47 @@
+{
+ "access": "read",
+ "avail": "1.7.1",
+ "brief": [
+ "This command retrieves all IPv4 leases with the specified hostname."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease4-get-by-hostname\",",
+ " \"arguments\": {",
+ " \"hostname\": \"myhost.example.com.\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-lease4-get-by-hostname\"/>",
+ "hook": "lease_cmds",
+ "name": "lease4-get-by-hostname",
+ "resp-comment": [
+ "Result 0 is returned when at least one lease is found, 1 when parameters are malformed or missing,",
+ "3 is returned if no leases are found."
+ ],
+ "resp-syntax": [
+ " {",
+ " \"arguments\": {",
+ " \"leases\": [",
+ " {",
+ " \"client-id\": \"01:00:0c:01:02:03:04\",",
+ " \"cltt\": 1600432232,",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": false,",
+ " \"hostname\": \"myhost.example.com.\",",
+ " \"hw-address\": \"00:0c:01:02:03:04\",",
+ " \"ip-address\": \"192.168.1.150\",",
+ " \"state\": 0,",
+ " \"subnet-id\": 1,",
+ " \"valid-lft\": 4000",
+ " }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv4 lease(s) found.\"",
+ " }"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/lease4-get-by-hw-address.json b/src/share/api/lease4-get-by-hw-address.json
new file mode 100644
index 0000000..ce6408f
--- /dev/null
+++ b/src/share/api/lease4-get-by-hw-address.json
@@ -0,0 +1,48 @@
+{
+ "access": "read",
+ "avail": "1.7.1",
+ "brief": [
+ "This command retrieves all IPv4 leases with the specified hardware address."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease4-get-by-hw-address\",",
+ " \"arguments\": {",
+ " \"hw-address\": \"00:0c:01:02:03:04\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-lease4-get-by-hw-address\"/>",
+ "hook": "lease_cmds",
+ "name": "lease4-get-by-hw-address",
+ "resp-comment": [
+ "Result 0 is returned when at least one lease is found, 1 when parameters are malformed or missing,",
+ "3 is returned if no leases are found."
+ ],
+ "resp-syntax": [
+ " {",
+ " \"arguments\": {",
+ " \"leases\": [",
+ " {",
+ " \"client-id\": \"01:00:0c:01:02:03:04\",",
+ " \"cltt\": 1600432232,",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": false,",
+ " \"hostname\": \"myhost.example.com.\",",
+ " \"hw-address\": \"00:0c:01:02:03:04\",",
+ " \"ip-address\": \"192.168.1.150\",",
+ " \"state\": 0,",
+ " \"subnet-id\": 1,",
+ " \"valid-lft\": 4000",
+ " }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv4 lease(s) found.\"",
+ " }"
+ ],
+
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/lease4-get-page.json b/src/share/api/lease4-get-page.json
new file mode 100644
index 0000000..7412150
--- /dev/null
+++ b/src/share/api/lease4-get-page.json
@@ -0,0 +1,63 @@
+{
+ "access": "read",
+ "avail": "1.5.0",
+ "brief": [
+ "This command retrieves all IPv4 leases by page."
+ ],
+ "cmd-comment": [
+ "The from address and the page size limit are mandatory."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease4-get-page\",",
+ " \"arguments\": {",
+ " \"limit\": <integer>,",
+ " \"from\": <IPv4 address or 'start'>",
+ " }",
+ "}"
+ ],
+ "resp-comment": [
+ "Result 0 is returned when at least one lease is found, 1 when parameters are malformed or missing,",
+ "3 is returned if no leases are found with specified parameters."
+ ],
+ "resp-syntax": [
+ " {",
+ " \"arguments\": {",
+ " \"leases\": [",
+ " {",
+ " \"client-id\": \"01:00:0c:01:02:03:04\",",
+ " \"cltt\": 1600432232,",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": false,",
+ " \"hostname\": \"\",",
+ " \"hw-address\": \"00:0c:01:02:03:04\",",
+ " \"ip-address\": \"192.168.1.150\",",
+ " \"state\": 0,",
+ " \"subnet-id\": 1,",
+ " \"valid-lft\": 4000",
+ " },",
+ " {",
+ " \"client-id\": \"01:00:0c:01:02:03:05\",",
+ " \"cltt\": 1600432234,",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": false,",
+ " \"hostname\": \"\",",
+ " \"hw-address\": \"00:0c:01:02:03:05\",",
+ " \"ip-address\": \"192.168.1.151\",",
+ " \"state\": 0,",
+ " \"subnet-id\": 1,",
+ " \"valid-lft\": 4000",
+ " }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"2 IPv4 lease(s) found.\"",
+ " }"
+ ],
+ "description": "See <xref linkend=\"command-lease4-get-page\"/>",
+ "hook": "lease_cmds",
+ "name": "lease4-get-page",
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/lease4-get.json b/src/share/api/lease4-get.json
new file mode 100644
index 0000000..3b76a10
--- /dev/null
+++ b/src/share/api/lease4-get.json
@@ -0,0 +1,44 @@
+{
+ "access": "read",
+ "avail": "1.3.0",
+ "brief": [
+ "This command queries the lease database and retrieves existing leases."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease4-get\",",
+ " \"arguments\": {",
+ " \"ip-address\": \"192.0.2.1\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp58\"/>",
+ "hook": "lease_cmds",
+ "name": "lease4-get",
+ "resp-comment": [
+ "lease4-get returns a result that indicates the outcome of the operation and lease details,",
+ "if found. It has one of the following values: 0 (success), 1 (error), or 3 (empty). ",
+ "Result 3 is returned if no leases are found with specified IP address."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"arguments\": {",
+ " \"client-id\": \"42:42:42:42:42:42:42:42\",",
+ " \"cltt\": 12345678,",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": true,",
+ " \"hostname\": \"myhost.example.com.\",",
+ " \"hw-address\": \"08:08:08:08:08:08\",",
+ " \"ip-address\": \"192.0.2.1\",",
+ " \"state\": 0,",
+ " \"subnet-id\": 44,",
+ " \"valid-lft\": 3600",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 lease found.\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/lease4-resend-ddns.json b/src/share/api/lease4-resend-ddns.json
new file mode 100644
index 0000000..a6c9014
--- /dev/null
+++ b/src/share/api/lease4-resend-ddns.json
@@ -0,0 +1,32 @@
+{
+ "access": "write",
+ "avail": "1.7.6",
+ "brief": [
+ "This command resends a request to kea-dhcp-ddns to update DNS for an existing lease."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease4-resend-ddns\",",
+ " \"arguments\": {",
+ " \"ip-address\": \"192.0.2.1\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp58\"/>",
+ "hook": "lease_cmds",
+ "name": "lease4-resend-ddns",
+ "resp-comment": [
+ "lease4-resend-ddns returns a result that indicates the outcome of the operation and lease details, if found. It has one of the following values: 0 (success), 1 (error), or 3 (empty)."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"arguments\": {",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"NCR generated for: 192.0.2.1, hostname: example.com.\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/lease4-update.json b/src/share/api/lease4-update.json
new file mode 100644
index 0000000..5b3c09e
--- /dev/null
+++ b/src/share/api/lease4-update.json
@@ -0,0 +1,28 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command updates existing leases."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease4-update\",",
+ " \"arguments\": {",
+ " \"ip-address\": \"192.0.2.1\",",
+ " \"hostname\": \"newhostname.example.org\",",
+ " \"hw-address\": \"1a:1b:1c:1d:1e:1f\",",
+ " \"subnet-id\": 44,",
+ " \"force-create\": true",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp62\"/>",
+ "hook": "lease_cmds",
+ "name": "lease4-update",
+ "resp-comment": [
+ "If the returned result is equal to 4, it indicates that the lease could not be updated because it was in conflict with the server's state or its notion of the configuration. The High Availability hook library can handle such a result differently than a general error. A general error of 1 can indicate issues with processing the command, database availability etc."
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/lease4-wipe.json b/src/share/api/lease4-wipe.json
new file mode 100644
index 0000000..5ee4fcc
--- /dev/null
+++ b/src/share/api/lease4-wipe.json
@@ -0,0 +1,21 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command removes all leases associated with a given subnet."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease4-wipe\",",
+ " \"arguments\": {",
+ " \"subnet-id\": 44",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp63\"/>",
+ "hook": "lease_cmds",
+ "name": "lease4-wipe",
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/lease4-write.json b/src/share/api/lease4-write.json
new file mode 100644
index 0000000..28ccaba
--- /dev/null
+++ b/src/share/api/lease4-write.json
@@ -0,0 +1,21 @@
+{
+ "access": "write",
+ "avail": "2.3.1",
+ "brief": [
+ "This command writes the IPv4 memfile lease database into a CSV file."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease4-write\",",
+ " \"arguments\": {",
+ " \"filename\": \"a_file.csv\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp63\"/>",
+ "hook": "lease_cmds",
+ "name": "lease4-write",
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/lease6-add.json b/src/share/api/lease6-add.json
new file mode 100644
index 0000000..2760c42
--- /dev/null
+++ b/src/share/api/lease6-add.json
@@ -0,0 +1,35 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command administratively creates a new lease."
+ ],
+ "cmd-comment": [
+ "lease6-add can be also used to add leases for IPv6 prefixes."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease6-add\",",
+ " \"arguments\": {",
+ " \"subnet-id\": 66,",
+ " \"ip-address\": \"2001:db8::3\",",
+ " \"duid\": \"1a:1b:1c:1d:1e:1f:20:21:22:23:24\",",
+ " \"iaid\": 1234",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp64\"/>",
+ "hook": "lease_cmds",
+ "name": "lease6-add",
+ "resp-syntax": [
+ "{ \"result\": 0, \"text\": \"Lease added.\" }",
+ "or",
+ "{ \"result\": 1, \"text\": \"missing parameter 'ip-address' (<string>:3:19)\" }"
+ ],
+ "resp-comment": [
+ "If the returned result is equal to 4, it indicates that the lease could not be created because it was in conflict with the server's state or its notion of the configuration. The High Availability hook library can handle such a result differently than a general error. A general error of 1 can indicate issues with processing the command, database availability etc."
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/lease6-bulk-apply.json b/src/share/api/lease6-bulk-apply.json
new file mode 100644
index 0000000..db86b65
--- /dev/null
+++ b/src/share/api/lease6-bulk-apply.json
@@ -0,0 +1,75 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates, updates, or deletes multiple IPv6 leases in a single transaction. It communicates lease changes between HA peers, but may be used in all cases where it is desirable to apply multiple lease updates in a single transaction."
+ ],
+ "cmd-comment": [
+ "If any of the leases is malformed, all changes are rolled back. If the leases are well-formed but the operation fails for one or more leases, these leases are listed in the response; however, the changes are preserved for all leases for which the operation was successful. The \"deleted-leases\" and \"leases\" are optional parameters, but one of them must be specified."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease6-bulk-apply\",",
+ " \"arguments\": {",
+ " \"deleted-leases\": [",
+ " {",
+ " \"ip-address\": \"2001:db8:abcd::\",",
+ " \"type\": \"IA_PD\",",
+ " ...",
+ " },",
+ " {",
+ " \"ip-address\": \"2001:db8:abcd::234\",",
+ " \"type\": \"IA_NA\",",
+ " ...",
+ " }",
+ " ],",
+ " \"leases\": [",
+ " {",
+ " \"subnet-id\": 66,",
+ " \"ip-address\": \"2001:db8:cafe::\",",
+ " \"type\": \"IA_PD\",",
+ " ...",
+ " },",
+ " {",
+ " \"subnet-id\": 66,",
+ " \"ip-address\": \"2001:db8:abcd::333\",",
+ " \"type\": \"IA_NA\",",
+ " ...",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "hook": "lease_cmds",
+ "name": "lease6-bulk-apply",
+ "resp-comment": [
+ "The \"failed-deleted-leases\" holds the list of leases which failed to delete; this includes leases which were not found in the database. The \"failed-leases\" includes the list of leases which failed to create or update. For each lease for which there was an error during processing, insertion into the database, etc., the result is set to 1. If an error occurs due to a conflict between the lease and the server's configuration or state, the result of 4 is returned instead of 1. For each lease which was not deleted because the server did not find it in the database, the result of 3 is returned."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 leases bulk apply completed.\",",
+ " \"arguments\": {",
+ " \"failed-deleted-leases\": [",
+ " {",
+ " \"ip-address\": \"2001:db8:abcd::\",",
+ " \"type\": \"IA_PD\",",
+ " \"result\": <control result>,",
+ " \"error-message\": <error message>",
+ " }",
+ " ],",
+ " \"failed-leases\": [",
+ " {",
+ " \"ip-address\": \"2001:db8:cafe::\",",
+ " \"type\": \"IA_PD\",",
+ " \"result\": <control result>,",
+ " \"error-message\": <error message>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/lease6-del.json b/src/share/api/lease6-del.json
new file mode 100644
index 0000000..8164aa5
--- /dev/null
+++ b/src/share/api/lease6-del.json
@@ -0,0 +1,24 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command deletes a lease from the lease database."
+ ],
+ "cmd-comment": [
+ "lease6-del returns a result that indicates the outcome of the operation. It has one of the following values: 0 (success), 1 (error), or 3 (empty)."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease6-del\",",
+ " \"arguments\": {",
+ " \"ip-address\": \"2001:db8::3\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"lease6-del\"/>",
+ "hook": "lease_cmds",
+ "name": "lease6-del",
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/lease6-get-all.json b/src/share/api/lease6-get-all.json
new file mode 100644
index 0000000..81a9f76
--- /dev/null
+++ b/src/share/api/lease6-get-all.json
@@ -0,0 +1,71 @@
+{
+ "access": "read",
+ "avail": "1.3.0",
+ "brief": [
+ "This command retrieves all IPv6 leases or all leases for the specified set of subnets."
+ ],
+ "cmd-comment": [
+ "The ``lease6-get-all`` command may result in very large responses. Please consider using ",
+ "``lease6-get-page`` to get them in chunks. the ``subnets`` parameter is optional. If not ",
+ "specified, leases from all subnets are returned."
+ ],
+
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease6-get-all\",",
+ " \"arguments\": {",
+ " \"subnets\": [ 1, 2, 3, 4 ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp59\"/>",
+ "hook": "lease_cmds",
+ "name": "lease6-get-all",
+ "resp-comment": [
+ "Result 0 is returned when at least one lease is found, 1 when parameters are malformed or missing,",
+ "3 is returned if no leases are found with specified parameter."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"arguments\": {",
+ " \"leases\": [",
+ " {",
+ " \"cltt\": 12345678,",
+ " \"duid\": \"42:42:42:42:42:42:42:42\",",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": true,",
+ " \"hostname\": \"myhost.example.com.\",",
+ " \"hw-address\": \"08:08:08:08:08:08\",",
+ " \"iaid\": 1,",
+ " \"ip-address\": \"2001:db8:2::1\",",
+ " \"preferred-lft\": 500,",
+ " \"state\": 0,",
+ " \"subnet-id\": 44,",
+ " \"type\": \"IA_NA\",",
+ " \"valid-lft\": 3600",
+ " },",
+ " {",
+ " \"cltt\": 12345678,",
+ " \"duid\": \"21:21:21:21:21:21:21:21\",",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": true,",
+ " \"hostname\": \"\",",
+ " \"iaid\": 1,",
+ " \"ip-address\": \"2001:db8:0:0:2::\",",
+ " \"preferred-lft\": 500,",
+ " \"prefix-len\": 80,",
+ " \"state\": 0,",
+ " \"subnet-id\": 44,",
+ " \"type\": \"IA_PD\",",
+ " \"valid-lft\": 3600",
+ " }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"2 IPv6 lease(s) found.\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/lease6-get-by-duid.json b/src/share/api/lease6-get-by-duid.json
new file mode 100644
index 0000000..0c839a5
--- /dev/null
+++ b/src/share/api/lease6-get-by-duid.json
@@ -0,0 +1,50 @@
+{
+ "access": "read",
+ "avail": "1.7.1",
+ "brief": [
+ "This command retrieves all IPv6 leases with the specified hardware address."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease6-get-by-duid\",",
+ " \"arguments\": {",
+ " \"duid\": \"1a:1b:1c:1d:1e:1f:20:21:22:23:24\"",
+ " }",
+ "}"
+ ],
+ "resp-comment": [
+ "Result 0 is returned when at least one lease is found, 1 when parameters are malformed or missing,",
+ "3 is returned if no leases are found with specified parameter."
+ ],
+ "resp-syntax": [
+ " {",
+ " \"arguments\": {",
+ " \"leases\": [",
+ " {",
+ " \"cltt\": 1600439560,",
+ " \"duid\": \"00:01:00:01:26:f7:81:88:00:0c:01:02:03:04\",",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": false,",
+ " \"hostname\": \"foobar.example.org\",",
+ " \"hw-address\": \"00:0c:01:02:03:04\",",
+ " \"iaid\": 1,",
+ " \"ip-address\": \"2001:db8:1::\",",
+ " \"preferred-lft\": 3000,",
+ " \"state\": 0,",
+ " \"subnet-id\": 1,",
+ " \"type\": \"IA_NA\",",
+ " \"valid-lft\": 4000",
+ " }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv6 lease(s) found.\"",
+ " }"
+ ],
+ "description": "See <xref linkend=\"command-lease6-get-by-duid\"/>",
+ "hook": "lease_cmds",
+ "name": "lease6-get-by-duid",
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/lease6-get-by-hostname.json b/src/share/api/lease6-get-by-hostname.json
new file mode 100644
index 0000000..bf0c6e5
--- /dev/null
+++ b/src/share/api/lease6-get-by-hostname.json
@@ -0,0 +1,50 @@
+{
+ "access": "read",
+ "avail": "1.7.1",
+ "brief": [
+ "This command retrieves all IPv6 leases with the specified hostname."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease6-get-by-hostname\",",
+ " \"arguments\": {",
+ " \"hostname\": \"myhost.example.com.\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-lease6-get-by-hostname\"/>",
+ "hook": "lease_cmds",
+ "name": "lease6-get-by-hostname",
+ "resp-comment": [
+ "Result 0 is returned when at least one lease is found, 1 when parameters are malformed or missing,",
+ "3 is returned if no leases are found with specified parameter."
+ ],
+ "resp-syntax": [
+ " {",
+ " \"arguments\": {",
+ " \"leases\": [",
+ " {",
+ " \"cltt\": 1600439560,",
+ " \"duid\": \"00:01:00:01:26:f7:81:88:00:0c:01:02:03:04\",",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": false,",
+ " \"hostname\": \"foobar.example.org\",",
+ " \"hw-address\": \"00:0c:01:02:03:04\",",
+ " \"iaid\": 1,",
+ " \"ip-address\": \"2001:db8:1::\",",
+ " \"preferred-lft\": 3000,",
+ " \"state\": 0,",
+ " \"subnet-id\": 1,",
+ " \"type\": \"IA_NA\",",
+ " \"valid-lft\": 4000",
+ " }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv6 lease(s) found.\"",
+ " }"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/lease6-get-page.json b/src/share/api/lease6-get-page.json
new file mode 100644
index 0000000..dc9606b
--- /dev/null
+++ b/src/share/api/lease6-get-page.json
@@ -0,0 +1,68 @@
+{
+ "access": "read",
+ "avail": "1.5.0",
+ "brief": [
+ "This command retrieves all IPv6 leases by page."
+ ],
+ "cmd-comment": [
+ "The from address and the page size limit are mandatory."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease6-get-page\",",
+ " \"arguments\": {",
+ " \"limit\": <integer>,",
+ " \"from\": <IPv6 address or 'start'>",
+ " }",
+ "}"
+ ],
+ "resp-comment": [
+ "Result 0 is returned when at least one lease is found, 1 when parameters are malformed or missing,",
+ "3 is returned if no leases are found."
+ ],
+ "resp-syntax": [
+ " {",
+ " \"arguments\": {",
+ " \"leases\": [",
+ " {",
+ " \"cltt\": 1600439560,",
+ " \"duid\": \"00:01:00:01:26:f7:81:88:00:0c:01:02:03:04\",",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": false,",
+ " \"hostname\": \"foo.example.org\",",
+ " \"hw-address\": \"00:0c:01:02:03:04\",",
+ " \"iaid\": 1,",
+ " \"ip-address\": \"2001:db8:1::1\",",
+ " \"preferred-lft\": 3000,",
+ " \"state\": 0,",
+ " \"subnet-id\": 1,",
+ " \"type\": \"IA_NA\",",
+ " \"valid-lft\": 4000",
+ " },",
+ " {",
+ " \"cltt\": 1600439570,",
+ " \"duid\": \"00:01:00:01:26:f7:81:88:00:0c:01:02:03:05\",",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": false,",
+ " \"hostname\": \"bar.example.org\",",
+ " \"hw-address\": \"00:0c:01:02:03:05\",",
+ " \"iaid\": 1,",
+ " \"ip-address\": \"2001:db8:1::2\",",
+ " \"preferred-lft\": 3000,",
+ " \"state\": 0,",
+ " \"subnet-id\": 1,",
+ " \"type\": \"IA_NA\",",
+ " \"valid-lft\": 4000",
+ " }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv6 lease(s) found.\"",
+ "}"
+ ],
+ "hook": "lease_cmds",
+ "name": "lease6-get-page",
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/lease6-get.json b/src/share/api/lease6-get.json
new file mode 100644
index 0000000..3d220d5
--- /dev/null
+++ b/src/share/api/lease6-get.json
@@ -0,0 +1,54 @@
+{
+ "access": "read",
+ "avail": "1.3.0",
+ "brief": [
+ "This command queries the lease database and retrieves existing leases."
+ ],
+ "cmd-comment": [
+ "lease6-get returns a result that indicates the outcome of the operation and lease details, if found."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease6-get\",",
+ " \"arguments\": {",
+ " \"ip-address\": \"2001:db8:1234:ab::\",",
+ " \"type\": \"IA_PD\"",
+ " }",
+ "}"
+ ],
+ "resp-comment": [
+ "Result 0 is returned when at least one lease is found, 1 when parameters are malformed or missing,",
+ "3 is returned if no leases are found with specified parameter."
+ ],
+ "resp-syntax": [
+ " {",
+ " \"arguments\": {",
+ " \"leases\": [",
+ " {",
+ " \"cltt\": 1600439560,",
+ " \"duid\": \"00:01:00:01:26:f7:81:88:00:0c:01:02:03:04\",",
+ " \"fqdn-fwd\": false,",
+ " \"fqdn-rev\": false,",
+ " \"hostname\": \"foobar.example.org\",",
+ " \"hw-address\": \"00:0c:01:02:03:04\",",
+ " \"iaid\": 1,",
+ " \"ip-address\": \"2001:db8:1::\",",
+ " \"preferred-lft\": 3000,",
+ " \"state\": 0,",
+ " \"subnet-id\": 1,",
+ " \"type\": \"IA_NA\",",
+ " \"valid-lft\": 4000",
+ " }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv6 lease(s) found.\"",
+ " }"
+ ],
+ "description": "See <xref linkend=\"idp58\"/>",
+ "hook": "lease_cmds",
+ "name": "lease6-get",
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/lease6-resend-ddns.json b/src/share/api/lease6-resend-ddns.json
new file mode 100644
index 0000000..a8c21de
--- /dev/null
+++ b/src/share/api/lease6-resend-ddns.json
@@ -0,0 +1,32 @@
+{
+ "access": "write",
+ "avail": "1.7.6",
+ "brief": [
+ "This command resends a request to kea-dhcp-ddns to update DNS for an existing lease."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease6-resend-ddns\",",
+ " \"arguments\": {",
+ " \"ip-address\": \"2001:db8::1\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp58\"/>",
+ "hook": "lease_cmds",
+ "name": "lease6-resend-ddns",
+ "resp-comment": [
+ "lease6-resend-ddns returns a result that indicates the outcome of the operation and lease details, if found. It has one of the following values: 0 (success), 1 (error), or 3 (empty)."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"arguments\": {",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"NCR generated for: 2001:db8::1, hostname: example.com.\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/lease6-update.json b/src/share/api/lease6-update.json
new file mode 100644
index 0000000..0c27104
--- /dev/null
+++ b/src/share/api/lease6-update.json
@@ -0,0 +1,30 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command updates existing leases."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease6-update\",",
+ " \"arguments\": {",
+ " \"ip-address\": \"2001:db8::1\",",
+ " \"duid\": \"88:88:88:88:88:88:88:88\",",
+ " \"iaid\": 7654321,",
+ " \"hostname\": \"newhostname.example.org\",",
+ " \"subnet-id\": 66,",
+ " \"force-create\": false",
+ " }",
+ "}",
+ ""
+ ],
+ "description": "See <xref linkend=\"idp62\"/>",
+ "hook": "lease_cmds",
+ "name": "lease6-update",
+ "resp-comment": [
+ "If the returned result is equal to 4, it indicates that the lease could not be updated because it was in conflict with the server's state or its notion of the configuration. The High Availability hook library can handle such a result differently than a general error. A general error of 1 can indicate issues with processing the command, database availability etc."
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/lease6-wipe.json b/src/share/api/lease6-wipe.json
new file mode 100644
index 0000000..eb6f55a
--- /dev/null
+++ b/src/share/api/lease6-wipe.json
@@ -0,0 +1,24 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command removes all leases associated with a given subnet."
+ ],
+ "cmd-comment": [
+ "Note: not all backends support this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease6-wipe\",",
+ " \"arguments\": {",
+ " \"subnet-id\": 66",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp63\"/>",
+ "hook": "lease_cmds",
+ "name": "lease6-wipe",
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/lease6-write.json b/src/share/api/lease6-write.json
new file mode 100644
index 0000000..15301c6
--- /dev/null
+++ b/src/share/api/lease6-write.json
@@ -0,0 +1,21 @@
+{
+ "access": "write",
+ "avail": "2.3.1",
+ "brief": [
+ "This command writes the IPv6 memfile lease database into a CSV file."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"lease6-write\",",
+ " \"arguments\": {",
+ " \"filename\": \"a_file.csv\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp63\"/>",
+ "hook": "lease_cmds",
+ "name": "lease6-write",
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/leases-reclaim.json b/src/share/api/leases-reclaim.json
new file mode 100644
index 0000000..a270682
--- /dev/null
+++ b/src/share/api/leases-reclaim.json
@@ -0,0 +1,21 @@
+{
+ "access": "write",
+ "avail": "1.0.0",
+ "brief": [
+ "This command instructs the server to reclaim all expired leases immediately."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"leases-reclaim\",",
+ " \"arguments\": {",
+ " \"remove\": true",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-leases-reclaim\"/>",
+ "name": "leases-reclaim",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/libreload.json b/src/share/api/libreload.json
new file mode 100644
index 0000000..75b4e7f
--- /dev/null
+++ b/src/share/api/libreload.json
@@ -0,0 +1,23 @@
+{
+ "access": "write",
+ "avail": "1.2.0",
+ "brief": [
+ "This command first unloads and then reloads all currently loaded hooks libraries.",
+ "This command is deprecated and will be removed in future Kea versions."
+ ],
+ "cmd-comment": [
+ "The server responds with 0, indicating success, or 1, indicating a failure."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"libreload\",",
+ " \"arguments\": { }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-libreload\"/>",
+ "name": "libreload",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/list-commands.json b/src/share/api/list-commands.json
new file mode 100644
index 0000000..25fd028
--- /dev/null
+++ b/src/share/api/list-commands.json
@@ -0,0 +1,24 @@
+{
+ "access": "read",
+ "avail": "1.0.0",
+ "brief": [
+ "This command retrieves a list of all commands supported by the server."
+ ],
+ "cmd-comment": [
+ "The server responds with a list of all supported commands."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"list-commands\",",
+ " \"arguments\": { }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-list-commands\"/>",
+ "name": "list-commands",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns",
+ "kea-ctrl-agent"
+ ]
+}
diff --git a/src/share/api/network4-add.json b/src/share/api/network4-add.json
new file mode 100644
index 0000000..623bb58
--- /dev/null
+++ b/src/share/api/network4-add.json
@@ -0,0 +1,55 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command adds a new shared network."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"network4-add\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [ {",
+ " \"name\": \"floor13\",",
+ " \"subnet4\": [",
+ " {",
+ " \"id\": 100,",
+ " \"pools\": [ { \"pool\": \"192.0.2.2-192.0.2.99\" } ],",
+ " \"subnet\": \"192.0.2.0/24\",",
+ " \"option-data\": [",
+ " {",
+ " \"name\": \"routers\",",
+ " \"data\": \"192.0.2.1\"",
+ " }",
+ " ]",
+ " },",
+ " {",
+ " \"id\": 101,",
+ " \"pools\": [ { \"pool\": \"192.0.3.2-192.0.3.99\" } ],",
+ " \"subnet\": \"192.0.3.0/24\",",
+ " \"option-data\": [",
+ " {",
+ " \"name\": \"routers\",",
+ " \"data\": \"192.0.3.1\"",
+ " }",
+ " ]",
+ " } ]",
+ " } ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp75\"/>",
+ "hook": "subnet_cmds",
+ "name": "network4-add",
+ "resp-syntax": [
+ "{",
+ " \"arguments\": {",
+ " \"shared-networks\": [ { \"name\": \"floor13\" } ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"A new IPv4 shared network 'floor13' added\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/network4-del.json b/src/share/api/network4-del.json
new file mode 100644
index 0000000..a11feae
--- /dev/null
+++ b/src/share/api/network4-del.json
@@ -0,0 +1,35 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command deletes existing shared networks."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"network4-del\",",
+ " \"arguments\": {",
+ " \"name\": \"floor13\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-network4-del\"/>",
+ "hook": "subnet_cmds",
+ "name": "network4-del",
+ "resp-syntax": [
+ "{",
+ " \"command\": \"network4-del\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": \"floor13\"",
+ " }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 shared network 'floor13' deleted\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/network4-get.json b/src/share/api/network4-get.json
new file mode 100644
index 0000000..84c1da9
--- /dev/null
+++ b/src/share/api/network4-get.json
@@ -0,0 +1,57 @@
+{
+ "access": "read",
+ "avail": "1.3.0",
+ "brief": [
+ "This command retrieves detailed information about shared networks, including subnets that are currently part of a given network."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"network4-get\",",
+ " \"arguments\": {",
+ " \"name\": \"floor13\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp74\"/>",
+ "hook": "subnet_cmds",
+ "name": "network4-get",
+ "resp-comment": [
+ "Note that the actual response contains many additional fields that are omitted here for clarity."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"Info about IPv4 shared network 'floor13' returned\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"match-client-id\": true,",
+ " \"name\": \"floor13\",",
+ " \"option-data\": [ ],",
+ " \"rebind-timer\": 90,",
+ " \"relay\": {",
+ " \"ip-address\": \"0.0.0.0\"",
+ " },",
+ " \"renew-timer\": 60,",
+ " \"subnet4\": [",
+ " {",
+ " \"subnet\": \"192.0.2.0/24\",",
+ " \"id\": 5,",
+ " <many other subnet specific details here>",
+ " },",
+ " {",
+ " \"subnet\": \"192.0.3.0/31\",",
+ " \"id\": 6,",
+ " <many other subnet specific details here>",
+ " }",
+ " ],",
+ " \"valid-lifetime\": 120",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/network4-list.json b/src/share/api/network4-list.json
new file mode 100644
index 0000000..459f089
--- /dev/null
+++ b/src/share/api/network4-list.json
@@ -0,0 +1,30 @@
+{
+ "access": "read",
+ "avail": "1.3.0",
+ "brief": [
+ "This command retrieves the full list of currently configured shared networks."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"network4-list\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-network4-list\"/>",
+ "hook": "subnet_cmds",
+ "name": "network4-list",
+ "resp-syntax": [
+ "{",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " { \"name\": \"floor1\" },",
+ " { \"name\": \"office\" }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"2 IPv4 network(s) found\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/network4-subnet-add.json b/src/share/api/network4-subnet-add.json
new file mode 100644
index 0000000..edb6257
--- /dev/null
+++ b/src/share/api/network4-subnet-add.json
@@ -0,0 +1,28 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command adds existing subnets to existing shared networks."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"network4-subnet-add\",",
+ " \"arguments\": {",
+ " \"name\": \"floor13\",",
+ " \"id\": 5",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp77\"/>",
+ "hook": "subnet_cmds",
+ "name": "network4-subnet-add",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 subnet 10.0.0.0/8 (id 5) is now part of shared network 'floor1'\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/network4-subnet-del.json b/src/share/api/network4-subnet-del.json
new file mode 100644
index 0000000..fd1c7e3
--- /dev/null
+++ b/src/share/api/network4-subnet-del.json
@@ -0,0 +1,28 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command removes a subnet that is part of an existing shared network and demotes it to a plain, stand-alone subnet."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"network4-subnet-del\",",
+ " \"arguments\": {",
+ " \"name\": \"floor13\",",
+ " \"id\": 5",
+ " }",
+ " }"
+ ],
+ "description": "See <xref linkend=\"idp78\"/>",
+ "hook": "subnet_cmds",
+ "name": "network4-subnet-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 subnet 10.0.0.0/8 (id 5) is now removed from shared network 'floor13'\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/network6-add.json b/src/share/api/network6-add.json
new file mode 100644
index 0000000..aa74f75
--- /dev/null
+++ b/src/share/api/network6-add.json
@@ -0,0 +1,55 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command adds a new shared network."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"network6-add\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [ {",
+ " \"name\": \"floor13\",",
+ " \"subnet6\": [",
+ " {",
+ " \"id\": 100,",
+ " \"pools\": [ { \"pool\": \"2003:db8:1::1-2003:db8:1::ff\" } ],",
+ " \"subnet\": \"2003:db8:1::/64\",",
+ " \"option-data\": [",
+ " {",
+ " \"name\": \"dns-servers\",",
+ " \"data\": \"2005:db8:1::1\"",
+ " }",
+ " ]",
+ " },",
+ " {",
+ " \"id\": 101,",
+ " \"pools\": [ { \"pool\": \"2003:db8:2::1-2003:db8:2::ff\" } ],",
+ " \"subnet\": \"2003:db8:2::/64\",",
+ " \"option-data\": [",
+ " {",
+ " \"name\": \"dns-servers\",",
+ " \"data\": \"2006:db8:1::1\"",
+ " }",
+ " ]",
+ " } ]",
+ " } ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp75\"/>",
+ "hook": "subnet_cmds",
+ "name": "network6-add",
+ "resp-syntax": [
+ "{",
+ " \"arguments\": {",
+ " \"shared-networks\": [ { \"name\": \"floor13\" } ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"A new IPv6 shared network 'floor13' added\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/network6-del.json b/src/share/api/network6-del.json
new file mode 100644
index 0000000..12eae7a
--- /dev/null
+++ b/src/share/api/network6-del.json
@@ -0,0 +1,35 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command deletes existing shared networks."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"network6-del\",",
+ " \"arguments\": {",
+ " \"name\": \"floor13\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp76\"/>",
+ "hook": "subnet_cmds",
+ "name": "network6-del",
+ "resp-syntax": [
+ "{",
+ " \"command\": \"network6-del\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": \"floor13\"",
+ " }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 shared network 'floor13' deleted\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/network6-get.json b/src/share/api/network6-get.json
new file mode 100644
index 0000000..f919618
--- /dev/null
+++ b/src/share/api/network6-get.json
@@ -0,0 +1,57 @@
+{
+ "access": "read",
+ "avail": "1.3.0",
+ "brief": [
+ "This command retrieves detailed information about shared networks, including subnets that are currently part of a given network."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"network4-get\",",
+ " \"arguments\": {",
+ " \"name\": \"floor13\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp74\"/>",
+ "hook": "subnet_cmds",
+ "name": "network6-get",
+ "resp-comment": [
+ "Note that the actual response contains many additional fields that are omitted here for clarity."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"Info about IPv6 shared network 'floor13' returned\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"match-client-id\": true,",
+ " \"name\": \"floor13\",",
+ " \"option-data\": [ ],",
+ " \"rebind-timer\": 90,",
+ " \"relay\": {",
+ " \"ip-address\": \"::\"",
+ " },",
+ " \"renew-timer\": 60,",
+ " \"subnet6\": [",
+ " {",
+ " \"subnet\": \"2003:db8:1::/64\",",
+ " \"id\": 5,",
+ " <many other subnet specific details here>",
+ " },",
+ " {",
+ " \"subnet\": \"2003:db8:2::/71\",",
+ " \"id\": 6,",
+ " <many other subnet specific details here>",
+ " }",
+ " ],",
+ " \"valid-lifetime\": 120",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/network6-list.json b/src/share/api/network6-list.json
new file mode 100644
index 0000000..98a64e2
--- /dev/null
+++ b/src/share/api/network6-list.json
@@ -0,0 +1,30 @@
+{
+ "access": "read",
+ "avail": "1.3.0",
+ "brief": [
+ "This command retrieves the full list of currently configured shared networks."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"network6-list\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-network6-list\"/>",
+ "hook": "subnet_cmds",
+ "name": "network6-list",
+ "resp-syntax": [
+ "{",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " { \"name\": \"floor1\" },",
+ " { \"name\": \"office\" }",
+ " ]",
+ " },",
+ " \"result\": 0,",
+ " \"text\": \"2 IPv6 network(s) found\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/network6-subnet-add.json b/src/share/api/network6-subnet-add.json
new file mode 100644
index 0000000..09d9086
--- /dev/null
+++ b/src/share/api/network6-subnet-add.json
@@ -0,0 +1,28 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command adds existing subnets to existing shared networks."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"network6-subnet-add\",",
+ " \"arguments\": {",
+ " \"name\": \"floor13\",",
+ " \"id\": 5",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp77\"/>",
+ "hook": "subnet_cmds",
+ "name": "network6-subnet-add",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 subnet 2003:db8::/64 (id 5) is now part of shared network 'floor1'\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/network6-subnet-del.json b/src/share/api/network6-subnet-del.json
new file mode 100644
index 0000000..d766f89
--- /dev/null
+++ b/src/share/api/network6-subnet-del.json
@@ -0,0 +1,28 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command removes a subnet that is part of an existing shared network and demotes it to a plain, stand-alone subnet."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"network6-subnet-del\",",
+ " \"arguments\": {",
+ " \"name\": \"floor13\",",
+ " \"id\": 5",
+ " }",
+ " }"
+ ],
+ "description": "See <xref linkend=\"idp78\"/>",
+ "hook": "subnet_cmds",
+ "name": "network6-subnet-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 subnet 2003:db8::/64 (id 5) is now removed from shared network 'floor13'\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-class4-del.json b/src/share/api/remote-class4-del.json
new file mode 100644
index 0000000..af73605
--- /dev/null
+++ b/src/share/api/remote-class4-del.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.9.10",
+ "brief": [
+ "This command deletes a DHCPv4 client class from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one name of the client class to be deleted. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-class4-del\",",
+ " \"arguments\": {",
+ " \"client-classes\": [",
+ " {",
+ " \"name\": <client class name>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-class4-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv4 client class(es) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-class4-get-all.json b/src/share/api/remote-class4-get-all.json
new file mode 100644
index 0000000..639fc36
--- /dev/null
+++ b/src/share/api/remote-class4-get-all.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.9.10",
+ "brief": [
+ "This command fetches all DHCPv4 client classes for specified servers from the configuration database."
+ ],
+ "cmd-comment": [
+ "The ``server-tags`` list is required for this command, and must not be empty."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-class4-get-all\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-class4-get-all",
+ "resp-comment": [
+ "The returned response contains a list of maps. Each map contains a client class name and the metadata, which provides database-specific information associated with the client class."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 DHCPv4 client class(es) found.\",",
+ " \"arguments\": {",
+ " \"client-classes\": [",
+ " {",
+ " <first client class specification>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ " },",
+ " {",
+ " <second client class specification>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, ... ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-class4-get.json b/src/share/api/remote-class4-get.json
new file mode 100644
index 0000000..5dfdcb5
--- /dev/null
+++ b/src/share/api/remote-class4-get.json
@@ -0,0 +1,51 @@
+{
+ "access": "read",
+ "avail": "1.9.10",
+ "brief": [
+ "This command fetches a selected DHCPv4 client class by name from the specified database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one name of the client class to be returned. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-class4-get\",",
+ " \"arguments\": {",
+ " \"client-classes\": [",
+ " {",
+ " \"name\": <client class name>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-class4-get",
+ "resp-comment": [
+ "The metadata is included in the returned shared network definition and provides the database-specific information associated with the returned object."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 client class found.\",",
+ " \"arguments\": {",
+ " \"client-classes\": [",
+ " {",
+ " \"name\": <client class name>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " },",
+ " <the rest of the client class information>",
+ " }",
+ " ],",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-class4-set.json b/src/share/api/remote-class4-set.json
new file mode 100644
index 0000000..014071d
--- /dev/null
+++ b/src/share/api/remote-class4-set.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.9.10",
+ "brief": [
+ "This command creates or replaces a DHCPv4 client class in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided list must contain exactly one client class specification. It may contain an optional parameter \"follow-class-name\" which can specify an existing class name to indicate that the class from the command is placed right after this existing class in the hierarchy. This parameter can be omitted or set to \"null\" to indicate that the new client class should be appended at the end of the hierarchy or an updated class should remain at the current position. The ``server-tags`` list is mandatory and must contain one or more server tags as strings to explicitly associate the client class with one or more user-defined servers. It may include the special server tag \"all\" to associate the class with all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-class4-set\",",
+ " \"arguments\": {",
+ " \"client-class\": [",
+ " {",
+ " <client class specification>,",
+ " \"follow-class-name\": <existing class name>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-class4-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 shared network successfully set.\",",
+ " \"arguments\": {",
+ " \"client-classes\": [",
+ " {",
+ " \"name\": <set client class name>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-class6-del.json b/src/share/api/remote-class6-del.json
new file mode 100644
index 0000000..f74578d
--- /dev/null
+++ b/src/share/api/remote-class6-del.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.9.10",
+ "brief": [
+ "This command deletes a DHCPv6 client class from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one name of the client class to be deleted. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-class6-del\",",
+ " \"arguments\": {",
+ " \"client-classes\": [",
+ " {",
+ " \"name\": <client class name>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-class6-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv6 client class(es) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-class6-get-all.json b/src/share/api/remote-class6-get-all.json
new file mode 100644
index 0000000..216611c
--- /dev/null
+++ b/src/share/api/remote-class6-get-all.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.9.10",
+ "brief": [
+ "This command fetches all DHCPv6 client classes for specified servers from the configuration database."
+ ],
+ "cmd-comment": [
+ "The ``server-tags`` list is required for this command, and must not be empty."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-class6-get-all\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-class6-get-all",
+ "resp-comment": [
+ "The returned response contains a list of maps. Each map contains a client class name and the metadata, which provides database-specific information associated with the client class."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 DHCPv6 client class(es) found.\",",
+ " \"arguments\": {",
+ " \"client-classes\": [",
+ " {",
+ " <first client class specification>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ " },",
+ " {",
+ " <second client class specification>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, ... ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-class6-get.json b/src/share/api/remote-class6-get.json
new file mode 100644
index 0000000..bf90fbe
--- /dev/null
+++ b/src/share/api/remote-class6-get.json
@@ -0,0 +1,51 @@
+{
+ "access": "read",
+ "avail": "1.9.10",
+ "brief": [
+ "This command fetches a selected DHCPv6 client class by name from the specified database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one name of the client class to be returned. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-class6-get\",",
+ " \"arguments\": {",
+ " \"client-classes\": [",
+ " {",
+ " \"name\": <client class name>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-class6-get",
+ "resp-comment": [
+ "The metadata is included in the returned shared network definition and provides the database-specific information associated with the returned object."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 client class found.\",",
+ " \"arguments\": {",
+ " \"client-classes\": [",
+ " {",
+ " \"name\": <client class name>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " },",
+ " <the rest of the client class information>",
+ " }",
+ " ],",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-class6-set.json b/src/share/api/remote-class6-set.json
new file mode 100644
index 0000000..1c2fed8
--- /dev/null
+++ b/src/share/api/remote-class6-set.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.9.10",
+ "brief": [
+ "This command creates or replaces a DHCPv6 client class in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided list must contain exactly one client class specification. It may contain an optional parameter \"follow-class-name\" which can specify an existing class name to indicate that the class from the command is placed right after this existing class in the hierarchy. This parameter can be omitted or set to \"null\" to indicate that the new client class should be appended at the end of the hierarchy or an updated class should remain at the current position. The ``server-tags`` list is mandatory and must contain one or more server tags as strings to explicitly associate the client class with one or more user-defined servers. It may include the special server tag \"all\" to associate the class with all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-class6-set\",",
+ " \"arguments\": {",
+ " \"client-class\": [",
+ " {",
+ " <client class specification>,",
+ " \"follow-class-name\": <existing class name>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-class6-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 shared network successfully set.\",",
+ " \"arguments\": {",
+ " \"client-classes\": [",
+ " {",
+ " \"name\": <set client class name>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-global-parameter4-del.json b/src/share/api/remote-global-parameter4-del.json
new file mode 100644
index 0000000..3c1564a
--- /dev/null
+++ b/src/share/api/remote-global-parameter4-del.json
@@ -0,0 +1,36 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a global DHCPv4 parameter from the configuration database. The server uses the value specified in the configuration file, or a default value if the parameter is not specified, after deleting the parameter from the database."
+ ],
+ "cmd-comment": [
+ "This command carries the list including exactly one name of the parameter to be deleted. The ``server-tags`` list is mandatory and it must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-global-parameter4-del\",",
+ " \"arguments\": {",
+ " \"parameters\": [ <parameter name as string> ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-global-parameter4-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 global parameter(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-global-parameter4-get-all.json b/src/share/api/remote-global-parameter4-get-all.json
new file mode 100644
index 0000000..1eb4297
--- /dev/null
+++ b/src/share/api/remote-global-parameter4-get-all.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches all global parameters for the server from the specified database."
+ ],
+ "cmd-comment": [
+ "The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The special server tag \"all\" is allowed; it fetches the global parameters shared by all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-global-parameter4-get-all\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-global-parameter4-get-all",
+ "resp-comment": [
+ "The returned response contains a list of maps. Each map contains a global parameter name/value pair. The value may be a JSON string, integer, real, or boolean. The metadata is appended to each parameter and provides database-specific information associated with the returned objects. If the server tag \"all\" is included in the command, the response contains the global parameters shared among all servers. It excludes server-specific global parameters. If an explicit server tag is included in the command, the response contains all global parameters directly associated with the given server, and the global parameters associated with all servers when server-specific values are not present."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 global parameters found.\",",
+ " \"arguments\": {",
+ " \"parameters\": [",
+ " {",
+ " <first parameter name>: <first parameter value>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " },",
+ " {",
+ " <second parameter name>: <second parameter value>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-global-parameter4-get.json b/src/share/api/remote-global-parameter4-get.json
new file mode 100644
index 0000000..1d7f09b
--- /dev/null
+++ b/src/share/api/remote-global-parameter4-get.json
@@ -0,0 +1,45 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches the selected global parameter for the server from the specified database."
+ ],
+ "cmd-comment": [
+ "This command carries a list including exactly one name of the parameter to be fetched. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The server tag \"all\" is allowed; it fetches the global parameter value shared by all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-global-parameter4-get\",",
+ " \"arguments\": {",
+ " \"parameters\": [ <parameter name as string> ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-global-parameter4-get",
+ "resp-comment": [
+ "The returned response contains a map with a global parameter name/value pair. The value may be a JSON string, integer, real, or boolean. The metadata is included and provides database-specific information associated with the returned object. If the \"all\" server tag is specified, the command attempts to fetch the global parameter value associated with all servers. If the explicit server tag is specified, the command fetches the value associated with the given server. If the server-specific value does not exist, the ``remote-global-parameter4-get`` command fetches the value associated with all servers."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 global parameter found.\",",
+ " \"arguments\": {",
+ " \"parameters\": {",
+ " <parameter name>: <parameter value>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " },",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-global-parameter4-set.json b/src/share/api/remote-global-parameter4-set.json
new file mode 100644
index 0000000..d09af68
--- /dev/null
+++ b/src/share/api/remote-global-parameter4-set.json
@@ -0,0 +1,43 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or updates one or more global parameters in the configuration database."
+ ],
+ "cmd-comment": [
+ "This command carries multiple global parameters with their values. Care should be taken when specifying more than one parameter; in some cases, only a subset of the parameters may be successfully stored in the database and other parameters may fail to be stored. In such cases the ``remote-global-parameter4-get-all`` command may be useful to verify the contents of the database after the update. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The server tag \"all\" is allowed; it associates the specified parameters with all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-global-parameter4-set\",",
+ " \"arguments\": {",
+ " \"parameters\": {",
+ " <first parameter name>: <first parameter value>,",
+ " <second parameter name>: <second parameter value>",
+ " },",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-global-parameter4-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 global parameter(s) successfully set.\",",
+ " \"arguments\": {",
+ " \"parameters\": {",
+ " <first parameter name>: <first parameter value>,",
+ " <second parameter name>: <second parameter value>",
+ " },",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-global-parameter6-del.json b/src/share/api/remote-global-parameter6-del.json
new file mode 100644
index 0000000..545921e
--- /dev/null
+++ b/src/share/api/remote-global-parameter6-del.json
@@ -0,0 +1,36 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a global DHCPv6 parameter from the configuration database. The server uses the value specified in the configuration file, or a default value if the parameter is not specified in the configuration file, after deleting the parameter from the database."
+ ],
+ "cmd-comment": [
+ "This command carries the list including exactly one name of the parameter to be deleted. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-global-parameter6-del\",",
+ " \"arguments\": {",
+ " \"parameters\": [ <parameter name as string> ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-global-parameter6-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 global parameter(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-global-parameter6-get-all.json b/src/share/api/remote-global-parameter6-get-all.json
new file mode 100644
index 0000000..12d8541
--- /dev/null
+++ b/src/share/api/remote-global-parameter6-get-all.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches all global parameters for the server from the specified database."
+ ],
+ "cmd-comment": [
+ "The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The special server tag \"all\" is allowed; it fetches the global parameters shared by all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-global-parameter6-get-all\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-global-parameter6-get-all",
+ "resp-comment": [
+ "The returned response contains a list of maps. Each map contains a global parameter name/value pair. The value may be a JSON string, integer, real, or boolean. The metadata is appended to each parameter and provides database-specific information associated with the returned objects. If the server tag \"all\" is included in the command, the response contains the global parameters shared among all servers. It excludes server-specific global parameters. If an explicit server tag is included in the command, the response contains all global parameters directly associated with the given server, and the global parameters associated with all servers when server-specific values are not present."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 global parameters found.\",",
+ " \"arguments\": {",
+ " \"parameters\": [",
+ " {",
+ " <first parameter name>: <first parameter value>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " },",
+ " {",
+ " <second parameter name>: <second parameter value>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-global-parameter6-get.json b/src/share/api/remote-global-parameter6-get.json
new file mode 100644
index 0000000..4c3975e
--- /dev/null
+++ b/src/share/api/remote-global-parameter6-get.json
@@ -0,0 +1,45 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches the selected global parameter for the server from the specified database."
+ ],
+ "cmd-comment": [
+ "This command carries a list including exactly one name of the parameter to be fetched. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The server tag \"all\" is allowed; it fetches the global parameter value shared by all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-global-parameter6-get\",",
+ " \"arguments\": {",
+ " \"parameters\": [ <parameter name as string> ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-global-parameter6-get",
+ "resp-comment": [
+ "The returned response contains a map with a global parameter name/value pair. The value may be a JSON string, integer, real, or boolean. The metadata is included and provides database-specific information associated with the returned object. If the \"all\" server tag is specified, the command attempts to fetch the global parameter value associated with all servers. If the explicit server tag is specified, the command fetches the value associated with the given server. If the server-specific value does not exist, the ``remote-global-parameter6-get`` fetches the value associated with all servers."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 global parameter found.\",",
+ " \"arguments\": {",
+ " \"parameters\": {",
+ " <parameter name>: <parameter value>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " },",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-global-parameter6-set.json b/src/share/api/remote-global-parameter6-set.json
new file mode 100644
index 0000000..2f1fc67
--- /dev/null
+++ b/src/share/api/remote-global-parameter6-set.json
@@ -0,0 +1,43 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or updates one or more global parameters in the configuration database."
+ ],
+ "cmd-comment": [
+ "This command carries multiple global parameters with their values. Care should be taken when specifying more than one parameter; in some cases, only a subset of the parameters may be successfully stored in the database and other parameters may fail to be stored. In such cases the ``remote-global-parameter6-get-all`` command may be useful to verify the contents of the database after the update. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The server tag \"all\" is allowed; it associates the specified parameters with all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-global-parameter6-set\",",
+ " \"arguments\": {",
+ " \"parameters\": {",
+ " <first parameter name>: <first parameter value>,",
+ " <second parameter name>: <second parameter value>",
+ " },",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-global-parameter6-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 global parameter(s) successfully set.\",",
+ " \"arguments\": {",
+ " \"parameters\": {",
+ " <first parameter name>: <first parameter value>,",
+ " <second parameter name>: <second parameter value>",
+ " },",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-network4-del.json b/src/share/api/remote-network4-del.json
new file mode 100644
index 0000000..2c3b5c8
--- /dev/null
+++ b/src/share/api/remote-network4-del.json
@@ -0,0 +1,40 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes an IPv4 shared network from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one name of the shared network to be deleted. The ``subnets-action`` parameter denotes whether the subnets in this shared network should be deleted. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-network4-del\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": <shared network name>",
+ " }",
+ " ],",
+ " \"subnets-action\": <'keep' | 'delete'>,",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-network4-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv4 shared network(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-network4-get.json b/src/share/api/remote-network4-get.json
new file mode 100644
index 0000000..5ad6b48
--- /dev/null
+++ b/src/share/api/remote-network4-get.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches the selected IPv4 shared network for the server from the specified database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one name of the shared network to be returned. The ``subnets-include`` optional parameter allows for specifying whether the subnets belonging to the shared network should also be returned. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-network4-get\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": <shared network name>",
+ " }",
+ " ],",
+ " \"subnets-include\": <'full' | 'no'>,",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-network4-get",
+ "resp-comment": [
+ "If the subnets are returned with the shared network, they are carried in the ``subnet4`` list within the shared network definition. The metadata is included in the returned shared network definition and provides the database-specific information associated with the returned object."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 shared network found.\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": <shared network name>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " },",
+ " <the rest of the shared network information, potentially including subnets>",
+ " }",
+ " ],",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-network4-list.json b/src/share/api/remote-network4-list.json
new file mode 100644
index 0000000..db10c68
--- /dev/null
+++ b/src/share/api/remote-network4-list.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches a list of all IPv4 shared networks from the configuration database."
+ ],
+ "cmd-comment": [
+ "The ``server-tags`` list is required for this command, and must not be empty. It may either contain one or multiple server tags as strings, or a single ``null`` value."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-network4-list\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-network4-list",
+ "resp-comment": [
+ "The returned response contains the list of maps. Each map contains the shared network name and the metadata, which provides database-specific information associated with the shared network. The returned list does not contain full definitions of the shared networks; use ``remote-network4-get`` to fetch the full information about the selected shared networks. If the command includes explicit server tags as strings (including the special server tag \"all\"), the list contains all shared networks which are associated with any of the specified tags. A network is returned even if it is associated with multiple servers and only one of the specified tags matches. If the command includes the ``null`` value in the ``server-tags`` list, the response contains all shared networks which are assigned to no servers (unassigned)."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 IPv4 shared network(s) found.\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": <first shared network name>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ " },",
+ " {",
+ " \"name\": <second shared network name>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, ... ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-network4-set.json b/src/share/api/remote-network4-set.json
new file mode 100644
index 0000000..5f2969d
--- /dev/null
+++ b/src/share/api/remote-network4-set.json
@@ -0,0 +1,37 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces an IPv4 shared network in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided list must contain exactly one shared network specification, and must not contain subnets (the \"subnet4\" parameter). The subnets are added to the shared network using the ``remote-subnet4-set`` command. The ``server-tags`` list is mandatory and must contain one or more server tags as strings to explicitly associate the shared network with one or more user-defined servers. It may include the special server tag \"all\" to associate the network with all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-network4-set\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " <shared network specification excluding subnets list>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-network4-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 shared network successfully set.\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-network6-del.json b/src/share/api/remote-network6-del.json
new file mode 100644
index 0000000..2d0cf17
--- /dev/null
+++ b/src/share/api/remote-network6-del.json
@@ -0,0 +1,40 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes an IPv6 shared network from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one name of the shared network to be deleted. The ``subnets-action`` parameter indicates whether the subnets in this shared network should be deleted. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-network6-del\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": <shared network name>",
+ " }",
+ " ],",
+ " \"subnets-action\": <'keep' | 'delete'>,",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-network6-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv6 shared network(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-network6-get.json b/src/share/api/remote-network6-get.json
new file mode 100644
index 0000000..2ba0274
--- /dev/null
+++ b/src/share/api/remote-network6-get.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches the selected IPv6 shared network for the server from the specified database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one name of the shared network to be returned. The ``subnets-include`` optional parameter allows for specifying whether the subnets belonging to the shared network should also be returned. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-network6-get\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": <shared network name>",
+ " }",
+ " ],",
+ " \"subnets-include\": <'full' | 'no'>,",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-network6-get",
+ "resp-comment": [
+ "If the subnets are returned with the shared network, they are carried in the ``subnet6`` list within the shared network definition. The metadata is included in the returned shared network definition and provides the database-specific information associated with the returned object."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 shared network found.\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": <shared network name>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " },",
+ " <the rest of the shared network information, potentially including subnets>",
+ " }",
+ " ],",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-network6-list.json b/src/share/api/remote-network6-list.json
new file mode 100644
index 0000000..107ba80
--- /dev/null
+++ b/src/share/api/remote-network6-list.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches a list of all IPv6 shared networks from the configuration database."
+ ],
+ "cmd-comment": [
+ "The ``server-tags`` list is required for this command, and must not be empty. It may either contain one or multiple server tags as strings, or a single ``null`` value."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-network6-list\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-network6-list",
+ "resp-comment": [
+ "The returned response contains the list of maps. Each map contains the shared network name and the metadata, which provides database-specific information associated with the shared network. The returned list does not contain full definitions of the shared networks; use ``remote-network6-get`` to fetch the full information about the selected shared networks. If the command includes explicit server tags as strings (including the special server tag \"all\"), the list contains all shared networks which are associated with any of the specified tags. A network is returned even if it is associated with multiple servers and only one of the specified tags matches. If the command includes the ``null`` value in the ``server-tags`` list, the response contains all shared networks which are assigned to no servers (unassigned)."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 IPv6 shared network(s) found.\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": <first shared network name>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ " },",
+ " {",
+ " \"name\": <second shared network name>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, ... ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-network6-set.json b/src/share/api/remote-network6-set.json
new file mode 100644
index 0000000..a540124
--- /dev/null
+++ b/src/share/api/remote-network6-set.json
@@ -0,0 +1,37 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces an IPv6 shared network in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided list must contain exactly one shared network specification, and must not contain subnets (the \"subnet6\" parameter). The subnets are added to the shared network using the ``remote-subnet6-set`` command. The ``server-tags`` list is mandatory and must contain one or more server tags as strings to explicitly associate the shared network with one or more user-defined servers. It may include the special server tag \"all\" to associate the network with all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-network6-set\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " <shared network specification excluding subnets list>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-network6-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 shared network successfully set.\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option-def4-del.json b/src/share/api/remote-option-def4-del.json
new file mode 100644
index 0000000..9c8efca
--- /dev/null
+++ b/src/share/api/remote-option-def4-del.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a DHCPv4 option definition from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one option definition specification, comprising an option name and code. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option-def4-del\",",
+ " \"arguments\": {",
+ " \"option-defs\": [ {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " } ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option-def4-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv4 option definition(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option-def4-get-all.json b/src/share/api/remote-option-def4-get-all.json
new file mode 100644
index 0000000..df6752d
--- /dev/null
+++ b/src/share/api/remote-option-def4-get-all.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches all DHCPv4 option definitions from the configuration database."
+ ],
+ "cmd-comment": [
+ "The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The special server tag \"all\" is allowed, to fetch the option definitions shared by all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option-def4-get-all\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option-def4-get-all",
+ "resp-comment": [
+ "The returned response contains a list of maps. Each map contains an option definition specification and the metadata, including database-specific information associated with the returned objects. If the server tag \"all\" is included in the command, the response contains the option definitions shared among all servers. It excludes server-specific option definitions. If an explicit server tag is included in the command, the response contains all option definitions directly associated with the given server, and the option definitions associated with all servers when server-specific option definitions are not present."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 DHCPv4 option definition(s) found.\",",
+ " \"arguments\": {",
+ " \"option-defs\": [",
+ " {",
+ " <first option definition>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " },",
+ " {",
+ " <second option definition>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option-def4-get.json b/src/share/api/remote-option-def4-get.json
new file mode 100644
index 0000000..c48fda4
--- /dev/null
+++ b/src/share/api/remote-option-def4-get.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches a DHCPv4 option definition from the configuration database."
+ ],
+ "cmd-comment": [
+ "The desired option definition is identified by the pair of option code/space values. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The server tag \"all\" is allowed, to fetch the option definition instance shared by all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option-def4-get\",",
+ " \"arguments\": {",
+ " \"option-defs\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option-def4-get",
+ "resp-comment": [
+ "The metadata is included and provides database-specific information associated with the returned object. If the \"all\" server tag is specified, the command attempts to fetch the option definition associated with all servers. If the explicit server tag is specified, the command fetches the option definition associated with the given server. If the server-specific option definition does not exist, the ``remote-option-def4-get`` command fetches the option definition associated with all servers."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 option definition found.\",",
+ " \"arguments\": {",
+ " \"option-defs\": [",
+ " {",
+ " <option definition>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option-def4-set.json b/src/share/api/remote-option-def4-set.json
new file mode 100644
index 0000000..78a27e8
--- /dev/null
+++ b/src/share/api/remote-option-def4-set.json
@@ -0,0 +1,37 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces a DHCPv4 option definition in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided list must contain exactly one option definition specification. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The server tag \"all\" is allowed; it associates the specified option definition with all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option-def4-set\",",
+ " \"arguments\": {",
+ " \"option-defs\": [",
+ " {",
+ " <option definition specification>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option-def4-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 option definition set.\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option-def6-del.json b/src/share/api/remote-option-def6-del.json
new file mode 100644
index 0000000..9121c6e
--- /dev/null
+++ b/src/share/api/remote-option-def6-del.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a DHCPv6 option definition from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one option definition specification, comprising an option name and code. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option-def6-del\",",
+ " \"arguments\": {",
+ " \"option-defs\": [ {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " } ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option-def6-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv6 option definition(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option-def6-get-all.json b/src/share/api/remote-option-def6-get-all.json
new file mode 100644
index 0000000..9d64358
--- /dev/null
+++ b/src/share/api/remote-option-def6-get-all.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches all DHCPv6 option definitions from the configuration database."
+ ],
+ "cmd-comment": [
+ "The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The special server tag \"all\" is allowed, to fetch the option definitions shared by all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option-def6-get-all\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option-def6-get-all",
+ "resp-comment": [
+ "The returned response contains a list of maps. Each map contains an option definition specification and the metadata, including database-specific information associated with the returned objects. If the server tag \"all\" is included in the command, the response contains the option definitions shared among all servers. It excludes server-specific option definitions. If an explicit server tag is included in the command, the response contains all option definitions directly associated with the given server, and the option definitions associated with all servers when server-specific option definitions are not present."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 DHCPv6 option definition(s) found.\",",
+ " \"arguments\": {",
+ " \"option-defs\": [",
+ " {",
+ " <first option definition>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " },",
+ " {",
+ " <second option definition>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option-def6-get.json b/src/share/api/remote-option-def6-get.json
new file mode 100644
index 0000000..f7c5895
--- /dev/null
+++ b/src/share/api/remote-option-def6-get.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches a DHCPv6 option definition from the configuration database."
+ ],
+ "cmd-comment": [
+ "The desired option definition is identified by the pair of option code/space values. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The server tag \"all\" is allowed, to fetch the option definition instance shared by all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option-def6-get\",",
+ " \"arguments\": {",
+ " \"option-defs\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option-def6-get",
+ "resp-comment": [
+ "The metadata is included and provides database-specific information associated with the returned object. If the \"all\" server tag is specified, the command fetches the option definition associated with all servers. If the explicit server tag is specified, the command fetches the option definition associated with the given server. If the server-specific option definition does not exist, the ``remote-option-def6-get`` command fetches the option definition associated with all servers."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 option definition found.\",",
+ " \"arguments\": {",
+ " \"option-defs\": [",
+ " {",
+ " <option definition>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option-def6-set.json b/src/share/api/remote-option-def6-set.json
new file mode 100644
index 0000000..1a32e82
--- /dev/null
+++ b/src/share/api/remote-option-def6-set.json
@@ -0,0 +1,37 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces a DHCPv6 option definition in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided list must contain exactly one option definition specification. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The server tag \"all\" is allowed; it associates the specified option definition with all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option-def6-set\",",
+ " \"arguments\": {",
+ " \"option-defs\": [",
+ " {",
+ " <option definition specification>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option-def6-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 option definition set.\"",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option4-global-del.json b/src/share/api/remote-option4-global-del.json
new file mode 100644
index 0000000..15b88db
--- /dev/null
+++ b/src/share/api/remote-option4-global-del.json
@@ -0,0 +1,41 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a DHCPv4 global option from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one option specification, comprising an option name and code. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option4-global-del\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option4-global-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv4 option(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option4-global-get-all.json b/src/share/api/remote-option4-global-get-all.json
new file mode 100644
index 0000000..d64ff31
--- /dev/null
+++ b/src/share/api/remote-option4-global-get-all.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches all DHCPv4 global options for the server from the configuration database."
+ ],
+ "cmd-comment": [
+ "The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The special server tag \"all\" is allowed, to fetch the global options shared by all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option4-global-get-all\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option4-global-get-all",
+ "resp-comment": [
+ "The returned response contains a list of maps. Each map contains a global option specification and the metadata, including database-specific information associated with the returned object. If the server tag \"all\" is included in the command, the response contains the global options shared among all servers. It excludes server-specific global options. If an explicit server tag is included in the command, the response contains all global options directly associated with the given server, and the options associated with all servers when server-specific options are not present."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 DHCPv4 option(s) found.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " <first option specification>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " },",
+ " {",
+ " <second option specification>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option4-global-get.json b/src/share/api/remote-option4-global-get.json
new file mode 100644
index 0000000..f6a11bf
--- /dev/null
+++ b/src/share/api/remote-option4-global-get.json
@@ -0,0 +1,51 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches a global DHCPv4 option for the server from the specified database."
+ ],
+ "cmd-comment": [
+ "The option is identified by the pair of option code/space values. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The server tag \"all\" is allowed, to fetch the global option instance shared by all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option4-global-get\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option4-global-get",
+ "resp-comment": [
+ "The metadata is included and provides database specific information associated with the returned object. If the \"all\" server tag is specified, the command fetches the global option associated with all servers. If the explicit server tag is specified, the command fetches the global option associated with the given server. If the server specific option does not exist, it fetches the option associated with all servers."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 option is found.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " <option information>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option4-global-set.json b/src/share/api/remote-option4-global-set.json
new file mode 100644
index 0000000..32c1611
--- /dev/null
+++ b/src/share/api/remote-option4-global-set.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces a DHCPv4 global option in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided list must contain exactly one option specification. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The server tag \"all\" is allowed; it associates the specified option with all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option4-global-set\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " <global option specification>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option4-global-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 option set.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option4-network-del.json b/src/share/api/remote-option4-network-del.json
new file mode 100644
index 0000000..6ba9f99
--- /dev/null
+++ b/src/share/api/remote-option4-network-del.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a DHCPv4 option from a shared network from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes two lists with exactly one name of the shared network and exactly one option specification, comprising an option name and code. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option4-network-del\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": <shared network name>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option4-network-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv4 option(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option4-network-set.json b/src/share/api/remote-option4-network-set.json
new file mode 100644
index 0000000..ad9cc06
--- /dev/null
+++ b/src/share/api/remote-option4-network-set.json
@@ -0,0 +1,49 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces a DHCPv4 option in a shared network in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided lists must contain exactly one name of the shared network and one option specification. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option4-network-set\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": <shared network name>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " <shared network option specification>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option4-network-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 option successfully set.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option4-pool-del.json b/src/share/api/remote-option4-pool-del.json
new file mode 100644
index 0000000..b54ec2b
--- /dev/null
+++ b/src/share/api/remote-option4-pool-del.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a DHCPv4 option from an address pool from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes two lists with exactly one address pool specification and exactly one option specification comprising an option space name and code. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option4-pool-del\",",
+ " \"arguments\": {",
+ " \"pools\": [",
+ " {",
+ " \"pool\": <pool range or prefix>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option4-pool-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv4 option(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option4-pool-set.json b/src/share/api/remote-option4-pool-set.json
new file mode 100644
index 0000000..6567141
--- /dev/null
+++ b/src/share/api/remote-option4-pool-set.json
@@ -0,0 +1,49 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces a DHCPv4 option in an address pool in the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes two lists with exactly address pool specification and exactly one option specification. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option4-pool-set\",",
+ " \"arguments\": {",
+ " \"pools\": [",
+ " {",
+ " \"pool\": <pool range or prefix>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " <address pool option specification>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option4-pool-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 option successfully set.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option4-subnet-del.json b/src/share/api/remote-option4-subnet-del.json
new file mode 100644
index 0000000..c43fff8
--- /dev/null
+++ b/src/share/api/remote-option4-subnet-del.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a DHCPv4 option from a subnet from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes two lists with exactly one ID of the subnet and exactly one option specification, comprising an option name and code. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option4-subnet-del\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <subnet identifier>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option4-subnet-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv4 option(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option4-subnet-set.json b/src/share/api/remote-option4-subnet-set.json
new file mode 100644
index 0000000..e332f72
--- /dev/null
+++ b/src/share/api/remote-option4-subnet-set.json
@@ -0,0 +1,49 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces a DHCPv4 option in a subnet in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided lists must contain exactly one ID of the subnet and one option specification. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option4-subnet-set\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <subnet identifier>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " <subnet option specification>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option4-subnet-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 option successfully set.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-option6-global-del.json b/src/share/api/remote-option6-global-del.json
new file mode 100644
index 0000000..e5c3a35
--- /dev/null
+++ b/src/share/api/remote-option6-global-del.json
@@ -0,0 +1,41 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a DHCPv6 global option from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one option specification, comprising an option name and code. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option6-global-del\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option6-global-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv6 option(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option6-global-get-all.json b/src/share/api/remote-option6-global-get-all.json
new file mode 100644
index 0000000..616354d
--- /dev/null
+++ b/src/share/api/remote-option6-global-get-all.json
@@ -0,0 +1,52 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches all DHCPv6 global options for the server from the configuration database."
+ ],
+ "cmd-comment": [
+ "The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The special server tag \"all\" is allowed, to fetch the global options shared by all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option6-global-get-all\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option6-global-get-all",
+ "resp-comment": [
+ "The returned response contains a list of maps. Each map contains a global option specification and the metadata, including database-specific information associated with the returned object. If the server tag \"all\" is included in the command, the response contains the global options shared between all servers. It excludes server-specific global options. If an explicit server tag is included in the command, the response contains all global options directly associated with the given server, and the options associated with all servers when server-specific options are not present."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 DHCPv6 option(s) found.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " <first option specification>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " },",
+ " {",
+ " <second option specification>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option6-global-get.json b/src/share/api/remote-option6-global-get.json
new file mode 100644
index 0000000..487c3de
--- /dev/null
+++ b/src/share/api/remote-option6-global-get.json
@@ -0,0 +1,51 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches a global DHCPv6 option for the server from the specified database."
+ ],
+ "cmd-comment": [
+ "The option is identified by the pair of option code/space values. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The server tag \"all\" is allowed, to fetch the global option instance shared by all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option6-global-get\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option6-global-get",
+ "resp-comment": [
+ "The metadata is included and provides database-specific information associated with the returned object. If the \"all\" server tag is specified, the command attempts to fetch the global option associated with all servers. If the explicit server tag is specified, the command will fetch the global option associated with the given server. If the server-specific option does not exist, it fetches the option associated with all servers."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 option is found.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " <option information>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <server tag> ]",
+ " }",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option6-global-set.json b/src/share/api/remote-option6-global-set.json
new file mode 100644
index 0000000..2727403
--- /dev/null
+++ b/src/share/api/remote-option6-global-set.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces a DHCPv6 global option in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided list must contain exactly one option specification. The ``server-tags`` list is mandatory and must contain exactly one server tag. Specifying an empty list, a value of ``null``, or multiple server tags will result in an error. The server tag \"all\" is allowed; it associates the specified option with all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option6-global-set\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " <global option specification>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <single server tag as string> ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option6-global-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 option set.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option6-network-del.json b/src/share/api/remote-option6-network-del.json
new file mode 100644
index 0000000..6a81929
--- /dev/null
+++ b/src/share/api/remote-option6-network-del.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a DHCPv6 option from a shared network from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes two lists with exactly one name of the shared network and exactly one option specification, comprising an option name and code. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option6-network-del\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": <shared network name>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option6-network-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv6 option(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option6-network-set.json b/src/share/api/remote-option6-network-set.json
new file mode 100644
index 0000000..ab989b3
--- /dev/null
+++ b/src/share/api/remote-option6-network-set.json
@@ -0,0 +1,49 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces a DHCPv6 option in a shared network in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided lists must contain exactly one name of the shared network and one option specification. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option6-network-set\",",
+ " \"arguments\": {",
+ " \"shared-networks\": [",
+ " {",
+ " \"name\": <shared network name>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " <shared network option specification>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option6-network-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 option successfully set.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option6-pd-pool-del.json b/src/share/api/remote-option6-pd-pool-del.json
new file mode 100644
index 0000000..f0d2be1
--- /dev/null
+++ b/src/share/api/remote-option6-pd-pool-del.json
@@ -0,0 +1,46 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a DHCPv6 option from a prefix delegation pool from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes two lists with exactly one prefix delegation pool specification and exactly one option specification, comprising an option name and code. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option6-pd-pool-del\",",
+ " \"arguments\": {",
+ " \"pd-pools\": [",
+ " {",
+ " \"prefix\": <pool prefix (address part)>,",
+ " \"prefix-len\": <pool prefix (length part)>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option6-pd-pool-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv6 option(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option6-pd-pool-set.json b/src/share/api/remote-option6-pd-pool-set.json
new file mode 100644
index 0000000..17d752e
--- /dev/null
+++ b/src/share/api/remote-option6-pd-pool-set.json
@@ -0,0 +1,50 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces a DHCPv6 option in a prefix delegation pool in the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes two lists with exactly one prefix delegation pool specification and exactly one option specification. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option6-pd-pool-set\",",
+ " \"arguments\": {",
+ " \"pd-pools\": [",
+ " {",
+ " \"prefix\": <pool prefix (address part)>,",
+ " \"prefix-len\": <pool prefix (length part)>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " <prefix delegation pool option specification>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option6-pd-pool-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 option successfully set.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option6-pool-del.json b/src/share/api/remote-option6-pool-del.json
new file mode 100644
index 0000000..1fafd83
--- /dev/null
+++ b/src/share/api/remote-option6-pool-del.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a DHCPv6 option from an address pool from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes two lists with exactly one address pool specification and exactly one option specification, comprising an option name and code. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option6-pool-del\",",
+ " \"arguments\": {",
+ " \"pools\": [",
+ " {",
+ " \"pool\": <pool range or prefix>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option6-pool-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv6 option(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option6-pool-set.json b/src/share/api/remote-option6-pool-set.json
new file mode 100644
index 0000000..ae45e3e
--- /dev/null
+++ b/src/share/api/remote-option6-pool-set.json
@@ -0,0 +1,49 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces a DHCPv6 option in an address pool in the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes two lists with exactly address pool specification and exactly one option specification. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option6-pool-set\",",
+ " \"arguments\": {",
+ " \"pools\": [",
+ " {",
+ " \"pool\": <pool range or prefix>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " <address pool option specification>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option6-pool-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 option successfully set.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option6-subnet-del.json b/src/share/api/remote-option6-subnet-del.json
new file mode 100644
index 0000000..ff24ed3
--- /dev/null
+++ b/src/share/api/remote-option6-subnet-del.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes a DHCPv6 option from a subnet from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes two lists with exactly one ID of the subnet and exactly one option specification, comprising an option name and code. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option6-subnet-del\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <subnet identifier>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option6-subnet-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv6 option(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-option6-subnet-set.json b/src/share/api/remote-option6-subnet-set.json
new file mode 100644
index 0000000..d0097d6
--- /dev/null
+++ b/src/share/api/remote-option6-subnet-set.json
@@ -0,0 +1,49 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces a DHCPv6 option in a subnet in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided lists must contain exactly one ID of the subnet and one option specification. Specifying an empty list, a value of ``null``, or a server tag will result in an error."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-option6-subnet-set\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <subnet identifier>",
+ " }",
+ " ],",
+ " \"options\": [",
+ " {",
+ " <subnet option specification>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-option6-subnet-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 option successfully set.\",",
+ " \"arguments\": {",
+ " \"options\": [",
+ " {",
+ " \"code\": <option code>,",
+ " \"space\": <option space>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-server4-del.json b/src/share/api/remote-server4-del.json
new file mode 100644
index 0000000..4f7718c
--- /dev/null
+++ b/src/share/api/remote-server4-del.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes information about a DHCPv4 server from the configuration database. Any configuration explicitly associated with the deleted server is automatically disassociated. In addition, configuration elements not shareable with other servers (e.g. global DHCP parameters) are deleted. Shareable configuration elements (e.g. subnets, shared networks) are not deleted as they may be used by other servers."
+ ],
+ "cmd-comment": [
+ "This command carries the list including exactly one map with the tag of the server to be deleted."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-server4-del\",",
+ " \"arguments\": {",
+ " \"servers\": [",
+ " {",
+ " \"server-tag\": <server name>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-server4-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv4 server(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-server4-get-all.json b/src/share/api/remote-server4-get-all.json
new file mode 100644
index 0000000..5555752
--- /dev/null
+++ b/src/share/api/remote-server4-get-all.json
@@ -0,0 +1,47 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches information about all DHCPv4 servers specified by the user."
+ ],
+ "cmd-comment": [
+ "This command contains no arguments besides the optional ``remote``."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-server4-get-all\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-server4-get-all",
+ "resp-comment": [
+ "The returned response contain a list of maps. Each map contains a server tag uniquely identifying a server, and the user-defined description of the server. The Kea Configuration Backend uses the keyword ``all`` to associate parts of the configuration with all servers. Internally, it creates the logical server ``all`` for this purpose. However, this logical server is not returned as a result of the ``remote-server4-get-all`` command; only the user-defined servers are returned."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 servers found.\",",
+ " \"arguments\": {",
+ " \"servers\": [",
+ " {",
+ " \"server-tag\": <first server tag>,",
+ " \"description\": <first server description>",
+ " },",
+ " {",
+ " \"server-tag\": <second server tag>,",
+ " \"description\": <second server description>",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-server4-get.json b/src/share/api/remote-server4-get.json
new file mode 100644
index 0000000..c648606
--- /dev/null
+++ b/src/share/api/remote-server4-get.json
@@ -0,0 +1,48 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches information about the DHCPv4 server, such as the server tag and description."
+ ],
+ "cmd-comment": [
+ "This command carries the list including exactly one map with the tag of the server to be fetched."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-server4-get\",",
+ " \"arguments\": {",
+ " \"servers\": [",
+ " {",
+ " \"server-tag\": <server tag>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-server4-get",
+ "resp-comment": [
+ "The server tag is the unique identifier of the server, used to associate the configuration elements in the database with the particular server instance. The returned server description is specified by the user when setting the server information."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCP server 'server tag' found.\",",
+ " \"arguments\": {",
+ " \"servers\": [",
+ " {",
+ " \"server-tag\": <server tag>,",
+ " \"description\": <server description>",
+ " }",
+ " ],",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-server4-set.json b/src/share/api/remote-server4-set.json
new file mode 100644
index 0000000..b63e389
--- /dev/null
+++ b/src/share/api/remote-server4-set.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces information about the DHCPv4 server in the database."
+ ],
+ "cmd-comment": [
+ "The provided list must contain exactly one server specification. The ``server-tag`` must be unique across all servers within the configuration database. The ``description`` is the arbitrary text describing the server, its location within the network, etc."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-server4-set\",",
+ " \"arguments\": {",
+ " \"servers\": [",
+ " {",
+ " \"server-tag\": <server tag>,",
+ " \"description\": <server description>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-server4-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv4 server successfully set.\",",
+ " \"arguments\": {",
+ " \"servers\": [",
+ " {",
+ " \"server-tag\": <server tag>,",
+ " \"description\": <server description>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-server6-del.json b/src/share/api/remote-server6-del.json
new file mode 100644
index 0000000..5ca04c2
--- /dev/null
+++ b/src/share/api/remote-server6-del.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes information about a DHCPv6 server from the configuration database. Any configuration explicitly associated with the deleted server is automatically disassociated. In addition, configuration elements not shareable with other servers (e.g. global DHCP parameters) are deleted. Shareable configuration elements (e.g. subnets, shared networks) are not deleted as they may be used by other servers."
+ ],
+ "cmd-comment": [
+ "This command carries the list including exactly one map with the tag of the server to be deleted."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-server6-del\",",
+ " \"arguments\": {",
+ " \"servers\": [",
+ " {",
+ " \"server-tag\": <server name>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-server6-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 DHCPv6 server(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-server6-get-all.json b/src/share/api/remote-server6-get-all.json
new file mode 100644
index 0000000..ab12139
--- /dev/null
+++ b/src/share/api/remote-server6-get-all.json
@@ -0,0 +1,47 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches information about all DHCPv6 servers specified by the user."
+ ],
+ "cmd-comment": [
+ "This command contains no arguments besides the optional ``remote``."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-server6-get-all\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-server6-get-all",
+ "resp-comment": [
+ "The returned response contain a list of maps. Each map contains a server tag uniquely identifying a server, and the user-defined description of the server. The Kea Configuration Backend uses the keyword ``all`` to associate parts of the configuration with all servers. Internally, it creates the logical server ``all`` for this purpose. However, this logical server is not returned as a result of the ``remote-server6-get-all`` command; only the user-defined servers are returned."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 servers found.\",",
+ " \"arguments\": {",
+ " \"servers\": [",
+ " {",
+ " \"server-tag\": <first server tag>,",
+ " \"description\": <first server description>",
+ " },",
+ " {",
+ " \"server-tag\": <second server tag>,",
+ " \"description\": <second server description>",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-server6-get.json b/src/share/api/remote-server6-get.json
new file mode 100644
index 0000000..1acbfd4
--- /dev/null
+++ b/src/share/api/remote-server6-get.json
@@ -0,0 +1,48 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches information about the DHCPv6 server, such as the server tag and description."
+ ],
+ "cmd-comment": [
+ "This command carries the list including exactly one map with the tag of the server to be fetched."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-server6-get\",",
+ " \"arguments\": {",
+ " \"servers\": [",
+ " {",
+ " \"server-tag\": <server tag>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-server6-get",
+ "resp-comment": [
+ "The server tag is the unique identifier of the server, used to associate the configuration elements in the database with the particular server instance. The returned server description is specified by the user when setting the server information."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCP server 'server tag' found.\",",
+ " \"arguments\": {",
+ " \"servers\": [",
+ " {",
+ " \"server-tag\": <server tag>,",
+ " \"description\": <server description>",
+ " }",
+ " ],",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-server6-set.json b/src/share/api/remote-server6-set.json
new file mode 100644
index 0000000..211a4dc
--- /dev/null
+++ b/src/share/api/remote-server6-set.json
@@ -0,0 +1,45 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces information about the DHCPv6 server in the database."
+ ],
+ "cmd-comment": [
+ "The provided list must contain exactly one server specification. The ``server-tag`` must be unique across all servers within the configuration database. The ``description`` is the arbitrary text describing the server, its location within the network, etc."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-server6-set\",",
+ " \"arguments\": {",
+ " \"servers\": [",
+ " {",
+ " \"server-tag\": <server tag>,",
+ " \"description\": <server description>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-server6-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"DHCPv6 server successfully set.\",",
+ " \"arguments\": {",
+ " \"servers\": [",
+ " {",
+ " \"server-tag\": <server tag>,",
+ " \"description\": <server description>",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-subnet4-del-by-id.json b/src/share/api/remote-subnet4-del-by-id.json
new file mode 100644
index 0000000..4ccf7f8
--- /dev/null
+++ b/src/share/api/remote-subnet4-del-by-id.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes an IPv4 subnet by ID from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one ID of the subnet to be deleted. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-subnet4-del-by-id\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <subnet identifier>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-subnet4-del-by-id",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv4 subnet(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-subnet4-del-by-prefix.json b/src/share/api/remote-subnet4-del-by-prefix.json
new file mode 100644
index 0000000..7d7b1a3
--- /dev/null
+++ b/src/share/api/remote-subnet4-del-by-prefix.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes an IPv4 subnet by prefix from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one prefix of the subnet to be deleted. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-subnet4-del-by-prefix\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"subnet\": <subnet prefix>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-subnet4-del-by-prefix",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv4 subnet(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-subnet4-get-by-id.json b/src/share/api/remote-subnet4-get-by-id.json
new file mode 100644
index 0000000..e23bbe1
--- /dev/null
+++ b/src/share/api/remote-subnet4-get-by-id.json
@@ -0,0 +1,49 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches the selected IPv4 subnet by ID from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one ID of the subnet to be returned. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-subnet4-get-by-id\",",
+ " \"arguments\": {",
+ " \"subnets\": [ {",
+ " \"id\": <subnet identifier>",
+ " } ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-subnet4-get-by-id",
+ "resp-comment": [
+ "If the shared network name is null, it means that the returned subnet does not belong to any shared network (a global subnet). The metadata is included in the returned subnet definition and provides database-specific information associated with the returned object."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 subnet found.\",",
+ " \"arguments\": {",
+ " \"subnets\": [ {",
+ " \"id\": <subnet identifier>,",
+ " \"subnet\": <subnet prefix>,",
+ " \"shared-network-name\": <shared network name or null>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " },",
+ " <the rest of the subnet specification here>",
+ " } ],",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-subnet4-get-by-prefix.json b/src/share/api/remote-subnet4-get-by-prefix.json
new file mode 100644
index 0000000..d973412
--- /dev/null
+++ b/src/share/api/remote-subnet4-get-by-prefix.json
@@ -0,0 +1,51 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches the selected IPv4 subnet by prefix from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one prefix of the subnet to be returned. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-subnet4-get-by-prefix\",",
+ " \"arguments\": {",
+ " \"subnets\": [ {",
+ " \"subnet\": <subnet prefix>",
+ " } ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-subnet4-get-by-prefix",
+ "resp-comment": [
+ "If the shared network name is null, it means that the returned subnet does not belong to any shared network (global subnet). The metadata is included in the returned subnet definition and provides database-specific information associated with the returned object."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 subnet found.\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <subnet identifier>,",
+ " \"subnet\": <subnet prefix>,",
+ " \"shared-network-name\": <shared network name or null>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " },",
+ " <the rest of the subnet specification here>",
+ " }",
+ " ],",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-subnet4-list.json b/src/share/api/remote-subnet4-list.json
new file mode 100644
index 0000000..d4f6902
--- /dev/null
+++ b/src/share/api/remote-subnet4-list.json
@@ -0,0 +1,56 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches a list of all IPv4 subnets from the configuration database."
+ ],
+ "cmd-comment": [
+ "The ``server-tags`` list is required for this command, and must not be empty. It may either contain one or multiple server tags as strings, or a single ``null`` value."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-subnet4-list\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-subnet4-list",
+ "resp-comment": [
+ "The returned response contains a list of maps. Each map contains a subnet identifier, prefix, and shared network name to which the subnet belongs. If the subnet does not belong to a shared network, the name is null. The metadata includes database-specific information associated with the subnets. The returned list does not contain full subnet definitions; use ``remote-subnet4-get`` to fetch the full information about the selected subnets. If the command includes explicit server tags as strings (including the special server tag \"all\"), the list contains all subnets which are associated with any of the specified tags. A subnet is returned even if it is associated with multiple servers and only one of the specified tags matches. If the command includes the ``null`` value in the ``server-tags`` list, the response contains all subnets which are assigned to no servers (unassigned)."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 IPv4 subnets found.\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <first subnet identifier>,",
+ " \"subnet\": <first subnet prefix>,",
+ " \"shared-network-name\": <shared network name or null>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ " },",
+ " {",
+ " \"id\": <second subnet identifier>,",
+ " \"subnet\": <second subnet prefix>,",
+ " \"shared-network-name\": <shared network name or null>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, ... ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-subnet4-set.json b/src/share/api/remote-subnet4-set.json
new file mode 100644
index 0000000..772e13e
--- /dev/null
+++ b/src/share/api/remote-subnet4-set.json
@@ -0,0 +1,44 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces an IPv4 subnet in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided list must contain exactly one subnet specification. The ``shared-network-name`` parameter is required for these commands; it associates the subnet with the shared network by its name. If the subnet must not belong to any shared network (a global subnet), the ``null`` value must be specified for the shared network name. The ``server-tags`` list is mandatory and must contain one or more server tags as strings to explicitly associate the subnet with one or more user-defined servers. The ``remote-subnet4-set`` command may include the special server tag \"all\" to associate the subnet with all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-subnet4-set\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <subnet identifier>,",
+ " \"subnet\": <subnet prefix>,",
+ " \"shared-network-name\": <shared network name or null>,",
+ " <the rest of the subnet specification here>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-subnet4-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 subnet successfully set.\",",
+ " \"arguments\": {",
+ " \"id\": <subnet identifier>,",
+ " \"subnet\": <subnet prefix>",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/remote-subnet6-del-by-id.json b/src/share/api/remote-subnet6-del-by-id.json
new file mode 100644
index 0000000..291cdfd
--- /dev/null
+++ b/src/share/api/remote-subnet6-del-by-id.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes an IPv6 subnet by ID from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one ID of the subnet to be deleted. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-subnet6-del-by-id\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <subnet identifier>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-subnet6-del-by-id",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv6 subnet(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-subnet6-del-by-prefix.json b/src/share/api/remote-subnet6-del-by-prefix.json
new file mode 100644
index 0000000..5dff846
--- /dev/null
+++ b/src/share/api/remote-subnet6-del-by-prefix.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command deletes an IPv6 subnet by prefix from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one prefix of the subnet to be deleted. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-subnet6-del-by-prefix\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"subnet\": <subnet prefix>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-subnet6-del-by-prefix",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"1 IPv6 subnet(s) deleted.\",",
+ " \"arguments\": {",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-subnet6-get-by-id.json b/src/share/api/remote-subnet6-get-by-id.json
new file mode 100644
index 0000000..b1dd25f
--- /dev/null
+++ b/src/share/api/remote-subnet6-get-by-id.json
@@ -0,0 +1,53 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches the selected IPv6 subnet by ID from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one ID of the subnet to be returned. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-subnet6-get-by-id\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <subnet identifier>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-subnet6-get-by-id",
+ "resp-comment": [
+ "If the shared network name is null, it means that the returned subnet does not belong to any shared network (a global subnet). The metadata is included in the returned subnet definition and provides database-specific information associated with the returned object."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 subnet found.\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <subnet identifier>,",
+ " \"subnet\": <subnet prefix>,",
+ " \"shared-network-name\": <shared network name or null>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " },",
+ " <the rest of the subnet specification here>",
+ " }",
+ " ],",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-subnet6-get-by-prefix.json b/src/share/api/remote-subnet6-get-by-prefix.json
new file mode 100644
index 0000000..249f9bb
--- /dev/null
+++ b/src/share/api/remote-subnet6-get-by-prefix.json
@@ -0,0 +1,51 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches the selected IPv6 subnet by prefix from the configuration database."
+ ],
+ "cmd-comment": [
+ "This command includes a list with exactly one prefix of the subnet to be returned. The ``server-tags`` parameter must not be specified for this command."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-subnet6-get-by-prefix\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"subnet\": <subnet prefix>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " }",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-subnet6-get-by-prefix",
+ "resp-comment": [
+ "If the shared network name is null, it means that the returned subnet does not belong to any shared network (global subnet). The metadata is included in the returned subnet definition and provides database-specific information associated with the returned object."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 subnet found.\",",
+ " \"arguments\": {",
+ " \"subnets\": [ {",
+ " \"id\": <subnet identifier>,",
+ " \"subnet\": <subnet prefix>,",
+ " \"shared-network-name\": <shared network name or null>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " },",
+ " <the rest of the subnet specification here>",
+ " } ],",
+ " \"count\": 1",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-subnet6-list.json b/src/share/api/remote-subnet6-list.json
new file mode 100644
index 0000000..72318ec
--- /dev/null
+++ b/src/share/api/remote-subnet6-list.json
@@ -0,0 +1,56 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command fetches a list of all IPv6 subnets from the configuration database."
+ ],
+ "cmd-comment": [
+ "The ``server-tags`` list is required for this command, and must not be empty. It may either contain one or multiple server tags as strings, or a single ``null`` value."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-subnet6-list\",",
+ " \"arguments\": {",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-subnet6-list",
+ "resp-comment": [
+ "The returned response contains a list of maps. Each map contains a subnet identifier, prefix, and shared network name to which the subnet belongs. If the subnet does not belong to a shared network, the name is null. The metadata includes database-specific information associated with the subnets. The returned list does not contain full subnet definitions; use ``remote-subnet6-get`` to fetch the full information about the selected subnets. If the command includes explicit server tags as strings (including the special server tag \"all\"), the list contains all subnets which are associated with any of the specified tags. A subnet is returned even if it is associated with multiple servers and only one of the specified tags matches. If the command includes the ``null`` value in the ``server-tags`` list, the response contains all subnets which are assigned to no servers (unassigned)."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 IPv6 subnets found.\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <first subnet identifier>,",
+ " \"subnet\": <first subnet prefix>,",
+ " \"shared-network-name\": <shared network name or null>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ " },",
+ " {",
+ " \"id\": <second subnet identifier>,",
+ " \"subnet\": <second subnet prefix>,",
+ " \"shared-network-name\": <shared network name or null>,",
+ " \"metadata\": {",
+ " \"server-tags\": [ <first server tag>, ... ]",
+ " }",
+ " }",
+ " ],",
+ " \"count\": 2",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/remote-subnet6-set.json b/src/share/api/remote-subnet6-set.json
new file mode 100644
index 0000000..a746926
--- /dev/null
+++ b/src/share/api/remote-subnet6-set.json
@@ -0,0 +1,44 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command creates or replaces an IPv6 subnet in the configuration database."
+ ],
+ "cmd-comment": [
+ "The provided list must contain exactly one subnet specification. The ``shared-network-name`` parameter is required for these commands; it associates the subnet with the shared network by its name. If the subnet must not belong to any shared network (a global subnet), the ``null`` value must be specified for the shared network name. The ``server-tags`` list is mandatory and must contain one or more server tags as strings to explicitly associate the subnet with one or more user-defined servers. The ``remote-subnet6-set`` command may include the special server tag \"all\" to associate the subnet with all servers."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"remote-subnet6-set\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": <subnet identifier>,",
+ " \"subnet\": <subnet prefix>,",
+ " \"shared-network-name\": <shared network name or null>,",
+ " <the rest of the subnet specification here>",
+ " }",
+ " ],",
+ " \"remote\": {",
+ " <specification of the database to connect to>",
+ " },",
+ " \"server-tags\": [ <first server tag>, <second server tag>, ... ]",
+ " }",
+ "}"
+ ],
+ "hook": "cb_cmds",
+ "name": "remote-subnet6-set",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 subnet successfully set.\",",
+ " \"arguments\": {",
+ " \"id\": <subnet identifier>,",
+ " \"subnet\": <subnet prefix>",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/reservation-add.json b/src/share/api/reservation-add.json
new file mode 100644
index 0000000..6e9259e
--- /dev/null
+++ b/src/share/api/reservation-add.json
@@ -0,0 +1,50 @@
+{
+ "access": "write",
+ "avail": "1.2.0",
+ "brief": [
+ "This command adds a new host reservation. The reservation may include IPv4 addresses, IPv6 addresses, IPv6 prefixes, various identifiers, a class the client will be assigned to, DHCPv4 and DHCPv6 options, and more."
+ ],
+ "cmd-comment": [
+ "Note that boot-file-name, circuit-id, client-id, ip-address, next-server, and server-hostname are IPv4-specific. ip-addresses, and prefixes are IPv6-specific. Operation-target is optional; default is 'alternate'."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"reservation-add\",",
+ " \"arguments\": {",
+ " \"reservation\": {",
+ " \"boot-file-name\": <string>,",
+ " \"client-id\": <string>,",
+ " \"circuit-id\": <string>,",
+ " \"duid\": <string>,",
+ " \"flex-id\": <string>,",
+ " \"ip-address\": <string (IPv4 address)>,",
+ " \"ip-addresses\": [ <comma-separated strings> ],",
+ " \"hw-address\": <string>,",
+ " \"hostname\": <string>,",
+ " \"next-server\": <string (IPv4 address)>,",
+ " \"option-data\": [ <comma-separated structures defining options> ],",
+ " \"prefixes\": [ <comma-separated IPv6 prefixes> ],",
+ " \"client-classes\": [ <comma-separated strings> ],",
+ " \"server-hostname\": <string>,",
+ " \"subnet-id\": <integer>,",
+ " \"user-context\": <any valid JSON>",
+ " },",
+ " \"operation-target\": <string (memory, database, all, default)>",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"cmd-reservation-add\"/>",
+ "hook": "host_cmds",
+ "name": "reservation-add",
+ "resp-syntax": [
+ "",
+ "{",
+ " \"result\": <integer>,",
+ " \"text\": <string>",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/reservation-del.json b/src/share/api/reservation-del.json
new file mode 100644
index 0000000..5f840c7
--- /dev/null
+++ b/src/share/api/reservation-del.json
@@ -0,0 +1,28 @@
+{
+ "access": "write",
+ "avail": "1.2.0",
+ "brief": [
+ "This command deletes an existing host reservation."
+ ],
+ "cmd-comment": [
+ "The host reservation can be identified by either the (subnet-id, ip-address) pair or a triplet of (subnet-id, identifier-type, identifier). Operation-target is optional; default is 'alternate'."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"reservation-del\",",
+ " \"arguments\": {",
+ " \"subnet-id\": <integer>,",
+ " \"ip-address\": <string>,",
+ " \"identifier-type\": <one of 'hw-address', 'duid', 'circuit-id', 'client-id' and 'flex-id'>,",
+ " \"identifier\": <string>,",
+ " \"operation-target\": <string (memory, database, all, default)>",
+ " }",
+ "}"
+ ],
+ "hook": "host_cmds",
+ "name": "reservation-del",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/reservation-get-all.json b/src/share/api/reservation-get-all.json
new file mode 100644
index 0000000..c95d5c4
--- /dev/null
+++ b/src/share/api/reservation-get-all.json
@@ -0,0 +1,28 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command retrieves all host reservations for a specified subnet."
+ ],
+ "cmd-comment": [
+ "Operation-target is optional; default is 'all'."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"reservation-get-all\",",
+ " \"arguments\": {",
+ " \"subnet-id\": <integer>,",
+ " \"operation-target\": <string (memory, database, all, default)>",
+ " }",
+ "}"
+ ],
+ "hook": "host_cmds",
+ "name": "reservation-get-all",
+ "resp-comment": [
+ "The reservation-get-all command may result in very large responses."
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/reservation-get-by-address.json b/src/share/api/reservation-get-by-address.json
new file mode 100644
index 0000000..c7ee556
--- /dev/null
+++ b/src/share/api/reservation-get-by-address.json
@@ -0,0 +1,29 @@
+{
+ "access": "read",
+ "avail": "2.4.0",
+ "brief": [
+ "This command retrieves all host reservations for given ip-address and optionally a specified subnet."
+ ],
+ "cmd-comment": [
+ "The host reservations can be identified by a pair of 'ip-address' and 'subnet-id'. 'subnet-id' is optional. 'operation-target' is optional; default is 'all'."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"reservation-get-by-address\",",
+ " \"arguments\": {",
+ " \"ip-address\": <string>,",
+ " \"subnet-id\": <integer>,",
+ " \"operation-target\": <string (memory, database, all, default)>",
+ " }",
+ "}"
+ ],
+ "hook": "host_cmds",
+ "name": "reservation-get-by-address",
+ "resp-comment": [
+ "The reservation-get-by-address may return many reservations for the same ip-address. This command may be useful in case ip-reservations-unique configuration flag is set to false."
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/reservation-get-by-hostname.json b/src/share/api/reservation-get-by-hostname.json
new file mode 100644
index 0000000..f1f7aa3
--- /dev/null
+++ b/src/share/api/reservation-get-by-hostname.json
@@ -0,0 +1,29 @@
+{
+ "access": "read",
+ "avail": "1.7.1",
+ "brief": [
+ "This command retrieves all host reservations for a specified hostname and optionally a specified subnet."
+ ],
+ "cmd-comment": [
+ "Operation-target is optional; default is 'all'."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"reservation-get-by-hostname\",",
+ " \"arguments\": {",
+ " \"hostname\": <hostname>,",
+ " \"subnet-id\": <integer>,",
+ " \"operation-target\": <string (memory, database, all, default)>",
+ " }",
+ "}"
+ ],
+ "hook": "host_cmds",
+ "name": "reservation-get-by-hostname",
+ "resp-comment": [
+ "The reservation-get-by-hostname command may result in large responses."
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/reservation-get-by-id.json b/src/share/api/reservation-get-by-id.json
new file mode 100644
index 0000000..75e650e
--- /dev/null
+++ b/src/share/api/reservation-get-by-id.json
@@ -0,0 +1,29 @@
+{
+ "access": "read",
+ "avail": "1.9.0",
+ "brief": [
+ "This command retrieves all host reservations for a specified identifier (type and value)."
+ ],
+ "cmd-comment": [
+ "Operation-target is optional; default is 'all'."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"reservation-get-by-id\",",
+ " \"arguments\": {",
+ " \"identifier-type\": <one of 'hw-address', 'duid', 'circuit-id', 'client-id' and 'flex-id'>,",
+ " \"identifier\": <string>,",
+ " \"operation-target\": <string (memory, database, all, default)>",
+ " }",
+ "}"
+ ],
+ "hook": "host_cmds",
+ "name": "reservation-get-by-id",
+ "resp-comment": [
+ "The reservation-get-by-id command may result in large responses."
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/reservation-get-page.json b/src/share/api/reservation-get-page.json
new file mode 100644
index 0000000..6be2b52
--- /dev/null
+++ b/src/share/api/reservation-get-page.json
@@ -0,0 +1,27 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command retrieves all host reservations or host reservations for a specified subnet by page."
+ ],
+ "cmd-comment": [
+ "The page size limit is mandatory. The subnet-id is optional since version 1.9.0. The source-index and from host-id are optional and default to 0. Values to use to load the next page are returned in responses in a next map."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"reservation-get-page\",",
+ " \"arguments\": {",
+ " \"subnet-id\": <integer>,",
+ " \"limit\": <integer>,",
+ " \"source-index\": <integer>,",
+ " \"from\": <integer>",
+ " }",
+ "}"
+ ],
+ "hook": "host_cmds",
+ "name": "reservation-get-page",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/reservation-get.json b/src/share/api/reservation-get.json
new file mode 100644
index 0000000..9b721e8
--- /dev/null
+++ b/src/share/api/reservation-get.json
@@ -0,0 +1,55 @@
+{
+ "access": "read",
+ "avail": "1.2.0",
+ "brief": [
+ "This command retrieves an existing host reservation."
+ ],
+ "cmd-comment": [
+ "The host reservation can be identified by either the (subnet-id, ip-address) pair or a triplet of (subnet-id, identifier-type, identifier). Operation-target is optional; default is 'all'."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"reservation-get\",",
+ " \"arguments\": {",
+ " \"subnet-id\": <integer>,",
+ " \"identifier-type\": <one of 'hw-address', 'duid', 'circuit-id', 'client-id' and 'flex-id'>,",
+ " \"identifier\": <string>,",
+ " \"operation-target\": <string (memory, database, all, default)>",
+ " }",
+ "}"
+ ],
+ "hook": "host_cmds",
+ "name": "reservation-get",
+ "resp-comment": [
+ "The arguments object appears only if a host is found. Many fields in the arguments object appear only if a specific field is set."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": <integer>,",
+ " \"text\": <string>,",
+ " \"arguments\": {",
+ " \"boot-file-name\": <string>,",
+ " \"comment\": <string>,",
+ " \"client-id\": <string>,",
+ " \"circuit-id\": <string>,",
+ " \"duid\": <string>,",
+ " \"flex-id\": <string>,",
+ " \"ip-address\": <string (IPv4 address)>,",
+ " \"ip-addresses\": [ <comma-separated strings> ],",
+ " \"hw-address\": <string>,",
+ " \"hostname\": <string>,",
+ " \"next-server\": <string (IPv4 address)>,",
+ " \"option-data\": [ <comma-separated structures defining options> ],",
+ " \"prefixes\": [ <comma-separated IPv6 prefixes> ],",
+ " \"client-classes\": [ <comma-separated strings> ],",
+ " \"server-hostname\": <string>,",
+ " \"subnet-id\": <integer>,",
+ " \"user-context\": <any valid JSON>",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/reservation-update.json b/src/share/api/reservation-update.json
new file mode 100644
index 0000000..f40a8e8
--- /dev/null
+++ b/src/share/api/reservation-update.json
@@ -0,0 +1,50 @@
+{
+ "access": "write",
+ "avail": "2.3.7",
+ "brief": [
+ "This command updates an existing host reservation. The reservation has to include host identifiers and a subnet identifier and may include IPv4 addresses, IPv6 addresses, IPv6 prefixes, various identifiers, a class the client will be assigned to, DHCPv4 and DHCPv6 options, and more."
+ ],
+ "cmd-comment": [
+ "Note that boot-file-name, circuit-id, client-id, ip-address, next-server, and server-hostname are IPv4-specific. ip-addresses, and prefixes are IPv6-specific. Operation-target is optional; default is 'alternate'."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"reservation-update\",",
+ " \"arguments\": {",
+ " \"reservation\": {",
+ " \"boot-file-name\": <string>,",
+ " \"client-id\": <string>,",
+ " \"circuit-id\": <string>,",
+ " \"duid\": <string>,",
+ " \"flex-id\": <string>,",
+ " \"ip-address\": <string (IPv4 address)>,",
+ " \"ip-addresses\": [ <comma-separated strings> ],",
+ " \"hw-address\": <string>,",
+ " \"hostname\": <string>,",
+ " \"next-server\": <string (IPv4 address)>,",
+ " \"option-data\": [ <comma-separated structures defining options> ],",
+ " \"prefixes\": [ <comma-separated IPv6 prefixes> ],",
+ " \"client-classes\": [ <comma-separated strings> ],",
+ " \"server-hostname\": <string>,",
+ " \"subnet-id\": <integer>,",
+ " \"user-context\": <any valid JSON>",
+ " },",
+ " \"operation-target\": <string (memory, database, all, default)>",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"cmd-reservation-update\"/>",
+ "hook": "host_cmds",
+ "name": "reservation-update",
+ "resp-syntax": [
+ "",
+ "{",
+ " \"result\": <integer>,",
+ " \"text\": <string>",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/server-tag-get.json b/src/share/api/server-tag-get.json
new file mode 100644
index 0000000..c06204b
--- /dev/null
+++ b/src/share/api/server-tag-get.json
@@ -0,0 +1,30 @@
+{
+ "access": "read",
+ "avail": "1.6.0",
+ "brief": [
+ "This command returns the server tag used by the server. ",
+ "Server tag is essential configuration parameter in the Config Backend configuration.",
+ "This parameter is configured in the local config file.",
+ "This command does not take any parameters."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"server-tag-get\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-server-tag-get\"/>",
+ "name": "server-tag-get",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"arguments\": {",
+ " \"server-tag\": \"office1\"",
+ " }",
+ "}"
+ ],
+
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/shutdown.json b/src/share/api/shutdown.json
new file mode 100644
index 0000000..69e8160
--- /dev/null
+++ b/src/share/api/shutdown.json
@@ -0,0 +1,26 @@
+{
+ "access": "write",
+ "avail": "1.0.0",
+ "brief": [
+ "This command instructs the server to initiate its shutdown procedure."
+ ],
+ "cmd-comment": [
+ "The server responds with a confirmation that the shutdown procedure has been initiated."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"shutdown\",",
+ " \"arguments\": {",
+ " \"exit-value\": 123",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-shutdown\"/>",
+ "name": "shutdown",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns",
+ "kea-ctrl-agent"
+ ]
+}
diff --git a/src/share/api/stat-lease4-get.json b/src/share/api/stat-lease4-get.json
new file mode 100644
index 0000000..75a73fb
--- /dev/null
+++ b/src/share/api/stat-lease4-get.json
@@ -0,0 +1,34 @@
+{
+ "access": "read",
+ "avail": "1.4.0",
+ "brief": [
+ "This command fetches lease statistics for a range of known IPv4 subnets."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"stat-lease4-get\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-stat-lease4-get\"/>",
+ "hook": "stat_cmds",
+ "name": "stat-lease4-get",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"stat-lease4-get: 2 rows found\",",
+ " \"arguments\": {",
+ " \"result-set\": {",
+ " \"columns\": [ \"subnet-id\", \"total-addresses\", \"cumulative-assigned-addresses\", \"assigned-addresses\", \"declined-addresses\" ],",
+ " \"rows\": [",
+ " [ 10, 256, 200, 111, 0 ],",
+ " [ 20, 4098, 5000, 2034, 4 ]",
+ " ],",
+ " \"timestamp\": \"2018-05-04 15:03:37.000000\"",
+ " }",
+ " }",
+ " }"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/stat-lease6-get.json b/src/share/api/stat-lease6-get.json
new file mode 100644
index 0000000..389ec83
--- /dev/null
+++ b/src/share/api/stat-lease6-get.json
@@ -0,0 +1,38 @@
+{
+ "access": "read",
+ "avail": "1.4.0",
+ "brief": [
+ "This command fetches lease statistics for a range of known IPv6 subnets."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"stat-lease6-get\",",
+ " \"arguments\": {",
+ " \"subnet-id\" : 10",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-stat-lease6-get\"/>",
+ "hook": "stat_cmds",
+ "name": "stat-lease6-get",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"stat-lease6-get: 2 rows found\",",
+ " \"arguments\": {",
+ " \"result-set\": {",
+ " \"columns\": [ \"subnet-id\", \"total-nas\", \"cumulative-assigned-nas\", \"assigned-nas\", \"declined-addresses\", \"total-pds\", \"cumulative-assigned-pds\", \"assigned-pds\" ],",
+ " \"rows\": [",
+ " [ 10, 4096, 3000, 2400, 3, 0, 0],",
+ " [ 20, 0, 0, 0, 1048, 500, 233 ],",
+ " [ 30, 256, 300, 60, 0, 1048, 15, 15 ]",
+ " ],",
+ " \"timestamp\": \"2018-05-04 15:03:37.000000\"",
+ " }",
+ " }",
+ " }"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/statistic-get-all.json b/src/share/api/statistic-get-all.json
new file mode 100644
index 0000000..2def68a
--- /dev/null
+++ b/src/share/api/statistic-get-all.json
@@ -0,0 +1,659 @@
+{
+ "access": "read",
+ "avail": "1.0.0",
+ "brief": [
+ "This command retrieves all recorded statistics."
+ ],
+ "cmd-comment": [
+ "The server responds with the details of all recorded statistics, with a result of 0 indicating that it iterated over all statistics (even when the total number of statistics is zero)."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"statistic-get-all\",",
+ " \"arguments\": { }",
+ "}"
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"arguments\": {",
+ " \"cumulative-assigned-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836166\"",
+ " ]",
+ " ],",
+ " \"declined-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836156\"",
+ " ]",
+ " ],",
+ " \"pkt4-ack-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616247\"",
+ " ]",
+ " ],",
+ " \"pkt4-ack-sent\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616290\"",
+ " ]",
+ " ],",
+ " \"pkt4-decline-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616296\"",
+ " ]",
+ " ],",
+ " \"pkt4-discover-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616303\"",
+ " ]",
+ " ],",
+ " \"pkt4-inform-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616308\"",
+ " ]",
+ " ],",
+ " \"pkt4-nak-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616312\"",
+ " ]",
+ " ],",
+ " \"pkt4-nak-sent\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616314\"",
+ " ]",
+ " ],",
+ " \"pkt4-offer-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616318\"",
+ " ]",
+ " ],",
+ " \"pkt4-offer-sent\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616323\"",
+ " ]",
+ " ],",
+ " \"pkt4-parse-failed\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616326\"",
+ " ]",
+ " ],",
+ " \"pkt4-receive-drop\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616330\"",
+ " ]",
+ " ],",
+ " \"pkt4-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616335\"",
+ " ]",
+ " ],",
+ " \"pkt4-release-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616339\"",
+ " ]",
+ " ],",
+ " \"pkt4-request-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616343\"",
+ " ]",
+ " ],",
+ " \"pkt4-sent\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616348\"",
+ " ]",
+ " ],",
+ " \"pkt4-unknown-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616354\"",
+ " ]",
+ " ],",
+ " \"reclaimed-declined-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836159\"",
+ " ]",
+ " ],",
+ " \"reclaimed-leases\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836163\"",
+ " ]",
+ " ],",
+ " \"subnet[1].assigned-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836173\"",
+ " ]",
+ " ],",
+ " \"subnet[1].cumulative-assigned-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836098\"",
+ " ]",
+ " ],",
+ " \"subnet[1].declined-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836178\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pool[0].assigned-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836205\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pool[0].cumulative-assigned-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836137\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pool[0].declined-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836213\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pool[0].reclaimed-declined-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836225\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pool[0].reclaimed-leases\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836236\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pool[0].total-addresses\": [",
+ " [",
+ " 11010049,",
+ " \"2023-06-13 20:42:46.836128\"",
+ " ]",
+ " ],",
+ " \"subnet[1].reclaimed-declined-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836186\"",
+ " ]",
+ " ],",
+ " \"subnet[1].reclaimed-leases\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836194\"",
+ " ]",
+ " ],",
+ " \"subnet[1].total-addresses\": [",
+ " [",
+ " 11010049,",
+ " \"2023-06-13 20:42:46.836083\"",
+ " ]",
+ " ],",
+ " \"subnet[1].v4-lease-reuses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836105\"",
+ " ]",
+ " ],",
+ " \"subnet[1].v4-reservation-conflicts\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.836111\"",
+ " ]",
+ " ],",
+ " \"v4-allocation-fail\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616358\"",
+ " ]",
+ " ],",
+ " \"v4-allocation-fail-classes\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616363\"",
+ " ]",
+ " ],",
+ " \"v4-allocation-fail-no-pools\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616368\"",
+ " ]",
+ " ],",
+ " \"v4-allocation-fail-shared-network\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616372\"",
+ " ]",
+ " ],",
+ " \"v4-allocation-fail-subnet\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616376\"",
+ " ]",
+ " ],",
+ " \"v4-lease-reuses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616410\"",
+ " ]",
+ " ],",
+ " \"v4-reservation-conflicts\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 20:42:46.616412\"",
+ " ]",
+ " ]",
+ " }",
+ "}",
+ "",
+ "or",
+ "",
+ "{",
+ " \"result\": 0,",
+ " \"arguments\": {",
+ " \"cumulative-assigned-nas\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196757\"",
+ " ]",
+ " ],",
+ " \"cumulative-assigned-pds\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196758\"",
+ " ]",
+ " ],",
+ " \"declined-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196754\"",
+ " ]",
+ " ],",
+ " \"pkt6-advertise-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177731\"",
+ " ]",
+ " ],",
+ " \"pkt6-advertise-sent\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177739\"",
+ " ]",
+ " ],",
+ " \"pkt6-decline-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177739\"",
+ " ]",
+ " ],",
+ " \"pkt6-dhcpv4-query-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177740\"",
+ " ]",
+ " ],",
+ " \"pkt6-dhcpv4-response-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177740\"",
+ " ]",
+ " ],",
+ " \"pkt6-dhcpv4-response-sent\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177741\"",
+ " ]",
+ " ],",
+ " \"pkt6-infrequest-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177742\"",
+ " ]",
+ " ],",
+ " \"pkt6-parse-failed\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177742\"",
+ " ]",
+ " ],",
+ " \"pkt6-rebind-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177743\"",
+ " ]",
+ " ],",
+ " \"pkt6-receive-drop\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177743\"",
+ " ]",
+ " ],",
+ " \"pkt6-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177744\"",
+ " ]",
+ " ],",
+ " \"pkt6-release-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177744\"",
+ " ]",
+ " ],",
+ " \"pkt6-renew-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177745\"",
+ " ]",
+ " ],",
+ " \"pkt6-reply-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177745\"",
+ " ]",
+ " ],",
+ " \"pkt6-reply-sent\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177746\"",
+ " ]",
+ " ],",
+ " \"pkt6-request-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177747\"",
+ " ]",
+ " ],",
+ " \"pkt6-sent\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177747\"",
+ " ]",
+ " ],",
+ " \"pkt6-solicit-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177748\"",
+ " ]",
+ " ],",
+ " \"pkt6-unknown-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177748\"",
+ " ]",
+ " ],",
+ " \"reclaimed-declined-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196755\"",
+ " ]",
+ " ],",
+ " \"reclaimed-leases\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196756\"",
+ " ]",
+ " ],",
+ " \"subnet[1].assigned-nas\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196760\"",
+ " ]",
+ " ],",
+ " \"subnet[1].assigned-pds\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196761\"",
+ " ]",
+ " ],",
+ " \"subnet[1].cumulative-assigned-nas\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196727\"",
+ " ]",
+ " ],",
+ " \"subnet[1].cumulative-assigned-pds\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196729\"",
+ " ]",
+ " ],",
+ " \"subnet[1].declined-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196763\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pd-pool[0].assigned-pds\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196785\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pd-pool[0].cumulative-assigned-pds\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196744\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pd-pool[0].reclaimed-leases\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196789\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pd-pool[0].total-pds\": [",
+ " [",
+ " 256,",
+ " \"2023-06-13 21:28:57.196741\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pool[0].assigned-nas\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196773\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pool[0].cumulative-assigned-nas\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196739\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pool[0].declined-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196775\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pool[0].reclaimed-declined-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196779\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pool[0].reclaimed-leases\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196783\"",
+ " ]",
+ " ],",
+ " \"subnet[1].pool[0].total-nas\": [",
+ " [",
+ " 281474976710656,",
+ " \"2023-06-13 21:28:57.196736\"",
+ " ]",
+ " ],",
+ " \"subnet[1].reclaimed-declined-addresses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196766\"",
+ " ]",
+ " ],",
+ " \"subnet[1].reclaimed-leases\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196770\"",
+ " ]",
+ " ],",
+ " \"subnet[1].total-nas\": [",
+ " [",
+ " 281474976710656,",
+ " \"2023-06-13 21:28:57.196720\"",
+ " ]",
+ " ],",
+ " \"subnet[1].total-pds\": [",
+ " [",
+ " 256,",
+ " \"2023-06-13 21:28:57.196724\"",
+ " ]",
+ " ],",
+ " \"subnet[1].v6-ia-na-lease-reuses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196731\"",
+ " ]",
+ " ],",
+ " \"subnet[1].v6-ia-pd-lease-reuses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.196733\"",
+ " ]",
+ " ],",
+ " \"v6-allocation-fail\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177749\"",
+ " ]",
+ " ],",
+ " \"v6-allocation-fail-classes\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177755\"",
+ " ]",
+ " ],",
+ " \"v6-allocation-fail-no-pools\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177756\"",
+ " ]",
+ " ],",
+ " \"v6-allocation-fail-shared-network\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177756\"",
+ " ]",
+ " ],",
+ " \"v6-allocation-fail-subnet\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177757\"",
+ " ]",
+ " ],",
+ " \"v6-ia-na-lease-reuses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177757\"",
+ " ]",
+ " ],",
+ " \"v6-ia-pd-lease-reuses\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:28:57.177758\"",
+ " ]",
+ " ]",
+ " }",
+ "}",
+ "",
+ "or",
+ "",
+ "{",
+ " \"result\": 0,",
+ " \"arguments\": {",
+ " \"ncr-error\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:42:54.627751\"",
+ " ]",
+ " ],",
+ " \"ncr-invalid\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:42:54.627749\"",
+ " ]",
+ " ],",
+ " \"ncr-received\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:42:54.627737\"",
+ " ]",
+ " ],",
+ " \"update-error\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:42:54.627759\"",
+ " ]",
+ " ],",
+ " \"update-sent\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:42:54.627752\"",
+ " ]",
+ " ],",
+ " \"update-signed\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:42:54.627753\"",
+ " ]",
+ " ],",
+ " \"update-success\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:42:54.627755\"",
+ " ]",
+ " ],",
+ " \"update-timeout\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:42:54.627757\"",
+ " ]",
+ " ],",
+ " \"update-unsigned\": [",
+ " [",
+ " 0,",
+ " \"2023-06-13 21:42:54.627754\"",
+ " ]",
+ " ]",
+ " }",
+ "}"
+ ],
+
+ "description": "See <xref linkend=\"command-statistic-get-all\"/>",
+ "name": "statistic-get-all",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns"
+ ]
+}
diff --git a/src/share/api/statistic-get.json b/src/share/api/statistic-get.json
new file mode 100644
index 0000000..b6c9cca
--- /dev/null
+++ b/src/share/api/statistic-get.json
@@ -0,0 +1,33 @@
+{
+ "access": "read",
+ "avail": "1.0.0",
+ "brief": [
+ "This command retrieves a single statistic. It takes a single string parameter called name that specifies the statistic name."
+ ],
+ "cmd-comment": [
+ "The server responds with the details of the requested statistic, with a result of 0 indicating success, and the specified statistic as the value of the \"arguments\" parameter."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"statistic-get\",",
+ " \"arguments\": {",
+ " \"name\": \"pkt4-received\"",
+ " }",
+ "}"
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"arguments\": {",
+ " \"pkt4-received\": [ [ \"first_value\", \"2019-07-30 10:11:19.498739\" ], [ \"second_value\", \"2019-07-30 10:11:19.498662\" ] ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-statistic-get\"/>",
+ "name": "statistic-get",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns"
+ ]
+}
diff --git a/src/share/api/statistic-remove-all.json b/src/share/api/statistic-remove-all.json
new file mode 100644
index 0000000..f1d9e13
--- /dev/null
+++ b/src/share/api/statistic-remove-all.json
@@ -0,0 +1,22 @@
+{
+ "access": "write",
+ "avail": "1.0.0",
+ "brief": [
+ "(Deprecated) This command deletes all statistics."
+ ],
+ "cmd-comment": [
+ "If the removal of all statistics is successful, the server responds with a status of 0, indicating success, and an empty parameters field. If an error is encountered, the server returns a status code of 1 (error) and the text field contains the error description."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"statistic-remove-all\",",
+ " \"arguments\": { }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-statistic-remove-all\"/>",
+ "name": "statistic-remove-all",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/statistic-remove.json b/src/share/api/statistic-remove.json
new file mode 100644
index 0000000..bece985
--- /dev/null
+++ b/src/share/api/statistic-remove.json
@@ -0,0 +1,24 @@
+{
+ "access": "write",
+ "avail": "1.0.0",
+ "brief": [
+ "This command deletes a single statistic. It takes a single string parameter called name that specifies the statistic name."
+ ],
+ "cmd-comment": [
+ "If the specific statistic is found and its removal is successful, the server responds with a status of 0, indicating success, and an empty parameters field. If an error is encountered (e.g. the requested statistic was not found), the server returns a status code of 1 (error) and the text field contains the error description."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"statistic-remove\",",
+ " \"arguments\": {",
+ " \"name\": \"pkt4-received\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-statistic-remove\"/>",
+ "name": "statistic-remove",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/statistic-reset-all.json b/src/share/api/statistic-reset-all.json
new file mode 100644
index 0000000..c8347de
--- /dev/null
+++ b/src/share/api/statistic-reset-all.json
@@ -0,0 +1,23 @@
+{
+ "access": "write",
+ "avail": "1.0.0",
+ "brief": [
+ "This command sets all statistics to their neutral values: 0 for integer, 0.0 for float, 0h0m0s0us for time duration, and \"\" for string type."
+ ],
+ "cmd-comment": [
+ "If the operation is successful, the server responds with a status of 0, indicating success, and an empty parameters field. If an error is encountered, the server returns a status code of 1 (error) and the text field contains the error description."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"statistic-reset-all\",",
+ " \"arguments\": { }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-statistic-reset-all\"/>",
+ "name": "statistic-reset-all",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns"
+ ]
+}
diff --git a/src/share/api/statistic-reset.json b/src/share/api/statistic-reset.json
new file mode 100644
index 0000000..8a758f6
--- /dev/null
+++ b/src/share/api/statistic-reset.json
@@ -0,0 +1,25 @@
+{
+ "access": "write",
+ "avail": "1.0.0",
+ "brief": [
+ "This command sets the specified statistic to its neutral value: 0 for integer, 0.0 for float, 0h0m0s0us for time duration, and \"\" for string type. It takes a single string parameter called name that specifies the statistic name."
+ ],
+ "cmd-comment": [
+ "If the specific statistic is found and the reset is successful, the server responds with a status of 0, indicating success, and an empty parameters field. If an error is encountered (e.g. the requested statistic was not found), the server returns a status code of 1 (error) and the text field contains the error description."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"statistic-reset\",",
+ " \"arguments\": {",
+ " \"name\": \"pkt4-received\"",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-statistic-reset\"/>",
+ "name": "statistic-reset",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns"
+ ]
+}
diff --git a/src/share/api/statistic-sample-age-set-all.json b/src/share/api/statistic-sample-age-set-all.json
new file mode 100644
index 0000000..83a60c1
--- /dev/null
+++ b/src/share/api/statistic-sample-age-set-all.json
@@ -0,0 +1,24 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command sets a time-based limit for all statistics. It takes a single integer parameter called duration."
+ ],
+ "cmd-comment": [
+ "The server responds with a message about successfully set limits for all statistics, with a result of 0 indicating success, and an empty parameters field. If an error is encountered, the server returns a status code of 1 (error) and the text field contains the error description."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"statistic-sample-age-set-all\",",
+ " \"arguments\": {",
+ " \"duration\": 1245",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-statistic-sample-age-set-all\"/>",
+ "name": "statistic-sample-age-set-all",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/statistic-sample-age-set.json b/src/share/api/statistic-sample-age-set.json
new file mode 100644
index 0000000..2091136
--- /dev/null
+++ b/src/share/api/statistic-sample-age-set.json
@@ -0,0 +1,25 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command sets a time-based limit for a single statistic. It takes two parameters: a string called name and an integer value called duration."
+ ],
+ "cmd-comment": [
+ "The server responds with a message about a successfully set limit for the given statistic, with a result of 0 indicating success, and an empty parameters field. If an error is encountered (e.g. the requested statistic was not found), the server returns a status code of 1 (error) and the text field contains the error description."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"statistic-sample-age-set\",",
+ " \"arguments\": {",
+ " \"name\": \"pkt4-received\",",
+ " \"duration\": 1245",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-statistic-sample-age-set\"/>",
+ "name": "statistic-sample-age-set",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/statistic-sample-count-set-all.json b/src/share/api/statistic-sample-count-set-all.json
new file mode 100644
index 0000000..f4bbe2a
--- /dev/null
+++ b/src/share/api/statistic-sample-count-set-all.json
@@ -0,0 +1,24 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command sets a size-based limit for all statistics. It takes a single integer parameter called max-samples."
+ ],
+ "cmd-comment": [
+ "The server responds with a message about successfully set limits for all statistics, with a result of 0 indicating success, and an empty parameters field. If an error is encountered, the server returns a status code of 1 (error) and the text field contains the error description."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"statistic-sample-count-set-all\",",
+ " \"arguments\": {",
+ " \"max-samples\": 100",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-statistic-sample-count-set-all\"/>",
+ "name": "statistic-sample-count-set-all",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/statistic-sample-count-set.json b/src/share/api/statistic-sample-count-set.json
new file mode 100644
index 0000000..1e8e17e
--- /dev/null
+++ b/src/share/api/statistic-sample-count-set.json
@@ -0,0 +1,25 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command sets a size-based limit for a single statistic. It takes two parameters: a string called name and an integer value called max-samples."
+ ],
+ "cmd-comment": [
+ "The server responds with a message about a successfully set limit for the given statistic, with a result of 0 indicating success, and an empty parameters field. If an error is encountered (e.g. the requested statistic was not found), the server returns a status code of 1 (error) and the text field contains the error description."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"statistic-sample-count-set\",",
+ " \"arguments\": {",
+ " \"name\": \"pkt4-received\",",
+ " \"max-samples\": 100",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-statistic-sample-count-set\"/>",
+ "name": "statistic-sample-count-set",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/status-get.json b/src/share/api/status-get.json
new file mode 100644
index 0000000..8e107a7
--- /dev/null
+++ b/src/share/api/status-get.json
@@ -0,0 +1,62 @@
+{
+ "access": "read",
+ "avail": "1.7.3",
+ "brief": [
+ "This command returns server's runtime information.",
+ "It takes no arguments."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"status-get\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-status-get\"/>",
+ "name": "status-get",
+ "resp-comment": [
+ "If the libdhcp_ha (High Availability) hooks library is loaded by the DHCP server receiving this command the response also includes the HA specific status information of the server receiving the command and its partner's status."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": <integer>,",
+ " \"arguments\": {",
+ " \"pid\": <integer>,",
+ " \"uptime\": <uptime in seconds>,",
+ " \"reload\": <time since reload in seconds>,",
+ " \"high-availability\": [",
+ " {",
+ " \"ha-mode\": <HA mode configured for this relationship>,",
+ " \"ha-servers\": {",
+ " \"local\": {",
+ " \"role\": <role of this server as in the configuration file>,",
+ " \"scopes\": <list of scope names served by this server>,",
+ " \"state\": <HA state name of the server receiving the command>",
+ " },",
+ " \"remote\": {",
+ " \"age\": <the age of the remote status in seconds>,",
+ " \"in-touch\": <indicates if this server communicated with remote>,",
+ " \"last-scopes\": <list of scopes served by partner>,",
+ " \"last-state\": <HA state name of the partner>,",
+ " \"role\": <partner role>",
+ " }",
+ " }",
+ " }",
+ " ],",
+ " \"multi-threading-enabled\": true,",
+ " \"thread-pool-size\": 4,",
+ " \"packet-queue-size\": 64,",
+ " \"packet-queue-statistics\": [ 1.2, 2.3, 3.4 ],",
+ " \"sockets\": {",
+ " \"errors\": [ <error received during the last attempt to open all sockets> ],",
+ " \"status\": <ready, retrying, or failed>",
+ " }",
+ " }",
+ "}"
+ ],
+
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns",
+ "kea-ctrl-agent"
+ ]
+}
diff --git a/src/share/api/subnet4-add.json b/src/share/api/subnet4-add.json
new file mode 100644
index 0000000..7b1ea8b
--- /dev/null
+++ b/src/share/api/subnet4-add.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command creates and adds a new subnet to the existing server configuration. This operation has no impact on other subnets."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet4-add\",",
+ " \"arguments\": {",
+ " \"subnet4\": [ {",
+ " \"id\": 123,",
+ " \"subnet\": \"10.20.30.0/24\",",
+ " ...",
+ " } ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp69\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet4-add",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 subnet added\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": 123,",
+ " \"subnet\": \"10.20.30.0/24\"",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/subnet4-del.json b/src/share/api/subnet4-del.json
new file mode 100644
index 0000000..f1583da
--- /dev/null
+++ b/src/share/api/subnet4-del.json
@@ -0,0 +1,35 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command removes a subnet from the server's configuration. This command has no effect on other configured subnets, but removing a subnet has certain implications which the server's administrator should be aware of."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet4-del\",",
+ " \"arguments\": {",
+ " \"id\": 123",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp71\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet4-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 subnet 192.0.2.0/24 (id 123) deleted\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": 123,",
+ " \"subnet\": \"192.0.2.0/24\"",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/subnet4-delta-add.json b/src/share/api/subnet4-delta-add.json
new file mode 100644
index 0000000..fb66313
--- /dev/null
+++ b/src/share/api/subnet4-delta-add.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "2.1.7",
+ "brief": [
+ "This command updates (adds or overwrites) parts of a single subnet in the existing server configuration. This operation has no impact on other subnets."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet4-delta-add\",",
+ " \"arguments\": {",
+ " \"subnet4\": [ {",
+ " \"id\": 123,",
+ " \"subnet\": \"10.20.30.0/24\",",
+ " ...",
+ " } ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp69\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet4-delta-add",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 subnet updated\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": 123,",
+ " \"subnet\": \"10.20.30.0/24\"",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/subnet4-delta-del.json b/src/share/api/subnet4-delta-del.json
new file mode 100644
index 0000000..16c60d7
--- /dev/null
+++ b/src/share/api/subnet4-delta-del.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "2.1.7",
+ "brief": [
+ "This command updates (removes) parts of a single subnet in the existing server configuration. This operation has no impact on other subnets."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet4-delta-del\",",
+ " \"arguments\": {",
+ " \"subnet4\": [ {",
+ " \"id\": 123,",
+ " \"subnet\": \"10.20.30.0/24\",",
+ " ...",
+ " } ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp69\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet4-delta-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 subnet updated\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": 123,",
+ " \"subnet\": \"10.20.30.0/24\"",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/subnet4-get.json b/src/share/api/subnet4-get.json
new file mode 100644
index 0000000..97d24cc
--- /dev/null
+++ b/src/share/api/subnet4-get.json
@@ -0,0 +1,39 @@
+{
+ "access": "read",
+ "avail": "1.3.0",
+ "brief": [
+ "This command retrieves detailed information about the specified subnet. This command usually follows ``subnet4-list``, which discovers available subnets with their respective subnet identifiers and prefixes."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet4-get\",",
+ " \"arguments\": {",
+ " \"id\": 10",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp67\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet4-get",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"Info about IPv4 subnet 10.0.0.0/8 (id 10) returned\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"subnet\": \"10.0.0.0/8\",",
+ " \"id\": 1,",
+ " \"option-data\": [{",
+ " ...",
+ " }],",
+ " ...",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/subnet4-list.json b/src/share/api/subnet4-list.json
new file mode 100644
index 0000000..dfea625
--- /dev/null
+++ b/src/share/api/subnet4-list.json
@@ -0,0 +1,39 @@
+{
+ "access": "read",
+ "avail": "1.3.0",
+ "brief": [
+ "This command lists all currently configured subnets. The subnets are returned in a brief format, i.e. a subnet identifier and subnet prefix are included for each subnet."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet4-list\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp65\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet4-list",
+ "resp-comment": [
+ "If no IPv4 subnets are found, an error code is returned along with the error description."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 IPv4 subnets found\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": 10,",
+ " \"subnet\": \"10.0.0.0/8\"",
+ " },",
+ " {",
+ " \"id\": 100,",
+ " \"subnet\": \"192.0.2.0/24\"",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/subnet4-update.json b/src/share/api/subnet4-update.json
new file mode 100644
index 0000000..f131b9e
--- /dev/null
+++ b/src/share/api/subnet4-update.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command updates (overwrites) a single subnet in the existing server configuration. This operation has no impact on other subnets."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet4-update\",",
+ " \"arguments\": {",
+ " \"subnet4\": [ {",
+ " \"id\": 123,",
+ " \"subnet\": \"10.20.30.0/24\",",
+ " ...",
+ " } ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp69\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet4-update",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv4 subnet updated\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": 123,",
+ " \"subnet\": \"10.20.30.0/24\"",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp4"
+ ]
+}
diff --git a/src/share/api/subnet6-add.json b/src/share/api/subnet6-add.json
new file mode 100644
index 0000000..77418d5
--- /dev/null
+++ b/src/share/api/subnet6-add.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command creates and adds a new subnet to the existing server configuration. This operation has no impact on other subnets."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet6-add\",",
+ " \"arguments\": {",
+ " \"subnet6\": [ {",
+ " \"id\": 234,",
+ " \"subnet\": \"2001:db8:1::/64\",",
+ " ...",
+ " } ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp70\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet6-add",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 subnet added\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": 234,",
+ " \"subnet\": \"2001:db8:1::/64\"",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/subnet6-del.json b/src/share/api/subnet6-del.json
new file mode 100644
index 0000000..3e355ae
--- /dev/null
+++ b/src/share/api/subnet6-del.json
@@ -0,0 +1,33 @@
+{
+ "access": "write",
+ "avail": "1.3.0",
+ "brief": [
+ "This command removes a subnet from the server's configuration. This command has no effect on other configured subnets, but removing a subnet has certain implications which the server's administrator should be aware of."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet6-del\",",
+ " \"arguments\": {",
+ " \"id\": 234",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp72\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet6-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 subnet 2001:db8:1::/64 (id 234) deleted\",",
+ " \"subnets\": [",
+ " {",
+ " \"id\": 234,",
+ " \"subnet\": \"2001:db8:1::/64\"",
+ " }",
+ " ]",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/subnet6-delta-add.json b/src/share/api/subnet6-delta-add.json
new file mode 100644
index 0000000..0b48c99
--- /dev/null
+++ b/src/share/api/subnet6-delta-add.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "2.1.7",
+ "brief": [
+ "This command updates (adds or overwrites) parts of a single subnet in the existing server configuration. This operation has no impact on other subnets."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet6-delta-add\",",
+ " \"arguments\": {",
+ " \"subnet6\": [ {",
+ " \"id\": 234,",
+ " \"subnet\": \"2001:db8:1::/64\",",
+ " ...",
+ " } ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp70\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet6-delta-add",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 subnet updated\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": 234,",
+ " \"subnet\": \"2001:db8:1::/64\"",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/subnet6-delta-del.json b/src/share/api/subnet6-delta-del.json
new file mode 100644
index 0000000..39118bf
--- /dev/null
+++ b/src/share/api/subnet6-delta-del.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "2.1.7",
+ "brief": [
+ "This command updates (removes) parts of a single subnet in the existing server configuration. This operation has no impact on other subnets."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet6-delta-del\",",
+ " \"arguments\": {",
+ " \"subnet6\": [ {",
+ " \"id\": 234,",
+ " \"subnet\": \"2001:db8:1::/64\",",
+ " ...",
+ " } ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp70\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet6-delta-del",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 subnet updated\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": 234,",
+ " \"subnet\": \"2001:db8:1::/64\"",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/subnet6-get.json b/src/share/api/subnet6-get.json
new file mode 100644
index 0000000..f7ac2ef
--- /dev/null
+++ b/src/share/api/subnet6-get.json
@@ -0,0 +1,39 @@
+{
+ "access": "read",
+ "avail": "1.3.0",
+ "brief": [
+ "This command retrieves detailed information about the specified subnet. This command usually follows ``subnet6-list``, which discovers available subnets with their respective subnet identifiers and prefixes."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet6-get\",",
+ " \"arguments\": {",
+ " \"id\": 11",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp68\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet6-get",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"Info about IPv6 subnet 2001:db8:1::/64 (id 11) returned\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"subnet\": \"2001:db8:1::/64\",",
+ " \"id\": 1,",
+ " \"option-data\": [{",
+ " ...",
+ " }],",
+ " ...",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/subnet6-list.json b/src/share/api/subnet6-list.json
new file mode 100644
index 0000000..7202ca7
--- /dev/null
+++ b/src/share/api/subnet6-list.json
@@ -0,0 +1,39 @@
+{
+ "access": "read",
+ "avail": "1.3.0",
+ "brief": [
+ "This command lists all currently configured subnets. The subnets are returned in a brief format, i.e. a subnet identifier and subnet prefix are included for each subnet."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet6-list\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp66\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet6-list",
+ "resp-comment": [
+ "If no IPv6 subnets are found, an error code is returned along with the error description."
+ ],
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"2 IPv6 subnets found\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": 11,",
+ " \"subnet\": \"2001:db8:1::/64\"",
+ " },",
+ " {",
+ " \"id\": 233,",
+ " \"subnet\": \"3000::/16\"",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/subnet6-update.json b/src/share/api/subnet6-update.json
new file mode 100644
index 0000000..3d5725d
--- /dev/null
+++ b/src/share/api/subnet6-update.json
@@ -0,0 +1,39 @@
+{
+ "access": "write",
+ "avail": "1.6.0",
+ "brief": [
+ "This command updates (overwrites) a single subnet in the existing server configuration. This operation has no impact on other subnets."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"subnet6-update\",",
+ " \"arguments\": {",
+ " \"subnet6\": [ {",
+ " \"id\": 234,",
+ " \"subnet\": \"2001:db8:1::/64\",",
+ " ...",
+ " } ]",
+ " }",
+ "}"
+ ],
+ "description": "See <xref linkend=\"idp70\"/>",
+ "hook": "subnet_cmds",
+ "name": "subnet6-update",
+ "resp-syntax": [
+ "{",
+ " \"result\": 0,",
+ " \"text\": \"IPv6 subnet updated\",",
+ " \"arguments\": {",
+ " \"subnets\": [",
+ " {",
+ " \"id\": 234,",
+ " \"subnet\": \"2001:db8:1::/64\"",
+ " }",
+ " ]",
+ " }",
+ "}"
+ ],
+ "support": [
+ "kea-dhcp6"
+ ]
+}
diff --git a/src/share/api/version-get.json b/src/share/api/version-get.json
new file mode 100644
index 0000000..8dac1f7
--- /dev/null
+++ b/src/share/api/version-get.json
@@ -0,0 +1,20 @@
+{
+ "access": "read",
+ "avail": "1.2.0",
+ "brief": [
+ "This command returns extended information about the Kea version that is running. The returned string is the same as if Kea were run with the ``-V`` command-line option."
+ ],
+ "cmd-syntax": [
+ "{",
+ " \"command\": \"version-get\"",
+ "}"
+ ],
+ "description": "See <xref linkend=\"command-version-get\"/>",
+ "name": "version-get",
+ "support": [
+ "kea-dhcp4",
+ "kea-dhcp6",
+ "kea-dhcp-ddns",
+ "kea-ctrl-agent"
+ ]
+}