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