#!/bin/sh set -e # kea's `-t` validator requires the control-socket parent dir (mirrors kea.init). mkdir -p -m 0750 /var/run/kea case "$1" in kea-dhcp4) # Validate the shipped DHCPv4 config; the QEMU mips netlink path # aborts after parsing succeeds, so tolerate that exact signature. if ! out=$(kea-dhcp4 -t /etc/kea/kea-dhcp4.conf 2>&1); then case "$out" in *"Failed to parse RTATTR in netlink message"*) ;; *) printf '%s\n' "$out" >&2; exit 1 ;; esac fi ;; kea-dhcp6) # Same as kea-dhcp4 but for the DHCPv6 server config / parser; # same QEMU netlink caveat applies. if ! out=$(kea-dhcp6 -t /etc/kea/kea-dhcp6.conf 2>&1); then case "$out" in *"Failed to parse RTATTR in netlink message"*) ;; *) printf '%s\n' "$out" >&2; exit 1 ;; esac fi ;; kea-dhcp-ddns) # Validate the shipped DDNS config; exercises the D2 parser # and its TSIG / DNS-update library closure. kea-dhcp-ddns -t /etc/kea/kea-dhcp-ddns.conf ;; kea-ctrl) # Exercise the ctrl-agent config parser + keactrl wrapper; the # config requires an auth-password file so satisfy it with a stub. echo test >/etc/kea/kea-api-password kea-ctrl-agent -t /etc/kea/kea-ctrl-agent.conf rm -f /etc/kea/kea-api-password keactrl -v >/dev/null ;; kea-admin) # kea-admin sources admin-utils.sh before usage(); --help proves # both the script and helper are packaged. -h is reserved in 3.0.x. kea-admin --help >/dev/null ;; kea-shell) # Python wrapper that imports kea_conn / kea_connector3; --help # exercises the interpreter, path rewrite and module imports. kea-shell --help >/dev/null ;; kea-lfc) # Exercise kea-lfc's argv parser and its libkea-util / libstdc++ # runtime closure. kea-lfc -h >/dev/null ;; kea-perfdhcp) # Exercise perfdhcp's argv parser; loads the libkea-dhcp / asio # runtime closure used by every kea binary. perfdhcp -h >/dev/null ;; kea-dhcp4-helper) # Pure shell script under /usr/lib/kea/importers/; confirm it # was packaged and is executable. test -x /usr/lib/kea/importers/dhcp4.sh ;; kea-hook-ha) # Hook is a .so loaded by kea-dhcp{4,6}; confirm it was packaged. # Generic ELF / SONAME checks cover its dynamic linkage. test -f /usr/lib/kea/hooks/libdhcp_ha.so ;; kea-hook-lease-cmds) # Same shape as kea-hook-ha. test -f /usr/lib/kea/hooks/libdhcp_lease_cmds.so ;; kea-uci) # UCI integration: config defaults + init script. Confirm both # were packaged at the expected paths. test -f /etc/config/kea test -x /etc/init.d/kea ;; kea-libs) # Pure shared-library subpackage; the generic ELF / SONAME / # linked-libraries checks already cover it. ;; *) echo "test.sh: unknown subpackage '$1' — refusing to silently pass" >&2 echo "test.sh: update net/kea/test.sh to cover this subpackage" >&2 exit 1 ;; esac