diff --git a/AUTHORS b/AUTHORS index c422a81279..45efb9e700 100644 --- a/AUTHORS +++ b/AUTHORS @@ -160,6 +160,9 @@ We have received the following contributions: - Ebben Aries 2017-10: Option length checks improvements for the V-I Vendor Class option + - Ryan Goodfellow (rcgoodfellow) + 2018-01: Fix kea-admin typo breaking lease-dump + Kea uses log4cplus (http://sourceforge.net/projects/log4cplus/) for logging, Boost (http://www.boost.org/) library for almost everything, and can use Botan (http://botan.randombit.net/) or OpenSSL (https://www.openssl.org/) for diff --git a/ChangeLog b/ChangeLog index e4460f7036..20a56252e3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +1358. [build,bug] fdupont + Cassandra build fixes for macOS. + (Trac #5494, git xxx) + +1357. [bug] rcgoodfellow + Fixed bug in kea-admon causing error on lease-dump. + (github #61, git xxx) + 1356. [func] andreipavelQ,tomek The logging configuration is now applied early, which helps seeing errors in case the new configuration is faulty. diff --git a/doc/devel/unit-tests.dox b/doc/devel/unit-tests.dox index 5bf6af9d0c..a1525d691e 100644 --- a/doc/devel/unit-tests.dox +++ b/doc/devel/unit-tests.dox @@ -263,7 +263,24 @@ local all postgres trust @subsection cqlUnitTestsPrerequisites Cassandra database - @todo: Describe steps necessary to set up Cassandra database suitable for running - unittests. + @todo: Describe steps necessary to set up Cassandra database suitable + for running unittests. + It seems this was enough: + + -# Launch cassandra if not running (-f for foreground) + @verbatim + % cassandra -f + @endverbatim + + The tool is cqlsh: + + -# Run the tool + @verbatim + % cqlsh + Connected to Test Cluster at 127.0.0.1:9042. + [cqlsh 5.0.1 | Cassandra 3.11.1 | CQL spec 3.4.4 | Native protocol v4] + Use HELP for help. + cqlsh> @endverbatim\n + */ diff --git a/doc/guide/install.xml b/doc/guide/install.xml index c858cb7f76..5cf88fb8f4 100644 --- a/doc/guide/install.xml +++ b/doc/guide/install.xml @@ -527,7 +527,7 @@ Debian and Ubuntu: "configure" step (see ), the --with-mysql switch should be specified: ./configure [other-options] --with-mysql - If MySQL was not installed in the default location, the location of the MySQL + If MySQL was not installed in the default location, the location of the MySQL configuration program "mysql_config" should be included with the switch, i.e. ./configure [other-options] --with-mysql=path-to-mysql_config @@ -549,7 +549,7 @@ Debian and Ubuntu: "configure" step (see ), the --with-pgsql switch should be specified: ./configure [other-options] --with-pgsql - If PostgreSQL was not installed in the default location, the location of the PostgreSQL + If PostgreSQL was not installed in the default location, the location of the PostgreSQL configuration program "pg_config" should be included with the switch, i.e. ./configure [other-options] --with-pgsql=path-to-pg_config @@ -574,6 +574,7 @@ Debian and Ubuntu: $ git clone https://github.com/datastax/cpp-driver $ cd cpp-driver $ mkdir build +$ cd build $ cmake .. $ make diff --git a/src/bin/admin/admin-utils.sh b/src/bin/admin/admin-utils.sh index 33616d9a90..2a9d4dccf8 100755 --- a/src/bin/admin/admin-utils.sh +++ b/src/bin/admin/admin-utils.sh @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2017 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2014-2018 Internet Systems Consortium, Inc. ("ISC") # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this @@ -141,7 +141,8 @@ cql_execute_script() { cql_version() { version=$(cql_execute "SELECT version, minor FROM schema_version" "$@") - version=$(echo "$version" | grep -A 1 "+" | grep -v "+" | tr -d ' ' | cut -d "|" -f 1-2 --output-delimiter=".") - echo "${version}" - return $? + error=$? + version=$(echo "$version" | grep -A 1 "+" | grep -v "+" | tr -d ' ' | cut -d "|" -f 1-2 | tr "|" ".") + echo "$version" + return $error } diff --git a/src/bin/admin/kea-admin.in b/src/bin/admin/kea-admin.in index 7613dfafa6..4be383ddb4 100644 --- a/src/bin/admin/kea-admin.in +++ b/src/bin/admin/kea-admin.in @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright (C) 2014-2017 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2014-2018 Internet Systems Consortium, Inc. ("ISC") # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this @@ -448,7 +448,7 @@ mysql_dump() { ### Functions used for dump pgsql_dump() { # Check the lease type was given - if [ $dump_type -eq o ]; then + if [ $dump_type -eq 0 ]; then log_error "lease-dump: lease type ( -4 or -6 ) needs to be specified" usage exit 1 @@ -518,11 +518,11 @@ cql_dump() { fi # Parse and display header. - echo "$result" | head -n 2 | tail -n 1 | sed -e 's/\s*//g' | sed -e 's/|/,/g' > $dump_file + echo "$result" | head -n 2 | tail -n 1 | sed -e 's/[[:space:]]*//g' | sed -e 's/|/,/g' > $dump_file # Parse and display contents - done separately from header to allow sorting - # by address. - echo "$result" | tail -n +4 | head -n -2 | sed -e 's/\s*//g' | sed -e 's/|/,/g' | sort -r >> $dump_file + # by address. awk script replaces head -n -2 which is not portable. + echo "$result" | tail -n +4 | awk 'n>=2 { print a[n%2] } { a[n%2]=$0; n=n+1 }' | sed -e 's/[[:space:]]*//g' | sed -e 's/|/,/g' | sort -r >> $dump_file echo lease$dump_type successfully dumped to $dump_file exit 0 diff --git a/src/lib/dhcpsrv/cql_lease_mgr.h b/src/lib/dhcpsrv/cql_lease_mgr.h index f8ffd82d68..5be75b6666 100644 --- a/src/lib/dhcpsrv/cql_lease_mgr.h +++ b/src/lib/dhcpsrv/cql_lease_mgr.h @@ -330,7 +330,7 @@ public: /// /// @throw isc::dhcp::DbOperationError An operation on the open database has /// failed. - virtual bool deleteLease(const isc::asiolink::IOAddress& addr); + virtual bool deleteLease(const isc::asiolink::IOAddress& addr) override; /// @brief Deletes all expired and reclaimed DHCPv4 leases. /// @@ -361,7 +361,7 @@ public: /// /// @param subnet_id identifier of the subnet /// @return number of leases removed. - virtual size_t wipeLeases4(const SubnetID& subnet_id); + virtual size_t wipeLeases4(const SubnetID& subnet_id) override; /// @brief Removed specified IPv6 leases. /// @@ -372,7 +372,7 @@ public: /// /// @param subnet_id identifier of the subnet /// @return number of leases removed. - virtual size_t wipeLeases6(const SubnetID& subnet_id); + virtual size_t wipeLeases6(const SubnetID& subnet_id) override; /// @brief Return backend type /// diff --git a/src/share/database/scripts/cql/dhcpdb_create.cql b/src/share/database/scripts/cql/dhcpdb_create.cql index 2d6ab7d86f..19b128d386 100644 --- a/src/share/database/scripts/cql/dhcpdb_create.cql +++ b/src/share/database/scripts/cql/dhcpdb_create.cql @@ -1,4 +1,4 @@ --- Copyright (C) 2015-2017 Deutsche Telekom AG. +-- Copyright (C) 2015-2018 Deutsche Telekom AG. -- Author: Razvan Becheriu @@ -152,6 +152,8 @@ INSERT INTO lease_hwaddr_source (hwaddr_source, name) VALUES (32, 'HWADDR_SOURCE -- Hardware address extracted from docsis options INSERT INTO lease_hwaddr_source (hwaddr_source, name) VALUES (64, 'HWADDR_SOURCE_DOCSIS_CMTS'); +INSERT INTO lease_hwaddr_source (hwaddr_source, name) VALUES (128, 'HWADDR_SOURCE_DOCSIS_MODEM'); + -- Create table holding mapping of the lease states to their names. -- This is not used in queries from the DHCP server but rather in -- direct queries from the lease database management tools. diff --git a/src/share/database/scripts/cql/dhcpdb_drop.cql b/src/share/database/scripts/cql/dhcpdb_drop.cql index c2833ac922..1b80d3e63c 100644 --- a/src/share/database/scripts/cql/dhcpdb_drop.cql +++ b/src/share/database/scripts/cql/dhcpdb_drop.cql @@ -21,6 +21,8 @@ DROP TABLE IF EXISTS lease_hwaddr_source; DROP TABLE IF EXISTS lease_state; DROP TABLE IF EXISTS schema_version; DROP TABLE IF EXISTS host_reservations; +DROP TABLE IF EXISTS dhcp4_options; +DROP TABLE IF EXISTS dhcp6_options; DROP INDEX IF EXISTS lease4index1; DROP INDEX IF EXISTS lease4index2; diff --git a/tools/Makefile.am b/tools/Makefile.am index 4be133f4a1..b18bd4facd 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -20,6 +20,6 @@ EXTRA_DIST = system_messages # Scripts for Cassandra support. Ultimately those scripts will have to be # incorporated in DataStax cpp-driver source tree, but until that happens, # let's keep them in Kea rpo -EXTRA_DIST += cql_config cql_config_defines.sh +EXTRA_DIST += cql_config cql_config_defines.sh.sample endif diff --git a/tools/cql_config b/tools/cql_config index 19a426a46e..fba61640aa 100755 --- a/tools/cql_config +++ b/tools/cql_config @@ -1,8 +1,14 @@ #!/bin/bash -DIR=$(readlink -f $0 | xargs dirname) + +if test `uname -s` = "Darwin"; then + DIR=$(stat -f %N $0 | xargs dirname) +else + DIR=$(readlink -f $0 | xargs dirname) +fi + if ! [ -f ${DIR}/cql_config_defines.sh ] || ! [ -x ${DIR}/cql_config_defines.sh ] then - echo "missing path configuration file for DataStax Cassandra (cql_config_defines.h)" + echo "missing path configuration file for DataStax Cassandra (cql_config_defines.sh)" exit 0 fi source ${DIR}/cql_config_defines.sh diff --git a/tools/cql_config_defines.sh b/tools/cql_config_defines.sh.sample similarity index 100% rename from tools/cql_config_defines.sh rename to tools/cql_config_defines.sh.sample