2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-31 14:05:33 +00:00

cleaned up api docgen, fixed duplicate labels in manuals

This commit is contained in:
Michal Nowikowski
2019-07-19 12:37:54 +02:00
parent 8b9472e237
commit d7ff441615
20 changed files with 150 additions and 708 deletions

View File

@@ -20,6 +20,7 @@ static_sources+=static/kea.css
# ARM
rst_arm_sources=
rst_arm_sources+=arm/acknowledgments.rst
rst_arm_sources+=arm/admin.rst
rst_arm_sources+=arm/agent.rst
rst_arm_sources+=arm/classify.rst
@@ -46,10 +47,13 @@ rst_arm_sources+=arm/keactrl.rst
rst_arm_sources+=arm/lease-expiration.rst
rst_arm_sources+=arm/lfc.rst
rst_arm_sources+=arm/logging.rst
rst_arm_sources+=arm/manpages.rst
rst_arm_sources+=arm/netconf.rst
rst_arm_sources+=arm/quickstart.rst
rst_arm_sources+=arm/shell.rst
rst_arm_sources+=arm/stats.rst
rst_arm_sources+=$(srcdir)/api.rst
rst_arm_sources+=$(srcdir)/kea-messages.rst
main_sources=$(rst_arm_sources) conf.py $(static_sources)
@@ -61,18 +65,14 @@ rst_man_sources+=man/kea-dhcp4.8.rst
rst_man_sources+=man/kea-dhcp6.8.rst
rst_man_sources+=man/kea-dhcp-ddns.8.rst
rst_man_sources+=man/kea-lfc.8.rst
if HAVE_SYSREPO
rst_man_sources+=man/kea-netconf.8.rst
endif
rst_man_sources+=man/kea-shell.8.rst
rst_man_sources+=man/keactrl.8.rst
if PERFDHCP
rst_man_sources+=man/perfdhcp.8.rst
endif
man_sources=$(rst_man_sources) conf.py
man8s=$(foreach rst,$(rst_man_sources), $(sphinxbuilddir)/$(basename $(rst)))
EXTRA_DIST += $(main_sources) $(man_sources) mes2doc.py
EXTRA_DIST += $(main_sources) $(man_sources) api2doc.py mes2doc.py
# list of messages files that are used to generate kea-messages.rst and then kea-messages.pdf
@@ -101,152 +101,150 @@ mes_files+=$(top_srcdir)/src/bin/agent/ca_messages.mes
mes_files+=$(top_srcdir)/src/bin/d2/d2_messages.mes
mes_files+=$(top_srcdir)/src/bin/dhcp6/dhcp6_messages.mes
mes_files+=$(top_srcdir)/src/bin/lfc/lfc_messages.mes
if HAVE_SYSREPO
mes_files+=$(top_srcdir)/src/bin/netconf/netconf_messages.mes
endif
# list of api files that are used to generate api.rst
api_files=
api_files+=api/build-report.json
api_files+=api/cache-clear.json
api_files+=api/cache-get.json
api_files+=api/cache-get-by-id.json
api_files+=api/cache-insert.json
api_files+=api/cache-load.json
api_files+=api/cache-remove.json
api_files+=api/cache-size.json
api_files+=api/cache-write.json
api_files+=api/class-add.json
api_files+=api/class-del.json
api_files+=api/class-get.json
api_files+=api/class-list.json
api_files+=api/class-update.json
api_files+=api/config-get.json
api_files+=api/config-reload.json
api_files+=api/config-set.json
api_files+=api/config-test.json
api_files+=api/config-write.json
api_files+=api/dhcp-disable.json
api_files+=api/dhcp-enable.json
api_files+=api/ha-continue.json
api_files+=api/ha-heartbeat.json
api_files+=api/ha-scopes.json
api_files+=api/ha-sync.json
api_files+=api/lease4-add.json
api_files+=api/lease4-del.json
api_files+=api/lease4-get-all.json
api_files+=api/lease4-get.json
api_files+=api/lease4-update.json
api_files+=api/lease4-wipe.json
api_files+=api/lease6-add.json
api_files+=api/lease6-bulk-apply.json
api_files+=api/lease6-del.json
api_files+=api/lease6-get-all.json
api_files+=api/lease6-get.json
api_files+=api/lease6-update.json
api_files+=api/lease6-wipe.json
api_files+=api/leases-reclaim.json
api_files+=api/libreload.json
api_files+=api/list-commands.json
api_files+=api/network4-add.json
api_files+=api/network4-del.json
api_files+=api/network4-get.json
api_files+=api/network4-list.json
api_files+=api/network4-subnet-add.json
api_files+=api/network4-subnet-del.json
api_files+=api/network6-add.json
api_files+=api/network6-del.json
api_files+=api/network6-get.json
api_files+=api/network6-list.json
api_files+=api/network6-subnet-add.json
api_files+=api/network6-subnet-del.json
api_files+=api/remote-global-parameter4-del.json
api_files+=api/remote-global-parameter4-get-all.json
api_files+=api/remote-global-parameter4-get.json
api_files+=api/remote-global-parameter4-set.json
api_files+=api/remote-global-parameter6-del.json
api_files+=api/remote-global-parameter6-get-all.json
api_files+=api/remote-global-parameter6-get.json
api_files+=api/remote-global-parameter6-set.json
api_files+=api/remote-network4-del.json
api_files+=api/remote-network4-get.json
api_files+=api/remote-network4-list.json
api_files+=api/remote-network4-set.json
api_files+=api/remote-network6-del.json
api_files+=api/remote-network6-get.json
api_files+=api/remote-network6-list.json
api_files+=api/remote-network6-set.json
api_files+=api/remote-option-def4-del.json
api_files+=api/remote-option-def4-get-all.json
api_files+=api/remote-option-def4-get.json
api_files+=api/remote-option-def4-set.json
api_files+=api/remote-option-def6-del.json
api_files+=api/remote-option-def6-get-all.json
api_files+=api/remote-option-def6-get.json
api_files+=api/remote-option-def6-set.json
api_files+=api/remote-option4-global-del.json
api_files+=api/remote-option4-global-get-all.json
api_files+=api/remote-option4-global-get.json
api_files+=api/remote-option4-global-set.json
api_files+=api/remote-option6-global-del.json
api_files+=api/remote-option6-global-get-all.json
api_files+=api/remote-option6-global-get.json
api_files+=api/remote-option6-global-set.json
api_files+=api/remote-subnet4-del-by-id.json
api_files+=api/remote-subnet4-del-by-prefix.json
api_files+=api/remote-subnet4-get-by-id.json
api_files+=api/remote-subnet4-get-by-prefix.json
api_files+=api/remote-subnet4-list.json
api_files+=api/remote-subnet4-set.json
api_files+=api/remote-subnet6-del-by-id.json
api_files+=api/remote-subnet6-del-by-prefix.json
api_files+=api/remote-subnet6-get-by-id.json
api_files+=api/remote-subnet6-get-by-prefix.json
api_files+=api/remote-subnet6-list.json
api_files+=api/remote-subnet6-set.json
api_files+=api/reservation-add.json
api_files+=api/reservation-del.json
api_files+=api/reservation-get.json
api_files+=api/reservation-get-all.json
api_files+=api/reservation-get-page.json
api_files+=api/shutdown.json
api_files+=api/statistic-get-all.json
api_files+=api/statistic-get.json
api_files+=api/statistic-remove-all.json
api_files+=api/statistic-remove.json
api_files+=api/statistic-reset-all.json
api_files+=api/statistic-reset.json
api_files+=api/stat-lease4-get.json
api_files+=api/stat-lease6-get.json
api_files+=api/subnet4-add.json
api_files+=api/subnet4-del.json
api_files+=api/subnet4-get.json
api_files+=api/subnet4-list.json
api_files+=api/subnet4-update.json
api_files+=api/subnet6-add.json
api_files+=api/subnet6-del.json
api_files+=api/subnet6-get.json
api_files+=api/subnet6-list.json
api_files+=api/subnet6-update.json
api_files+=api/version-get.json
api_files+=$(srcdir)/api/build-report.json
api_files+=$(srcdir)/api/cache-clear.json
api_files+=$(srcdir)/api/cache-get.json
api_files+=$(srcdir)/api/cache-get-by-id.json
api_files+=$(srcdir)/api/cache-insert.json
api_files+=$(srcdir)/api/cache-load.json
api_files+=$(srcdir)/api/cache-remove.json
api_files+=$(srcdir)/api/cache-size.json
api_files+=$(srcdir)/api/cache-write.json
api_files+=$(srcdir)/api/class-add.json
api_files+=$(srcdir)/api/class-del.json
api_files+=$(srcdir)/api/class-get.json
api_files+=$(srcdir)/api/class-list.json
api_files+=$(srcdir)/api/class-update.json
api_files+=$(srcdir)/api/config-get.json
api_files+=$(srcdir)/api/config-reload.json
api_files+=$(srcdir)/api/config-set.json
api_files+=$(srcdir)/api/config-test.json
api_files+=$(srcdir)/api/config-write.json
api_files+=$(srcdir)/api/dhcp-disable.json
api_files+=$(srcdir)/api/dhcp-enable.json
api_files+=$(srcdir)/api/ha-continue.json
api_files+=$(srcdir)/api/ha-heartbeat.json
api_files+=$(srcdir)/api/ha-scopes.json
api_files+=$(srcdir)/api/ha-sync.json
api_files+=$(srcdir)/api/lease4-add.json
api_files+=$(srcdir)/api/lease4-del.json
api_files+=$(srcdir)/api/lease4-get-all.json
api_files+=$(srcdir)/api/lease4-get.json
api_files+=$(srcdir)/api/lease4-update.json
api_files+=$(srcdir)/api/lease4-wipe.json
api_files+=$(srcdir)/api/lease6-add.json
api_files+=$(srcdir)/api/lease6-bulk-apply.json
api_files+=$(srcdir)/api/lease6-del.json
api_files+=$(srcdir)/api/lease6-get-all.json
api_files+=$(srcdir)/api/lease6-get.json
api_files+=$(srcdir)/api/lease6-update.json
api_files+=$(srcdir)/api/lease6-wipe.json
api_files+=$(srcdir)/api/leases-reclaim.json
api_files+=$(srcdir)/api/libreload.json
api_files+=$(srcdir)/api/list-commands.json
api_files+=$(srcdir)/api/network4-add.json
api_files+=$(srcdir)/api/network4-del.json
api_files+=$(srcdir)/api/network4-get.json
api_files+=$(srcdir)/api/network4-list.json
api_files+=$(srcdir)/api/network4-subnet-add.json
api_files+=$(srcdir)/api/network4-subnet-del.json
api_files+=$(srcdir)/api/network6-add.json
api_files+=$(srcdir)/api/network6-del.json
api_files+=$(srcdir)/api/network6-get.json
api_files+=$(srcdir)/api/network6-list.json
api_files+=$(srcdir)/api/network6-subnet-add.json
api_files+=$(srcdir)/api/network6-subnet-del.json
api_files+=$(srcdir)/api/remote-global-parameter4-del.json
api_files+=$(srcdir)/api/remote-global-parameter4-get-all.json
api_files+=$(srcdir)/api/remote-global-parameter4-get.json
api_files+=$(srcdir)/api/remote-global-parameter4-set.json
api_files+=$(srcdir)/api/remote-global-parameter6-del.json
api_files+=$(srcdir)/api/remote-global-parameter6-get-all.json
api_files+=$(srcdir)/api/remote-global-parameter6-get.json
api_files+=$(srcdir)/api/remote-global-parameter6-set.json
api_files+=$(srcdir)/api/remote-network4-del.json
api_files+=$(srcdir)/api/remote-network4-get.json
api_files+=$(srcdir)/api/remote-network4-list.json
api_files+=$(srcdir)/api/remote-network4-set.json
api_files+=$(srcdir)/api/remote-network6-del.json
api_files+=$(srcdir)/api/remote-network6-get.json
api_files+=$(srcdir)/api/remote-network6-list.json
api_files+=$(srcdir)/api/remote-network6-set.json
api_files+=$(srcdir)/api/remote-option-def4-del.json
api_files+=$(srcdir)/api/remote-option-def4-get-all.json
api_files+=$(srcdir)/api/remote-option-def4-get.json
api_files+=$(srcdir)/api/remote-option-def4-set.json
api_files+=$(srcdir)/api/remote-option-def6-del.json
api_files+=$(srcdir)/api/remote-option-def6-get-all.json
api_files+=$(srcdir)/api/remote-option-def6-get.json
api_files+=$(srcdir)/api/remote-option-def6-set.json
api_files+=$(srcdir)/api/remote-option4-global-del.json
api_files+=$(srcdir)/api/remote-option4-global-get-all.json
api_files+=$(srcdir)/api/remote-option4-global-get.json
api_files+=$(srcdir)/api/remote-option4-global-set.json
api_files+=$(srcdir)/api/remote-option6-global-del.json
api_files+=$(srcdir)/api/remote-option6-global-get-all.json
api_files+=$(srcdir)/api/remote-option6-global-get.json
api_files+=$(srcdir)/api/remote-option6-global-set.json
api_files+=$(srcdir)/api/remote-subnet4-del-by-id.json
api_files+=$(srcdir)/api/remote-subnet4-del-by-prefix.json
api_files+=$(srcdir)/api/remote-subnet4-get-by-id.json
api_files+=$(srcdir)/api/remote-subnet4-get-by-prefix.json
api_files+=$(srcdir)/api/remote-subnet4-list.json
api_files+=$(srcdir)/api/remote-subnet4-set.json
api_files+=$(srcdir)/api/remote-subnet6-del-by-id.json
api_files+=$(srcdir)/api/remote-subnet6-del-by-prefix.json
api_files+=$(srcdir)/api/remote-subnet6-get-by-id.json
api_files+=$(srcdir)/api/remote-subnet6-get-by-prefix.json
api_files+=$(srcdir)/api/remote-subnet6-list.json
api_files+=$(srcdir)/api/remote-subnet6-set.json
api_files+=$(srcdir)/api/reservation-add.json
api_files+=$(srcdir)/api/reservation-del.json
api_files+=$(srcdir)/api/reservation-get.json
api_files+=$(srcdir)/api/reservation-get-all.json
api_files+=$(srcdir)/api/reservation-get-page.json
api_files+=$(srcdir)/api/shutdown.json
api_files+=$(srcdir)/api/statistic-get-all.json
api_files+=$(srcdir)/api/statistic-get.json
api_files+=$(srcdir)/api/statistic-remove-all.json
api_files+=$(srcdir)/api/statistic-remove.json
api_files+=$(srcdir)/api/statistic-reset-all.json
api_files+=$(srcdir)/api/statistic-reset.json
api_files+=$(srcdir)/api/stat-lease4-get.json
api_files+=$(srcdir)/api/stat-lease6-get.json
api_files+=$(srcdir)/api/subnet4-add.json
api_files+=$(srcdir)/api/subnet4-del.json
api_files+=$(srcdir)/api/subnet4-get.json
api_files+=$(srcdir)/api/subnet4-list.json
api_files+=$(srcdir)/api/subnet4-update.json
api_files+=$(srcdir)/api/subnet6-add.json
api_files+=$(srcdir)/api/subnet6-del.json
api_files+=$(srcdir)/api/subnet6-get.json
api_files+=$(srcdir)/api/subnet6-list.json
api_files+=$(srcdir)/api/subnet6-update.json
api_files+=$(srcdir)/api/version-get.json
EXTRA_DIST += $(api_files)
all: html mans pdf
kea-messages.rst: $(mes_files) mes2doc.py
$(srcdir)/kea-messages.rst: $(mes_files) mes2doc.py
$(srcdir)/mes2doc.py -o $@ $(mes_files)
api.rst: $(api_files) api2doc.py
$(srcdir)/api.rst: $(api_files) api2doc.py
$(srcdir)/api2doc.py -o $@ $(api_files)
pdf: $(main_sources) api.rst kea-messages.rst
pdf: $(main_sources)
$(SPHINXBUILD) -M latexpdf $(srcdir) $(sphinxbuilddir) $(sphinxopts)
html: $(main_sources) api.rst kea-messages.rst
html: $(main_sources)
$(SPHINXBUILD) -M html $(srcdir) $(sphinxbuilddir) $(sphinxopts)
$(man8s): mans
@@ -267,38 +265,9 @@ uninstall-local:
clean-local:
rm -rf $(sphinxbuilddir)
rm -f api.rst kea-messages.rst
rm -f $(srcdir)/api.rst $(srcdir)/kea-messages.rst
.PHONY: all pdf html mans
endif
# There are several steps needed to document new API command:
#
# 1. edit docgen/cmds-list and add the new command
# 2. ./configure --enable-generate-docs
# 3. make - you need to build the sources first, am afraid. The reason why you
# need to do this is that the tool kea-docgen depends on libkea-cc as it
# loads JSON files. This means that the libs need to be built first.
# 4. (optional) run: make templates
# This will go through the list of commands listed in cmds-list
# and will check if there are corresponding JSON files in api/name.json
# If the file is missing, a new JSON will be created using template.
# If you dislike this generator, you can always use api/_template.json
# and copy it over under the name of a new command.
# 5. Edit api/command-name.json. If the command is provided by the daemon
# out of its own (and not via hook), simply delete the hook entry.
# If you don't want to provide command syntax (cmd-syntax key),
# any comments about the syntax (cmd-comment key) or response syntax
# (resp-syntax) or any comment about response (resp-comment), simply
# remove those unused keys. The generator will attempt to generate
# boilerplates for it.
# 6. Generate api.xml: make api
# 7. Rebuild User's Guide as usual: make guide
# This target will generate templates. There's no need to run it, unless
# new commands have been added or there are existing commands that are
# still not documented.
templates: docgen
docgen/generate-templates docgen/cmds-list

17
doc/sphinx/api/README Normal file
View File

@@ -0,0 +1,17 @@
There are several steps needed to document new API command:
1. edit cmds-list and add the new command
2. (optional) run: ./generate-templates cmds-list
This will go through the list of commands listed in cmds-list
and will check if there are corresponding JSON files in api/name.json
If the file is missing, a new JSON will be created using template.
If you dislike this generator, you can always use _template.json
and copy it over under the name of a new command.
3. Edit api/command-name.json. If the command is provided by the daemon
out of its own (and not via hook), simply delete the hook entry.
If you don't want to provide command syntax (cmd-syntax key),
any comments about the syntax (cmd-comment key) or response syntax
(resp-syntax) or any comment about response (resp-comment), simply
remove those unused keys. The generator will attempt to generate
boilerplates for it.
4. Rebuild User's Guide as usual, run in doc/sphinx folder: make

128
doc/sphinx/api/cmds-list Normal file
View File

@@ -0,0 +1,128 @@
build-report
cache-clear
cache-get
cache-get-by-id
cache-insert
cache-load
cache-remove
cache-size
cache-write
class-add
class-del
class-get
class-list
class-update
config-get
config-reload
config-set
config-test
config-write
dhcp-disable
dhcp-enable
ha-continue
ha-heartbeat
ha-scopes
ha-sync
lease4-add
lease4-del
lease4-get
lease4-get-all
lease4-update
lease4-wipe
lease6-add
lease6-bulk-apply
lease6-del
lease6-get
lease6-get-all
lease6-update
lease6-wipe
leases-reclaim
libreload
list-commands
network4-add
network4-del
network4-get
network4-list
network4-subnet-add
network4-subnet-del
network6-add
network6-del
network6-get
network6-list
network6-subnet-add
network6-subnet-del
remote-global-parameter4-del
remote-global-parameter4-get
remote-global-parameter4-get-all
remote-global-parameter4-set
remote-global-parameter6-del
remote-global-parameter6-get
remote-global-parameter6-get-all
remote-global-parameter6-set
remote-network4-del
remote-network4-get
remote-network4-list
remote-network4-set
remote-network6-del
remote-network6-get
remote-network6-list
remote-network6-set
remote-option-def4-del
remote-option-def4-get
remote-option-def4-get-all
remote-option-def4-set
remote-option-def6-del
remote-option-def6-get
remote-option-def6-get-all
remote-option-def6-set
remote-option4-global-del
remote-option4-global-get
remote-option4-global-get-all
remote-option4-global-set
remote-option6-global-del
remote-option6-global-get
remote-option6-global-get-all
remote-option6-global-set
remote-server4-del
remote-server4-get
remote-server4-get-all
remote-server4-set
remote-server6-del
remote-server6-get
remote-server6-get-all
remote-server6-set
remote-subnet4-del-by-id
remote-subnet4-del-by-prefix
remote-subnet4-get-by-id
remote-subnet4-get-by-prefix
remote-subnet4-list
remote-subnet4-set
remote-subnet6-del-by-id
remote-subnet6-del-by-prefix
remote-subnet6-get-by-id
remote-subnet6-get-by-prefix
remote-subnet6-list
remote-subnet6-set
reservation-add
reservation-del
reservation-get
reservation-get-all
reservation-get-page
shutdown
stat-lease4-get
stat-lease6-get
statistic-get
statistic-get-all
statistic-remove
statistic-remove-all
statistic-reset
statistic-reset-all
subnet4-add
subnet4-del
subnet4-get
subnet4-list
subnet6-add
subnet6-del
subnet6-get
subnet6-list
version-get

View File

@@ -0,0 +1,44 @@
#!/bin/bash
# This script generates API documentation templates.
# Usage:
#
# ./generate-templates file
#
# File is expected to have a list of commands, one per line.
# The templates will be created in api/ directory.
if (( $# != 1 )); then
echo "Usage: ./generate-templates file"
echo
echo "File specifies a plain text file with each line having name of a command"
exit
fi
mkdir -p api/
while read -r CMD; do
F=api/$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 " \"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 resposne syntax.\"" >> $F
echo "}" >> $F
echo "$CMD generated."
done < $1

View File

@@ -73,6 +73,7 @@ exclude_patterns = [
# included files need to be excluded to avoid duplicate labels
'arm/hooks-class-cmds.rst',
'arm/hooks-cb-cmds.rst',
'arm/config-backend.rst',
'arm/hooks-ha.rst',
'arm/hooks-host-cache.rst',
'arm/hooks-lease-cmds.rst',

View File

@@ -8,9 +8,6 @@
See the COPYRIGHT file distributed with this work for additional
information regarding copyright ownership.
.. highlight: console
.. kea-admin:
kea-admin - Shell script for managing Kea databases
---------------------------------------------------

View File

@@ -8,9 +8,6 @@
See the COPYRIGHT file distributed with this work for additional
information regarding copyright ownership.
.. highlight: console
.. kea-ctrl-agent:
kea-ctrl-agent - Control Agent process in Kea
---------------------------------------------

View File

@@ -8,9 +8,6 @@
See the COPYRIGHT file distributed with this work for additional
information regarding copyright ownership.
.. highlight: console
.. kea-dhcp-ddns:
kea-dhcp-ddns - DHCP-DDNS process in Kea
----------------------------------------

View File

@@ -8,9 +8,6 @@
See the COPYRIGHT file distributed with this work for additional
information regarding copyright ownership.
.. highlight: console
.. kea-dhcp4:
kea-dhcp4 - DHCPv4 server in Kea
--------------------------------

View File

@@ -8,9 +8,6 @@
See the COPYRIGHT file distributed with this work for additional
information regarding copyright ownership.
.. highlight: console
.. kea-dhcp6:
kea-dhcp6 - DHCPv6 server in Kea
--------------------------------

View File

@@ -8,9 +8,6 @@
See the COPYRIGHT file distributed with this work for additional
information regarding copyright ownership.
.. highlight: console
.. kea-lfc:
kea-lfc - Lease File Cleanup process in Kea
-------------------------------------------

View File

@@ -8,9 +8,6 @@
See the COPYRIGHT file distributed with this work for additional
information regarding copyright ownership.
.. highlight: console
.. kea-netconf:
kea-netconf - NETCONF agent for Kea environment
-----------------------------------------------

View File

@@ -8,9 +8,6 @@
See the COPYRIGHT file distributed with this work for additional
information regarding copyright ownership.
.. highlight: console
.. kea-shell:
kea-shell - Text client for Control Agent process
-------------------------------------------------

View File

@@ -8,9 +8,6 @@
See the COPYRIGHT file distributed with this work for additional
information regarding copyright ownership.
.. highlight: console
.. _keactrl:
keactrl - Shell script for managing Kea
---------------------------------------

View File

@@ -8,9 +8,6 @@
See the COPYRIGHT file distributed with this work for additional
information regarding copyright ownership.
.. highlight: console
.. _perfdhcp:
perfdhcp - DHCP benchmarking tool
---------------------------------