[kea-dev] Building KEA on OpenBSD

Marcin Siodelski marcin at isc.org
Mon Dec 7 13:00:31 UTC 2015


Patrik,

Thanks for your interest in Kea and your effort to create OpenBSD port
for it.

Please see my responses inline.

On 06.12.2015 17:36, Patrik Lundin wrote:
> Hello,
> 
> I am working on a OpenBSD port for KEA 0.9.2 and I have some questions.
> 
> First of all, running tests currently fail, however it seems to be a
> problem with the tests rather than the code being tested:
> ===
> START TEST keactrl.start_all_servers_no_verbose_test
> Creating Kea configuration file: /home/usr/ports/pobj/kea-0.9.2/kea-0.9.2/src/bin/keactrl/tests/test_config.json.
> Creating keactrl configuration file: /home/usr/ports/pobj/kea-0.9.2/kea-0.9.2/src/bin/keactrl/tests/keactrl_test.conf.
> Kea log will be stored in /home/usr/ports/pobj/kea-0.9.2/kea-0.9.2/src/bin/keactrl/tests/test.log.
> Starting Kea: /home/usr/ports/pobj/kea-0.9.2/kea-0.9.2/src/bin/keactrl/keactrl start -c /home/usr/ports/pobj/kea-0.9.2/kea-0.9.2/src/bin/keactrl/tests/keactrl_test.conf -s all
> INFO/keactrl: Starting kea-dhcp4 -c /home/usr/ports/pobj/kea-0.9.2/kea-0.9.2/src/bin/keactrl/tests/test_config.json
> INFO/keactrl: Starting kea-dhcp6 -c /home/usr/ports/pobj/kea-0.9.2/kea-0.9.2/src/bin/keactrl/tests/test_config.json
> INFO/keactrl: Starting kea-dhcp-ddns -c /home/usr/ports/pobj/kea-0.9.2/kea-0.9.2/src/bin/keactrl/tests/test_config.json
> INFO/test_lib: wait_for_message DHCP6_CONFIG_COMPLETE: .
> INFO/test_lib: wait_for_message DHCP4_CONFIG_COMPLETE: .
> INFO/test_lib: wait_for_message DCTL_CONFIG_COMPLETE: ..
> Stopping Kea: /home/usr/ports/pobj/kea-0.9.2/kea-0.9.2/src/bin/keactrl/keactrl stop  -c /home/usr/ports/pobj/kea-0.9.2/kea-0.9.2/src/bin/keactrl/tests/keactrl_test.conf
> INFO/keactrl: Stopping kea-dhcp4...
> INFO/keactrl: Stopping kea-dhcp6...
> INFO/keactrl: Stopping kea-dhcp-ddns...
> INFO/test_lib: wait_for_message DHCP6_SHUTDOWN: .
> INFO/test_lib: wait_for_message DHCP4_SHUTDOWN: .
> INFO/test_lib: wait_for_message DHCP_DDNS_SHUTDOWN: .
> INFO/test_lib: wait_for_server_down kea-dhcp: ......
> Assertion failure: 1 != 0, for val1=1, val2=0
> Expected wait_for_server_down return 1, returned 0
> Log file dump:
> 2015-12-06 17:03:58.913 INFO  [kea-dhcp4.dhcp4/17706] DHCP4_STARTING Kea DHCPv4 server version 0.9.2 starting
> 2015-12-06 17:03:58.915 INFO  [kea-dhcp4.dhcpsrv/17706] DHCPSRV_CFGMGR_SOCKET_TYPE_DEFAULT "dhcp-socket-type" not specified , using default socket type raw
> 2015-12-06 17:03:58.915 INFO  [kea-dhcp4.dhcp4/17706] DHCP4_CONFIG_NEW_SUBNET a new subnet has been added to configuration: 10.0.0.0/24 with params: t1=1000, t2=2000, valid-lifetime=4000
> 2015-12-06 17:03:58.916 INFO  [kea-dhcp4.dhcpsrv/17706] DHCPSRV_MEMFILE_DB opening memory file lease database: persist=false type=memfile universe=4
> 2015-12-06 17:03:58.916 WARN  [kea-dhcp4.dhcpsrv/17706] DHCPSRV_MEMFILE_NO_STORAGE running in non-persistent mode, leases will be lost after restart
> 2015-12-06 17:03:58.916 INFO  [kea-dhcp4.dhcp4/17706] DHCP4_CONFIG_COMPLETE DHCPv4 server has completed configuration: added IPv4 subnets: 1; DDNS: disabled
> 2015-12-06 17:03:58.916 WARN  [kea-dhcp4.dhcpsrv/17706] DHCPSRV_NO_SOCKETS_OPEN no interface configured to listen to DHCP traffic
> 2015-12-06 17:03:58.916 INFO  [kea-dhcp4.dhcp4/17706] DHCP4_STARTED Kea DHCPv4 server version 0.9.2 started
> 2015-12-06 17:03:58.939 INFO  [kea-dhcp6.dhcp6/2353] DHCP6_STARTING Kea DHCPv6 server version 0.9.2 starting
> 2015-12-06 17:03:58.941 INFO  [kea-dhcp6.dhcp6/2353] DHCP6_CONFIG_NEW_SUBNET a new subnet has been added to configuration: 2001:db8:1::/64 with params t1=1000, t2=2000, preferred-lifetime=3000, valid-lifetime=4000, rapid-commit is disabled
> 2015-12-06 17:03:58.942 INFO  [kea-dhcp6.dhcpsrv/2353] DHCPSRV_MEMFILE_DB opening memory file lease database: persist=false type=memfile universe=6
> 2015-12-06 17:03:58.942 WARN  [kea-dhcp6.dhcpsrv/2353] DHCPSRV_MEMFILE_NO_STORAGE running in non-persistent mode, leases will be lost after restart
> 2015-12-06 17:03:58.942 INFO  [kea-dhcp6.dhcp6/2353] DHCP6_CONFIG_COMPLETE DHCPv6 server has completed configuration: added IPv6 subnets: 1; DDNS: disabled
> 2015-12-06 17:03:58.942 WARN  [kea-dhcp6.dhcpsrv/2353] DHCPSRV_NO_SOCKETS_OPEN no interface configured to listen to DHCP traffic
> 2015-12-06 17:03:58.942 INFO  [kea-dhcp6.dhcp6/2353] DHCP6_STARTED Kea DHCPv6 server version 0.9.2 started
> 2015-12-06 17:03:58.987 INFO  [kea-dhcp-ddns.dhcpddns/7216] DHCP_DDNS_STARTING DHCP-DDNS starting, pid: 7216, version: 0.9.2
> 2015-12-06 17:03:58.987 INFO  [kea-dhcp-ddns.dhcpddns/7216] DCTL_CONFIG_COMPLETE server has completed configuration: listening on 127.0.0.1, port 53001, using UDP
> 2015-12-06 17:03:58.988 INFO  [kea-dhcp-ddns.dhcpddns/7216] DHCP_DDNS_STARTED Kea DHCP-DDNS server version 0.9.2 started
> 2015-12-06 17:04:03.065 INFO  [kea-dhcp4.dhcp4/17706] DHCP4_SHUTDOWN server shutdown
> 2015-12-06 17:04:03.079 INFO  [kea-dhcp6.dhcp6/2353] DHCP6_SHUTDOWN server shutdown
> 2015-12-06 17:04:03.099 INFO  [kea-dhcp-ddns.dhcpddns/7216] DHCP_DDNS_SHUTDOWN DHCP-DDNS has shut down
> FAILED keactrl.start_all_servers_no_verbose_test
> 
> *** Error 1 in src/bin/keactrl/tests (Makefile:681 'check-local')
> *** Error 1 in src/bin/keactrl/tests (Makefile:551 'check-am')
> *** Error 1 in src/bin/keactrl/tests (Makefile:428 'check-recursive')
> *** Error 1 in src/bin/keactrl (Makefile:550 'check-recursive')
> *** Error 1 in src/bin/keactrl (Makefile:674 'check')
> *** Error 1 in src/bin (Makefile:420 'check-recursive')
> *** Error 1 in src (Makefile:423 'check-recursive')
> *** Error 1 in /home/usr/ports/pobj/kea-0.9.2/kea-0.9.2 (Makefile:880 'check-recursive')
> *** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2804 '/usr/ports/pobj/kea-0.9.2/.test_done')
> *** Error 1 in /usr/ports/net/kea (/usr/ports/infrastructure/mk/bsd.port.mk:2491 'test')
> ===
> 
> The functions involved are defined in src/lib/testutils/dhcp_test_lib.sh.
> 
> It fails because "wait_for_server_down kea-dhcp" never thinks the
> processes are gone. The problem is that wait_for_server_down() calls
> "get_pids ${proc_name}", and get_pids() in turn does this:
> ===
> _GET_PIDS=$( ps axwwo pid,command | grep ${proc_name} | grep -v grep | awk '{print $1}' )
> ===
> 
> The "command" keyword includes arguments, and if i run "ps axwwo
> pid,command | grep kea-dhcp" while wait_for_server_down() is timing out,
> the following is shown:
> ===
> 15869 make mkdir_p=mkdir -p -- LIBTOOL=/usr/bin/libtool LIBkea-asiodns_LTVERSION=-version-info 0:0:0 libkea_asiodns_ltversion=0.0 LIBkea-asiolink_LTVERSION=-version-info 0:0:0 libkea_asiolink_ltversion=0.0 LIBkea-cc_LTVERSION=-version-info 0:0:0 libkea_cc_ltversion=0.0 LIBkea-cfgclient_LTVERSION=-version-info 0:0:0 libkea_cfgclient_ltversion=0.0 LIBkea-cryptolink_LTVERSION=-version-info 0:0:0 libkea_cryptolink_ltversion=0.0 LIBkea-dhcp++_LTVERSION=-version-info 0:0:0 libkea_dhcp___ltversion=0.0 LIBkea-dhcp_ddns_LTVERSION=-version-info 0:0:0 libkea_dhcp_ddns_ltversion=0.0 LIBkea-dhcpsrv_LTVERSION=-version-info 0:0:0 libkea_dhcpsrv_ltversion=0.0 LIBkea-dns++_LTVERSION=-version-info 0:0:0 libkea_dns___ltversion=0.0 LIBkea-exceptions_LTVERSION=-version-info 0:0:0 libkea_exceptions_ltversion=0.0 LIBkea-hooks_LTVERSION=-version-info 0:0:0 libkea_hooks_ltversion=0.0 LIBkea-log_LTVERSION=-version-info 0:0:0 libkea_log_ltversion=0.0 LIBkea-stats_LTVERSION=-version-info 0:0:0 libkea_st
>  ats_ltversion=0.0 LIBkea-threads_LTVERSION=-version-info 0:0:0 libkea_threads_ltversion=0.0 LIBkea-util-io_LTVERSION=-version-info 0:0:0 libkea_util_io_ltversion=0.0 LIBkea-util_LTVERSION=-version-info 0:0:0 libkea_util_ltversion=0.0 SHARED_LIBS_LOG=/usr/ports/pobj/kea-0.9.2/kea-0.9.2/shared_libs.log -f Makefile check
> 18435 /bin/sh -ec cd /usr/ports/pobj/kea-0.9.2/kea-0.9.2 && exec 3>&1 && exit `exec 4>&1 1>&3;  (exec; set +e; /usr/bin/env -i CONFIG_SITE='/usr/ports/pobj/kea-0.9.2/config.site' PORTSDIR="/usr/ports" LIBTOOL="/usr/bin/libtool"  LIBkea-asiodns_LTVERSION='-version-info 0:0:0' libkea_asiodns_ltversion=0.0 LIBkea-asiolink_LTVERSION='-version-info 0:0:0' libkea_asiolink_ltversion=0.0 LIBkea-cc_LTVERSION='-version-info 0:0:0' libkea_cc_ltversion=0.0 LIBkea-cfgclient_LTVERSION='-version-info 0:0:0' libkea_cfgclient_ltversion=0.0 LIBkea-cryptolink_LTVERSION='-version-info 0:0:0' libkea_cryptolink_ltversion=0.0 LIBkea-dhcp++_LTVERSION='-version-info 0:0:0' libkea_dhcp___ltversion=0.0 LIBkea-dhcp_ddns_LTVERSION='-version-info 0:0:0' libkea_dhcp_ddns_ltversion=0.0 LIBkea-dhcpsrv_LTVERSION='-version-info 0:0:0' libkea_dhcpsrv_ltversion=0.0 LIBkea-dns++_LTVERSION='-version-info 0:0:0' libkea_dns___ltversion=0.0 LIBkea-exceptions_LTVERSION='-version-info 0:0:0' libkea_exceptions_ltversion
>  =0.0 LIBkea-hooks_LTVERSION='-version-info 0:0:0' libkea_hooks_ltversion=0.0 LIBkea-log_LTVERSION='-version-info 0:0:0' libkea_log_ltversion=0.0 LIBkea-stats_LTVERSION='-version-info 0:0:0' libkea_stats_ltversion=0.0 LIBkea-threads_LTVERSION='-version-info 0:0:0' libkea_threads_ltversion=0.0 LIBkea-util-io_LTVERSION='-version-info 0:0:0' libkea_util_io_ltversion=0.0 LIBkea-util_LTVERSION='-version-info 0:0:0' libkea_util_ltversion=0.0 PATH='/usr/ports/pobj/kea-0.9.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin:/usr/X11R6/bin' PREFIX='/usr/local'  LOCALBASE='/usr/local' DEPBASE='/usr/local' X11BASE='/usr/X11R6'  CFLAGS='-O2 -pipe'  TRUEPREFIX='/usr/local' DESTDIR=''  HOME='/kea-0.9.2_writes_to_HOME' COMPILER_VERSION=gcc4  PICFLAG="-fpic" ASPICFLAG=  BINGRP=bin BINOWN=root BINMODE=755 NONBINMODE=644  DIRMODE=755  INSTALL_COPY=-c INSTALL_STRIP=-s  MANGRP=bin MANOWN=root MANMODE=644 BSD_INSTALL_PROGRAM="/usr/ports/pobj/kea-0.9.2/bin/install -c -s  -m 755"  BSD
>  _INSTALL_SCRIPT="/usr/ports/pobj/kea-0.9.2/bin/install -c  -m 755"  BSD_INSTALL_DATA="/usr/ports/pobj/kea-0.9.2/bin/install -c  -m 644"  BSD_INSTALL_MAN="/usr/ports/pobj/kea-0.9.2/bin/install -c  -m 644"  BSD_INSTALL_PROGRAM_DIR="/usr/ports/pobj/kea-0.9.2/bin/install -d  -m 755"  BSD_INSTALL_SCRIPT_DIR="/usr/ports/pobj/kea-0.9.2/bin/install -d  -m 755"  BSD_INSTALL_DATA_DIR="/usr/ports/pobj/kea-0.9.2/bin/install -d  -m 755"  BSD_INSTALL_MAN_DIR="/usr/ports/pobj/kea-0.9.2/bin/install -d  -m 755"  make  mkdir_p='mkdir -p --' LIBTOOL="/usr/bin/libtool"  LIBkea-asiodns_LTVERSION='-version-info 0:0:0' libkea_asiodns_ltversion=0.0 LIBkea-asiolink_LTVERSION='-version-info 0:0:0' libkea_asiolink_ltversion=0.0 LIBkea-cc_LTVERSION='-version-info 0:0:0' libkea_cc_ltversion=0.0 LIBkea-cfgclient_LTVERSION='-version-info 0:0:0' libkea_cfgclient_ltversion=0.0 LIBkea-cryptolink_LTVERSION='-version-info 0:0:0' libkea_cryptolink_ltversion=0.0 LIBkea-dhcp++_LTVERSION='-version-info 0:0:0' libk
>  ea_dhcp___ltversion=0.0 LIBkea-dhcp_ddns_LTVERSION='-version-info 0:0:0' libkea_dhcp_ddns_ltversion=0.0 LIBkea-dhcpsrv_LTVERSION='-version-info 0:0:0' libkea_dhcpsrv_ltversion=0.0 LIBkea-dns++_LTVERSION='-version-info 0:0:0' libkea_dns___ltversion=0.0 LIBkea-exceptions_LTVERSION='-version-info 0:0:0' libkea_exceptions_ltversion=0.0 LIBkea-hooks_LTVERSION='-version-info 0:0:0' libkea_hooks_ltversion=0.0 LIBkea-log_LTVERSION='-version-info 0:0:0' libkea_log_ltversion=0.0 LIBkea-stats_LTVERSION='-version-info 0:0:0' libkea_stats_ltversion=0.0 LIBkea-threads_LTVERSION='-version-info 0:0:0' libkea_threads_ltversion=0.0 LIBkea-util-io_LTVERSION='-version-info 0:0:0' libkea_util_io_ltversion=0.0 LIBkea-util_LTVERSION='-version-info 0:0:0' libkea_util_ltversion=0.0 SHARED_LIBS_LOG=/usr/ports/pobj/kea-0.9.2/kea-0.9.2/shared_libs.log  -f Makefile check;  echo $? >&4) 2>&1 | tee /usr/ports/pobj/kea-0.9.2/test.log`
> 29554 /bin/sh -ec cd /usr/ports/pobj/kea-0.9.2/kea-0.9.2 && exec 3>&1 && exit `exec 4>&1 1>&3;  (exec; set +e; /usr/bin/env -i CONFIG_SITE='/usr/ports/pobj/kea-0.9.2/config.site' PORTSDIR="/usr/ports" LIBTOOL="/usr/bin/libtool"  LIBkea-asiodns_LTVERSION='-version-info 0:0:0' libkea_asiodns_ltversion=0.0 LIBkea-asiolink_LTVERSION='-version-info 0:0:0' libkea_asiolink_ltversion=0.0 LIBkea-cc_LTVERSION='-version-info 0:0:0' libkea_cc_ltversion=0.0 LIBkea-cfgclient_LTVERSION='-version-info 0:0:0' libkea_cfgclient_ltversion=0.0 LIBkea-cryptolink_LTVERSION='-version-info 0:0:0' libkea_cryptolink_ltversion=0.0 LIBkea-dhcp++_LTVERSION='-version-info 0:0:0' libkea_dhcp___ltversion=0.0 LIBkea-dhcp_ddns_LTVERSION='-version-info 0:0:0' libkea_dhcp_ddns_ltversion=0.0 LIBkea-dhcpsrv_LTVERSION='-version-info 0:0:0' libkea_dhcpsrv_ltversion=0.0 LIBkea-dns++_LTVERSION='-version-info 0:0:0' libkea_dns___ltversion=0.0 LIBkea-exceptions_LTVERSION='-version-info 0:0:0' libkea_exceptions_ltversion
>  =0.0 LIBkea-hooks_LTVERSION='-version-info 0:0:0' libkea_hooks_ltversion=0.0 LIBkea-log_LTVERSION='-version-info 0:0:0' libkea_log_ltversion=0.0 LIBkea-stats_LTVERSION='-version-info 0:0:0' libkea_stats_ltversion=0.0 LIBkea-threads_LTVERSION='-version-info 0:0:0' libkea_threads_ltversion=0.0 LIBkea-util-io_LTVERSION='-version-info 0:0:0' libkea_util_io_ltversion=0.0 LIBkea-util_LTVERSION='-version-info 0:0:0' libkea_util_ltversion=0.0 PATH='/usr/ports/pobj/kea-0.9.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin:/usr/X11R6/bin' PREFIX='/usr/local'  LOCALBASE='/usr/local' DEPBASE='/usr/local' X11BASE='/usr/X11R6'  CFLAGS='-O2 -pipe'  TRUEPREFIX='/usr/local' DESTDIR=''  HOME='/kea-0.9.2_writes_to_HOME' COMPILER_VERSION=gcc4  PICFLAG="-fpic" ASPICFLAG=  BINGRP=bin BINOWN=root BINMODE=755 NONBINMODE=644  DIRMODE=755  INSTALL_COPY=-c INSTALL_STRIP=-s  MANGRP=bin MANOWN=root MANMODE=644 BSD_INSTALL_PROGRAM="/usr/ports/pobj/kea-0.9.2/bin/install -c -s  -m 755"  BSD
>  _INSTALL_SCRIPT="/usr/ports/pobj/kea-0.9.2/bin/install -c  -m 755"  BSD_INSTALL_DATA="/usr/ports/pobj/kea-0.9.2/bin/install -c  -m 644"  BSD_INSTALL_MAN="/usr/ports/pobj/kea-0.9.2/bin/install -c  -m 644"  BSD_INSTALL_PROGRAM_DIR="/usr/ports/pobj/kea-0.9.2/bin/install -d  -m 755"  BSD_INSTALL_SCRIPT_DIR="/usr/ports/pobj/kea-0.9.2/bin/install -d  -m 755"  BSD_INSTALL_DATA_DIR="/usr/ports/pobj/kea-0.9.2/bin/install -d  -m 755"  BSD_INSTALL_MAN_DIR="/usr/ports/pobj/kea-0.9.2/bin/install -d  -m 755"  make  mkdir_p='mkdir -p --' LIBTOOL="/usr/bin/libtool"  LIBkea-asiodns_LTVERSION='-version-info 0:0:0' libkea_asiodns_ltversion=0.0 LIBkea-asiolink_LTVERSION='-version-info 0:0:0' libkea_asiolink_ltversion=0.0 LIBkea-cc_LTVERSION='-version-info 0:0:0' libkea_cc_ltversion=0.0 LIBkea-cfgclient_LTVERSION='-version-info 0:0:0' libkea_cfgclient_ltversion=0.0 LIBkea-cryptolink_LTVERSION='-version-info 0:0:0' libkea_cryptolink_ltversion=0.0 LIBkea-dhcp++_LTVERSION='-version-info 0:0:0' libk
>  ea_dhcp___ltversion=0.0 LIBkea-dhcp_ddns_LTVERSION='-version-info 0:0:0' libkea_dhcp_ddns_ltversion=0.0 LIBkea-dhcpsrv_LTVERSION='-version-info 0:0:0' libkea_dhcpsrv_ltversion=0.0 LIBkea-dns++_LTVERSION='-version-info 0:0:0' libkea_dns___ltversion=0.0 LIBkea-exceptions_LTVERSION='-version-info 0:0:0' libkea_exceptions_ltversion=0.0 LIBkea-hooks_LTVERSION='-version-info 0:0:0' libkea_hooks_ltversion=0.0 LIBkea-log_LTVERSION='-version-info 0:0:0' libkea_log_ltversion=0.0 LIBkea-stats_LTVERSION='-version-info 0:0:0' libkea_stats_ltversion=0.0 LIBkea-threads_LTVERSION='-version-info 0:0:0' libkea_threads_ltversion=0.0 LIBkea-util-io_LTVERSION='-version-info 0:0:0' libkea_util_io_ltversion=0.0 LIBkea-util_LTVERSION='-version-info 0:0:0' libkea_util_ltversion=0.0 SHARED_LIBS_LOG=/usr/ports/pobj/kea-0.9.2/kea-0.9.2/shared_libs.log  -f Makefile check;  echo $? >&4) 2>&1 | tee /usr/ports/pobj/kea-0.9.2/test.log`
> 18781 /bin/sh -ec cd /usr/ports/pobj/kea-0.9.2/kea-0.9.2 && exec 3>&1 && exit `exec 4>&1 1>&3;  (exec; set +e; /usr/bin/env -i CONFIG_SITE='/usr/ports/pobj/kea-0.9.2/config.site' PORTSDIR="/usr/ports" LIBTOOL="/usr/bin/libtool"  LIBkea-asiodns_LTVERSION='-version-info 0:0:0' libkea_asiodns_ltversion=0.0 LIBkea-asiolink_LTVERSION='-version-info 0:0:0' libkea_asiolink_ltversion=0.0 LIBkea-cc_LTVERSION='-version-info 0:0:0' libkea_cc_ltversion=0.0 LIBkea-cfgclient_LTVERSION='-version-info 0:0:0' libkea_cfgclient_ltversion=0.0 LIBkea-cryptolink_LTVERSION='-version-info 0:0:0' libkea_cryptolink_ltversion=0.0 LIBkea-dhcp++_LTVERSION='-version-info 0:0:0' libkea_dhcp___ltversion=0.0 LIBkea-dhcp_ddns_LTVERSION='-version-info 0:0:0' libkea_dhcp_ddns_ltversion=0.0 LIBkea-dhcpsrv_LTVERSION='-version-info 0:0:0' libkea_dhcpsrv_ltversion=0.0 LIBkea-dns++_LTVERSION='-version-info 0:0:0' libkea_dns___ltversion=0.0 LIBkea-exceptions_LTVERSION='-version-info 0:0:0' libkea_exceptions_ltversion
>  =0.0 LIBkea-hooks_LTVERSION='-version-info 0:0:0' libkea_hooks_ltversion=0.0 LIBkea-log_LTVERSION='-version-info 0:0:0' libkea_log_ltversion=0.0 LIBkea-stats_LTVERSION='-version-info 0:0:0' libkea_stats_ltversion=0.0 LIBkea-threads_LTVERSION='-version-info 0:0:0' libkea_threads_ltversion=0.0 LIBkea-util-io_LTVERSION='-version-info 0:0:0' libkea_util_io_ltversion=0.0 LIBkea-util_LTVERSION='-version-info 0:0:0' libkea_util_ltversion=0.0 PATH='/usr/ports/pobj/kea-0.9.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin:/usr/X11R6/bin' PREFIX='/usr/local'  LOCALBASE='/usr/local' DEPBASE='/usr/local' X11BASE='/usr/X11R6'  CFLAGS='-O2 -pipe'  TRUEPREFIX='/usr/local' DESTDIR=''  HOME='/kea-0.9.2_writes_to_HOME' COMPILER_VERSION=gcc4  PICFLAG="-fpic" ASPICFLAG=  BINGRP=bin BINOWN=root BINMODE=755 NONBINMODE=644  DIRMODE=755  INSTALL_COPY=-c INSTALL_STRIP=-s  MANGRP=bin MANOWN=root MANMODE=644 BSD_INSTALL_PROGRAM="/usr/ports/pobj/kea-0.9.2/bin/install -c -s  -m 755"  BSD
>  _INSTALL_SCRIPT="/usr/ports/pobj/kea-0.9.2/bin/install -c  -m 755"  BSD_INSTALL_DATA="/usr/ports/pobj/kea-0.9.2/bin/install -c  -m 644"  BSD_INSTALL_MAN="/usr/ports/pobj/kea-0.9.2/bin/install -c  -m 644"  BSD_INSTALL_PROGRAM_DIR="/usr/ports/pobj/kea-0.9.2/bin/install -d  -m 755"  BSD_INSTALL_SCRIPT_DIR="/usr/ports/pobj/kea-0.9.2/bin/install -d  -m 755"  BSD_INSTALL_DATA_DIR="/usr/ports/pobj/kea-0.9.2/bin/install -d  -m 755"  BSD_INSTALL_MAN_DIR="/usr/ports/pobj/kea-0.9.2/bin/install -d  -m 755"  make  mkdir_p='mkdir -p --' LIBTOOL="/usr/bin/libtool"  LIBkea-asiodns_LTVERSION='-version-info 0:0:0' libkea_asiodns_ltversion=0.0 LIBkea-asiolink_LTVERSION='-version-info 0:0:0' libkea_asiolink_ltversion=0.0 LIBkea-cc_LTVERSION='-version-info 0:0:0' libkea_cc_ltversion=0.0 LIBkea-cfgclient_LTVERSION='-version-info 0:0:0' libkea_cfgclient_ltversion=0.0 LIBkea-cryptolink_LTVERSION='-version-info 0:0:0' libkea_cryptolink_ltversion=0.0 LIBkea-dhcp++_LTVERSION='-version-info 0:0:0' libk
>  ea_dhcp___ltversion=0.0 LIBkea-dhcp_ddns_LTVERSION='-version-info 0:0:0' libkea_dhcp_ddns_ltversion=0.0 LIBkea-dhcpsrv_LTVERSION='-version-info 0:0:0' libkea_dhcpsrv_ltversion=0.0 LIBkea-dns++_LTVERSION='-version-info 0:0:0' libkea_dns___ltversion=0.0 LIBkea-exceptions_LTVERSION='-version-info 0:0:0' libkea_exceptions_ltversion=0.0 LIBkea-hooks_LTVERSION='-version-info 0:0:0' libkea_hooks_ltversion=0.0 LIBkea-log_LTVERSION='-version-info 0:0:0' libkea_log_ltversion=0.0 LIBkea-stats_LTVERSION='-version-info 0:0:0' libkea_stats_ltversion=0.0 LIBkea-threads_LTVERSION='-version-info 0:0:0' libkea_threads_ltversion=0.0 LIBkea-util-io_LTVERSION='-version-info 0:0:0' libkea_util_io_ltversion=0.0 LIBkea-util_LTVERSION='-version-info 0:0:0' libkea_util_ltversion=0.0 SHARED_LIBS_LOG=/usr/ports/pobj/kea-0.9.2/kea-0.9.2/shared_libs.log  -f Makefile check;  echo $? >&4) 2>&1 | tee /usr/ports/pobj/kea-0.9.2/test.log`
> ===
> 
> There are several "kea-dhcp" occurances in those arguments which has
> nothing to do with the deamons being looked for. Replacing "ps" with
> "pgrep" solves the problem and is a bit easier on the eyes, turning:
> ===
> _GET_PIDS=$( ps axwwo pid,command | grep ${proc_name} | grep -v grep | awk '{print $1}' )
> ===
> ...into:
> ===
> _GET_PIDS=$( pgrep ${proc_name} )
> ===
> 
> After doing this the tests succeed for me. Are there any platforms you
> are targeting that dont have pgrep available by default?
> 

I have checked some boxes running Linux, BSD and OS-X, and they do seem
to support 'pgrep'. So, I personally don't see issue with switching to
'pgrep'. I will file a ticket and we'll discuss it on our team meeting
next Wednesday.


> Moving on, I notice there are some warnings thrown by the build.
> The ones that makes me the most curious is the use of possibly weak random() calls:
> ===
> dhcp6_srv.cc:(.gnu.linkonce.t._ZN3isc4util10fillRandomIPhEEvT_S3_+0x12): warning: warning: random() may return deterministic values, is that what you want?
> test_control.cc:(.text+0xb787): warning: warning: rand() may return deterministic values, is that what you want?
> ===
> 

Current use cases for random() seem to be:
- Client Identifier generation for DHCPv6
- Randomizing packet selection from the storage maintained by perfdhcp
- Unit tests

I guess, none of those use cases require non-deterministic
randomization. However, please note that we set a current-time based
seed before randomization, so this provides sufficient mechanism for the
current use cases.

I also don't think that switching to some other randomization mechanism
would pose any issue for those use cases. But, it would add some
complexity to the configure code.

We do have a ticket: http://kea.isc.org/ticket/3678, which also refers
to http://kea.isc.org/ticket/3474 for an alternative solution. They both
suggest to not use random(), so at some point we should take care of that.

However, we have treated this issue as a 'best practice' type of thing
and thus it was not on our priority list. If this build warning causes
some trouble for you integrating Kea as an OpenBSD package, please let
me know and we'll discuss elevating priority for this work.


> I started looking at the first one, thinking a suitable solution would
> be to make the configure script check for the availability of arc4random() and
> arc4random_uniform(), using these instead if available.
> 
> However, reading the comments regarding fillRandom() in
> src/lib/util/range_utilities.h it appears the function actually wants to
> support deterministic results. Is this still true? Would I be causing
> more harm than good if I was to start using always-random functions
> there?
> 
> Finally, just to throw it out there, there are warnings regarding usage
> of potentially unsafe functions in some places, not sure what your
> stance are regarding these:
> ===
> .libs/libkea-asiolink.so.0.0: warning: warning: strcat() is almost always misused, please use strlcat()
> .libs/libkea-asiolink.so.0.0: warning: warning: sprintf() is often misused, please use snprintf()
> .libs/libkea-asiolink.so.0.0: warning: warning: strcat() is almost always misused, please use strlcat()
> .libs/libkea-asiolink.so.0.0: warning: warning: sprintf() is often misused, please use snprintf()
> .libs/libkea-asiodns.so.0.0: warning: warning: strcat() is almost always misused, please use strlcat()
> .libs/libkea-asiodns.so.0.0: warning: warning: sprintf() is often misused, please use snprintf()
> .libs/libkea-asiolink.so.0.0: warning: warning: strcat() is almost always misused, please use strlcat()
> .libs/libkea-asiolink.so.0.0: warning: warning: sprintf() is often misused, please use snprintf()
> .libs/libkea-asiolink.so.0.0: warning: warning: strcat() is almost always misused, please use strlcat()
> .libs/libkea-asiolink.so.0.0: warning: warning: sprintf() is often misused, please use snprintf()
> ===
> 

Current code (which will be released as Kea-1.0.0-beta this week)
doesn't use strcat or sprintf. IIRC, in 0.9.2 we were using it
indirectly with the ASIO implementation (in ext/) which we dragged with
Kea. In 1.0.0 we rely on the boost::asio implementation, which should be
installed on the system building Kea. The ASIO implementation has been
removed from the Kea package. We don't have any plans to patch 'strcat'
and 'sprintf' use in 0.9.2. The issue should go away with 1.0.


> I hope any of these findings are of interest for you :).
> 

We appreciate all feedback about Kea. I'd also like to encourage you to
try Kea 1.0.0-Beta which should be released this week. The final release
is planned for the end of December.


Thanks again for your efforts,

Marcin Siodelski
DHCP Software Engineer
ISC


More information about the kea-dev mailing list