BIND 10 trac2105, updated. c149373122712acd20af00d9e327e9449e4f81f3 Merge branch 'master' into trac2105
BIND 10 source code commits
bind10-changes at lists.isc.org
Wed Sep 5 13:27:14 UTC 2012
The branch, trac2105 has been updated
via c149373122712acd20af00d9e327e9449e4f81f3 (commit)
via 862b15fc77654a9baf86106b26932335a50e22c4 (commit)
via 823c4a966326683eb0065cffe8fa2e219662d6a7 (commit)
via b76e8206e2589ddda552c8162be4beca5b390059 (commit)
via ac20a00c28069804edc0a36050995df52f601efb (commit)
via 684119502bb3e40d12a3502c9f95aa71ee65a153 (commit)
via 6715af1c22e0946681ab12658d6ae3dd6d1f702a (commit)
via 365c990cefc66d08bea218916ebe771fd34c605c (commit)
via 03b60b9a5cf2a0085c0dd003593b884517b6aa7e (commit)
via 4f9f077ffae95f15f162d8f640c4896fe56b7934 (commit)
via a3e59452b950dce4866fb62e36b1af2e6e9037db (commit)
via 9e4e068087b0f06a04fedfcfb0faa2c2113c4723 (commit)
via 7d7e5269d57451191c0aef1b127d292d3615fe2c (commit)
via ce3f97e6b640b93ed2d8303de7671ef10035be27 (commit)
via 81fac6a441b1c0230638a070d80fa1005a69d5d4 (commit)
via f706565ec0b41e3a1e45dd4fae9a56c93e360b7c (commit)
via 4af209e3f7406a0cde6976eae7a536057e227c0e (commit)
via a69852a56397fe0b1a19c6f51dbfc42450b3d48e (commit)
via 9528b55d5ae89ff06cb9c0266983d8bc7d5a4042 (commit)
via 596f071e741b3d8bfa29b0c687b6cd9073674d79 (commit)
via bb894ca2c8641e488b91c7643acf667a5098851a (commit)
via cd33333c8cebc1f669896c114c1fa00ef9b219ac (commit)
via 4d130eec2aa0743e1272c333e17bd98981e27829 (commit)
via 32610445f0d708de1ad35ff81669efae2165cf3c (commit)
via 16fa1ecec88a29e4cf8e974950a90ea400dd300b (commit)
via d50a3d3d72e8ce493c3f9d79ec2f762efa341bf5 (commit)
via 9dc49932143fa6f2d30ee60ff8ca653c5b3fd3f0 (commit)
via 8759015ce4de6414b808addd279adeed15ce096f (commit)
via c2d1823d7ebac25950e0c81327adb438a7d4c15a (commit)
via 76232f728e2555bfa44edd558fe34911636e3e06 (commit)
via 04ab3886ab2b07180945c51f71eb64fec321c58c (commit)
via f411d8c3690ecd368ea9d66a74635498c123ce2b (commit)
via 7b240f1cb3365191263cfef6d656d345dfeaa8f9 (commit)
via b5974eeb4d42e4deee3f000d6913f6392943ac64 (commit)
via 7b2491ee2c7df7b810e347a74c48d85f251d742f (commit)
via edb116c7a102f9276b5b759726d1cdd5b77e74cb (commit)
via a9cbbc2187dc1c7ff9e291e02d751f048d944377 (commit)
via 4f42de9d8aefb697c2a0eb85ae3125030a3f77f8 (commit)
via b4dc5098233236ad352d9d01694b917e620ed9c0 (commit)
via 0050740b21f115c54527b6942d98136988833ced (commit)
via dca052ba19feab373ef9c36e929abd19c663e051 (commit)
via 3378f9b44d6d8a5cceedd9b9f6177d77985a01bf (commit)
via 72539e992045e3b5b733d32660b6b939e5c67015 (commit)
via a82d0b162c3d651719128154301da4793ed22643 (commit)
via e9eec8d241bb11fcfba0ba4d04cfbfdb62832683 (commit)
via 9beeb21edb0d0d9c90cb56da22a926a4cafdf192 (commit)
via 3b36e5f7abbd29ddfb5b4033b62af924b16c2aa1 (commit)
via f19d17588e04cabe4688e9b7bbde82f699b4a021 (commit)
via b697417cb99a38a6f03ff0e76dc90a5955951c3a (commit)
via 940753065730e77c7fad72d005f62713f2cfb82c (commit)
via 0669a4f48c5e6918ee1ab4cf40ce9b74e8169ba0 (commit)
via 84e7463c44719b7f4e97ad176c6861bd1c8b0a81 (commit)
via 85608831a3455139bac8e551b95e4137835aede3 (commit)
via 90f167386a5405e571f58bddfec252a56e2f1e9c (commit)
via 14c5b23041be0b3ac1446a3fb6239859ca082d64 (commit)
via de315c3ed326c7b7b9c395d85f3ec30177ee4772 (commit)
via b58cbbe6f9d7edb3faf27cfc841c0c8055edec8f (commit)
via 1d6fc8b4e8b24289d831952516be306ad14a18de (commit)
via e57068e6d3d73906644384bb44b767a86bdd8cf8 (commit)
via 94d72340d2f47c9e40de4acf7726dedf40f2c212 (commit)
via 33a71da4661953805f877b57d4b55b0479411939 (commit)
via 09592fb9820856f6d254019cb2e30ebdfa5712d3 (commit)
via 28d84a9af289a4fbbdef1eb7da8e3674dc0de9af (commit)
via e93f78639de53b00ae47c3232fedcbded6844d62 (commit)
via 22af7691098b53daf64e90313bfd53d5e240d61c (commit)
via d3892b7807918a8b0e747958c8a29cc77e1f49bc (commit)
via 099edfbad5fba9dd7b29b35714d87f285f22c9aa (commit)
via ea31c8f67cc105a285eb7068dcc1d8179e8040a7 (commit)
via 48d02e544bed37568e5156d10b3c92ec118f3bc2 (commit)
via bc39e2531b50602c005ab48e7ef728c3479baf0e (commit)
via 6d937a0379a779fbf62fbab29e1761283dc5d2a5 (commit)
via 673b0098bbaa6df0ed97a87a5e924a20f2237056 (commit)
via 291c79605d3f6a205244190c26371575ee452b30 (commit)
via 143fe6f4b2a3ad5828d3be960d940b7bfada888f (commit)
via ff3f8e7a51c737dc682c31c451463a06d89dae30 (commit)
via d3ada48eec11ef1c25f776ab1f2598ea245a8367 (commit)
via f4e993ccbdad694a53be908036ce8eca85ec8b63 (commit)
via 4e5ddf8ba2b37366e662af597d9cd09a9e3c80a3 (commit)
via 106cd341b48eba2785e602ae726a3e8a0ceff61a (commit)
via deca831069987f95dba8773ca4771b7f26b200a3 (commit)
via d5f39ead01dde5add56aac87b7f1a425e1024415 (commit)
via 94a4d8eba82b898dfe84d6cf0e38ecc2f8573194 (commit)
via ac40378d43d51ac40e95351dce10a2bff110ed57 (commit)
via 3690c6751d34acea2312383381d72516ea4f7a95 (commit)
from 2b062467de80d3fe2b3b255aed7f63a86ebd1d12 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 12 +
dns++.pc.in | 2 +-
doc/Doxyfile | 3 +-
src/bin/auth/Makefile.am | 26 +-
src/bin/auth/benchmarks/Makefile.am | 28 +-
src/bin/auth/tests/Makefile.am | 28 +-
.../auth/tests}/testdata/.gitignore | 7 -
src/bin/auth/tests/testdata/spec.spec | 1 -
src/bin/cfgmgr/plugins/.gitignore | 2 +
src/bin/cfgmgr/plugins/datasrc_config_plugin.py | 60 ++-
src/bin/cfgmgr/plugins/tests/datasrc_test.py | 127 +++++-
src/bin/dhcp4/Makefile.am | 12 +-
src/bin/dhcp4/ctrl_dhcp4_srv.cc | 6 +-
src/bin/dhcp4/main.cc | 2 +-
src/bin/dhcp4/tests/Makefile.am | 14 +-
src/bin/dhcp6/Makefile.am | 8 +-
src/bin/dhcp6/tests/Makefile.am | 8 +-
src/bin/host/Makefile.am | 6 +-
src/bin/msgq/b10-msgq.8 | 6 +-
src/bin/resolver/Makefile.am | 28 +-
src/bin/resolver/tests/Makefile.am | 32 +-
src/bin/sockcreator/Makefile.am | 4 +-
src/bin/sockcreator/tests/Makefile.am | 2 +-
src/lib/acl/Makefile.am | 26 +-
src/lib/acl/tests/Makefile.am | 14 +-
src/lib/asiodns/Makefile.am | 34 +-
src/lib/asiodns/tests/Makefile.am | 12 +-
src/lib/asiolink/Makefile.am | 46 +--
src/lib/asiolink/tests/Makefile.am | 6 +-
src/lib/bench/Makefile.am | 4 +-
src/lib/bench/example/Makefile.am | 2 +-
src/lib/bench/tests/Makefile.am | 8 +-
src/lib/cache/Makefile.am | 24 +-
src/lib/cache/tests/Makefile.am | 14 +-
src/lib/cc/Makefile.am | 10 +-
src/lib/cc/tests/Makefile.am | 6 +-
src/lib/config/Makefile.am | 18 +-
src/lib/config/tests/Makefile.am | 8 +-
src/lib/config/tests/testdata/spec40.spec | 1 -
src/lib/cryptolink/Makefile.am | 10 +-
src/lib/cryptolink/tests/Makefile.am | 6 +-
src/lib/datasrc/Makefile.am | 62 +--
src/lib/datasrc/memory/rdata_encoder.cc | 414 ++++++++++++++++----
src/lib/datasrc/memory/rdata_encoder.h | 278 +++++++++++--
src/lib/datasrc/memory/tests/Makefile.am | 4 +-
.../datasrc/memory/tests/rdata_encoder_unittest.cc | 393 +++++++++++++++++--
src/lib/datasrc/rbtree.h | 158 +++++---
src/lib/datasrc/tests/Makefile.am | 14 +-
src/lib/datasrc/tests/rbtree_unittest.cc | 87 +++-
src/lib/dhcp/Makefile.am | 42 +-
src/lib/dhcp/tests/Makefile.am | 8 +-
src/lib/dns/Makefile.am | 78 ++--
src/lib/dns/benchmarks/Makefile.am | 12 +-
src/lib/dns/python/Makefile.am | 56 +--
src/lib/dns/tests/Makefile.am | 6 +-
src/lib/exceptions/Makefile.am | 8 +-
src/lib/exceptions/tests/Makefile.am | 2 +-
src/lib/log/Makefile.am | 62 +--
src/lib/log/compiler/Makefile.am | 6 +-
src/lib/log/logger_impl.cc | 1 +
src/lib/log/logger_level_impl.cc | 8 +-
src/lib/log/logger_level_impl.h | 9 +-
src/lib/log/logger_manager_impl.cc | 1 +
src/lib/log/tests/Makefile.am | 24 +-
src/lib/nsas/Makefile.am | 38 +-
src/lib/nsas/tests/Makefile.am | 12 +-
src/lib/python/isc/acl/Makefile.am | 4 +-
src/lib/python/isc/config/module_spec.py | 2 +
src/lib/python/isc/datasrc/Makefile.am | 6 +-
src/lib/python/isc/log/Makefile.am | 8 +-
src/lib/python/isc/util/cio/Makefile.am | 2 +-
src/lib/resolve/Makefile.am | 30 +-
src/lib/resolve/tests/Makefile.am | 18 +-
src/lib/server_common/Makefile.am | 32 +-
src/lib/server_common/tests/Makefile.am | 22 +-
src/lib/statistics/Makefile.am | 6 +-
src/lib/statistics/tests/Makefile.am | 6 +-
src/lib/testutils/Makefile.am | 12 +-
src/lib/util/Makefile.am | 44 +--
src/lib/util/io/Makefile.am | 12 +-
src/lib/util/pyunittests/Makefile.am | 2 +-
src/lib/util/tests/Makefile.am | 6 +-
src/lib/util/unittests/Makefile.am | 6 +-
src/lib/xfr/Makefile.am | 6 +-
src/lib/xfr/tests/Makefile.am | 4 +-
tests/lettuce/features/terrain/bind10_control.py | 1 -
tests/tools/badpacket/Makefile.am | 12 +-
tests/tools/badpacket/tests/Makefile.am | 4 +-
tests/tools/perfdhcp/Makefile.am | 24 +-
tests/tools/perfdhcp/tests/Makefile.am | 8 +-
90 files changed, 1907 insertions(+), 826 deletions(-)
copy src/{lib/testutils => bin/auth/tests}/testdata/.gitignore (56%)
create mode 100644 src/bin/cfgmgr/plugins/.gitignore
-----------------------------------------------------------------------
diff --git a/ChangeLog b/ChangeLog
index 948aafb..68f2ae2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+457. [build]* muks
+ BIND 10 library names now have a "b10-" prefix. This is to avoid
+ clashes with other similarly named libraries on the system.
+ (Trac #2071, git ac20a00c28069804edc0a36050995df52f601efb)
+
+456. [build]* muks
+ BIND 10 now compiles against log4cplus-1.1.0 (RC releases)
+ also. Note: some older versions of log4cplus don't work any more;
+ known oldest workable version is 1.0.4. Thanks to John Lumby for
+ sending a patch.
+ (Trac #2169, git 7d7e5269d57451191c0aef1b127d292d3615fe2c)
+
455. [func]* vorner
The server now uses newer API for data sources. This would be an
internal change, however, the data sources are now configured
diff --git a/dns++.pc.in b/dns++.pc.in
index d2a7e06..8d2725c 100644
--- a/dns++.pc.in
+++ b/dns++.pc.in
@@ -8,4 +8,4 @@ Description: BIND 10 DNS library
Version: @PACKAGE_VERSION@
Requires: botan-1.8
Cflags: -I${includedir}/@PACKAGE_NAME@
-Libs: -L${libdir} -ldns++ -lcryptolink -lutil -lexceptions -lm
+Libs: -L${libdir} -lb10-dns++ -lb10-cryptolink -lb10-util -lb10-exceptions -lm
diff --git a/doc/Doxyfile b/doc/Doxyfile
index 6d91bf2..7e122e9 100644
--- a/doc/Doxyfile
+++ b/doc/Doxyfile
@@ -573,7 +573,8 @@ WARN_LOGFILE =
# with spaces.
INPUT = ../src/lib/exceptions ../src/lib/cc \
- ../src/lib/config ../src/lib/cryptolink ../src/lib/dns ../src/lib/datasrc \
+ ../src/lib/config ../src/lib/cryptolink ../src/lib/dns \
+ ../src/lib/datasrc ../src/lib/datasrc/memory \
../src/bin/auth ../src/bin/resolver ../src/lib/bench ../src/lib/log \
../src/lib/log/compiler ../src/lib/asiolink/ ../src/lib/nsas \
../src/lib/testutils ../src/lib/cache ../src/lib/server_common/ \
diff --git a/src/bin/auth/Makefile.am b/src/bin/auth/Makefile.am
index 1f0fbbf..47bed15 100644
--- a/src/bin/auth/Makefile.am
+++ b/src/bin/auth/Makefile.am
@@ -60,19 +60,19 @@ b10_auth_SOURCES += ${top_srcdir}/src/lib/datasrc/memory_datasrc.cc
nodist_b10_auth_SOURCES = auth_messages.h auth_messages.cc
EXTRA_DIST += auth_messages.mes
-b10_auth_LDADD = $(top_builddir)/src/lib/datasrc/libdatasrc.la
-b10_auth_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
-b10_auth_LDADD += $(top_builddir)/src/lib/util/libutil.la
-b10_auth_LDADD += $(top_builddir)/src/lib/util/io/libutil_io.la
-b10_auth_LDADD += $(top_builddir)/src/lib/config/libcfgclient.la
-b10_auth_LDADD += $(top_builddir)/src/lib/cc/libcc.la
-b10_auth_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-b10_auth_LDADD += $(top_builddir)/src/lib/asiodns/libasiodns.la
-b10_auth_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-b10_auth_LDADD += $(top_builddir)/src/lib/log/liblog.la
-b10_auth_LDADD += $(top_builddir)/src/lib/xfr/libxfr.la
-b10_auth_LDADD += $(top_builddir)/src/lib/server_common/libserver_common.la
-b10_auth_LDADD += $(top_builddir)/src/lib/statistics/libstatistics.la
+b10_auth_LDADD = $(top_builddir)/src/lib/datasrc/libb10-datasrc.la
+b10_auth_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
+b10_auth_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+b10_auth_LDADD += $(top_builddir)/src/lib/util/io/libb10-util-io.la
+b10_auth_LDADD += $(top_builddir)/src/lib/config/libb10-cfgclient.la
+b10_auth_LDADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+b10_auth_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+b10_auth_LDADD += $(top_builddir)/src/lib/asiodns/libb10-asiodns.la
+b10_auth_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+b10_auth_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+b10_auth_LDADD += $(top_builddir)/src/lib/xfr/libb10-xfr.la
+b10_auth_LDADD += $(top_builddir)/src/lib/server_common/libb10-server-common.la
+b10_auth_LDADD += $(top_builddir)/src/lib/statistics/libb10-statistics.la
b10_auth_LDADD += $(SQLITE_LIBS)
# TODO: config.h.in is wrong because doesn't honor pkgdatadir
diff --git a/src/bin/auth/benchmarks/Makefile.am b/src/bin/auth/benchmarks/Makefile.am
index 2de01ff..c09230a 100644
--- a/src/bin/auth/benchmarks/Makefile.am
+++ b/src/bin/auth/benchmarks/Makefile.am
@@ -26,19 +26,19 @@ query_bench_SOURCES += ${top_srcdir}/src/lib/datasrc/memory_datasrc.cc
nodist_query_bench_SOURCES = ../auth_messages.h ../auth_messages.cc
-query_bench_LDADD = $(top_builddir)/src/lib/dns/libdns++.la
-query_bench_LDADD += $(top_builddir)/src/lib/util/libutil.la
-query_bench_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-query_bench_LDADD += $(top_builddir)/src/lib/bench/libbench.la
-query_bench_LDADD += $(top_builddir)/src/lib/datasrc/libdatasrc.la
-query_bench_LDADD += $(top_builddir)/src/lib/config/libcfgclient.la
-query_bench_LDADD += $(top_builddir)/src/lib/cc/libcc.la
-query_bench_LDADD += $(top_builddir)/src/lib/xfr/libxfr.la
-query_bench_LDADD += $(top_builddir)/src/lib/log/liblog.la
-query_bench_LDADD += $(top_builddir)/src/lib/nsas/libnsas.la
-query_bench_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-query_bench_LDADD += $(top_builddir)/src/lib/server_common/libserver_common.la
-query_bench_LDADD += $(top_builddir)/src/lib/asiodns/libasiodns.la
-query_bench_LDADD += $(top_builddir)/src/lib/statistics/libstatistics.la
+query_bench_LDADD = $(top_builddir)/src/lib/dns/libb10-dns++.la
+query_bench_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+query_bench_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+query_bench_LDADD += $(top_builddir)/src/lib/bench/libb10-bench.la
+query_bench_LDADD += $(top_builddir)/src/lib/datasrc/libb10-datasrc.la
+query_bench_LDADD += $(top_builddir)/src/lib/config/libb10-cfgclient.la
+query_bench_LDADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+query_bench_LDADD += $(top_builddir)/src/lib/xfr/libb10-xfr.la
+query_bench_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+query_bench_LDADD += $(top_builddir)/src/lib/nsas/libb10-nsas.la
+query_bench_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+query_bench_LDADD += $(top_builddir)/src/lib/server_common/libb10-server-common.la
+query_bench_LDADD += $(top_builddir)/src/lib/asiodns/libb10-asiodns.la
+query_bench_LDADD += $(top_builddir)/src/lib/statistics/libb10-statistics.la
query_bench_LDADD += $(SQLITE_LIBS)
diff --git a/src/bin/auth/tests/Makefile.am b/src/bin/auth/tests/Makefile.am
index 602c1d6..f87ed4c 100644
--- a/src/bin/auth/tests/Makefile.am
+++ b/src/bin/auth/tests/Makefile.am
@@ -64,21 +64,21 @@ nodist_run_unittests_SOURCES = ../auth_messages.h ../auth_messages.cc
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
-run_unittests_LDADD = $(top_builddir)/src/lib/testutils/libtestutils.la
-run_unittests_LDADD += $(top_builddir)/src/lib/datasrc/libdatasrc.la
-run_unittests_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiodns/libasiodns.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-run_unittests_LDADD += $(top_builddir)/src/lib/config/libcfgclient.la
-run_unittests_LDADD += $(top_builddir)/src/lib/cc/libcc.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-run_unittests_LDADD += $(top_builddir)/src/lib/xfr/libxfr.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
-run_unittests_LDADD += $(top_builddir)/src/lib/server_common/libserver_common.la
-run_unittests_LDADD += $(top_builddir)/src/lib/nsas/libnsas.la
+run_unittests_LDADD = $(top_builddir)/src/lib/testutils/libb10-testutils.la
+run_unittests_LDADD += $(top_builddir)/src/lib/datasrc/libb10-datasrc.la
+run_unittests_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiodns/libb10-asiodns.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+run_unittests_LDADD += $(top_builddir)/src/lib/config/libb10-cfgclient.la
+run_unittests_LDADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/xfr/libb10-xfr.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+run_unittests_LDADD += $(top_builddir)/src/lib/server_common/libb10-server-common.la
+run_unittests_LDADD += $(top_builddir)/src/lib/nsas/libb10-nsas.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/statistics/libstatistics.la
+run_unittests_LDADD += $(top_builddir)/src/lib/statistics/libb10-statistics.la
run_unittests_LDADD += $(top_builddir)/src/lib/config/tests/libfake_session.la
run_unittests_LDADD += $(GTEST_LDADD)
run_unittests_LDADD += $(SQLITE_LIBS)
diff --git a/src/bin/auth/tests/testdata/.gitignore b/src/bin/auth/tests/testdata/.gitignore
new file mode 100644
index 0000000..b2e0e50
--- /dev/null
+++ b/src/bin/auth/tests/testdata/.gitignore
@@ -0,0 +1,8 @@
+/badExampleQuery_fromWire.wire
+/examplequery_fromWire.wire
+/iqueryresponse_fromWire.wire
+/multiquestion_fromWire.wire
+/queryBadEDNS_fromWire.wire
+/shortanswer_fromWire.wire
+/simplequery_fromWire.wire
+/simpleresponse_fromWire.wire
diff --git a/src/bin/auth/tests/testdata/spec.spec b/src/bin/auth/tests/testdata/spec.spec
index 3e0a822..f7e5e45 100644
--- a/src/bin/auth/tests/testdata/spec.spec
+++ b/src/bin/auth/tests/testdata/spec.spec
@@ -3,4 +3,3 @@
"module_name": "test"
}
}
-
diff --git a/src/bin/cfgmgr/plugins/.gitignore b/src/bin/cfgmgr/plugins/.gitignore
new file mode 100644
index 0000000..9641e02
--- /dev/null
+++ b/src/bin/cfgmgr/plugins/.gitignore
@@ -0,0 +1,2 @@
+/datasrc.spec
+/datasrc.spec.pre
diff --git a/src/bin/cfgmgr/plugins/datasrc_config_plugin.py b/src/bin/cfgmgr/plugins/datasrc_config_plugin.py
index f675aba..12710d5 100644
--- a/src/bin/cfgmgr/plugins/datasrc_config_plugin.py
+++ b/src/bin/cfgmgr/plugins/datasrc_config_plugin.py
@@ -16,20 +16,64 @@
from isc.config.module_spec import module_spec_from_file
from isc.util.file import path_search
from bind10_config import PLUGIN_PATHS
+import isc.dns
+import isc.datasrc
+import json
+import os.path
+import copy
+
spec = module_spec_from_file(path_search('datasrc.spec', PLUGIN_PATHS))
def check(config):
"""
Check the configuration.
"""
- # TODO: Once we have solved ticket #2051, create the list and
- # fill it with the configuration. We probably want to have some way
- # to not load the data sources, just the configuration. It could
- # be hacked together by subclassing ConfigurableClientList and
- # having empty getDataSource method. But it looks like a hack and it
- # won't really check the params configuration.
- #
- # For now, we let everything pass.
+ # Check the data layout first
+ errors=[]
+ if not spec.validate_config(False, config, errors):
+ return ' '.join(errors)
+
+ classes = config.get('classes')
+ # Nothing passed here
+ if classes is None:
+ return None
+
+ for rr_class_str in classes:
+ try:
+ rr_class = isc.dns.RRClass(rr_class_str)
+ except isc.dns.InvalidRRClass as irc:
+ return "The class '" + rr_class_str + "' is invalid"
+
+ dlist = isc.datasrc.ConfigurableClientList(rr_class)
+ # We get a copy here, as we are going to mangle the configuration.
+ # But we don't want our changes to propagate outside, to the real
+ # configuration.
+ client_config = copy.deepcopy(classes.get(rr_class_str))
+
+ for client in client_config:
+ if client['type'] == 'MasterFiles':
+ if not client.get('cache-enable', False):
+ return 'The cache must be enabled in MasterFiles type'
+ params = client.get('params')
+ if type(params) != dict:
+ return 'Params of MasterFiles must be a named set'
+ for name in params:
+ try:
+ isc.dns.Name(name)
+ except Exception as e: # There are many related exceptions
+ return str(e)
+ if not os.path.exists(params[name]):
+ return "Master file " + params[name] + " does not exist"
+ # We remove the list of zones locally. We already checked them,
+ # and the client list would have skipped them anyway, as we
+ # forbid cache. But it would produce a warning and we don't
+ # want that here.
+ client['params'] = {}
+
+ try:
+ dlist.configure(json.dumps(client_config), False)
+ except isc.datasrc.Error as dse:
+ return str(dse)
return None
def load():
diff --git a/src/bin/cfgmgr/plugins/tests/datasrc_test.py b/src/bin/cfgmgr/plugins/tests/datasrc_test.py
index f88ef87..f4381b4 100644
--- a/src/bin/cfgmgr/plugins/tests/datasrc_test.py
+++ b/src/bin/cfgmgr/plugins/tests/datasrc_test.py
@@ -16,12 +16,36 @@
# Make sure we can load the module, put it into path
import sys
import os
+import unittest
+import json
sys.path.extend(os.environ["B10_TEST_PLUGIN_DIR"].split(':'))
+import isc.log
import datasrc_config_plugin
-import unittest
class DatasrcTest(unittest.TestCase):
+ def reject(self, config):
+ """
+ Just a shortcut to check the config is rejected.
+ """
+ old = json.dumps(config)
+ self.assertIsNotNone(datasrc_config_plugin.check({"classes":
+ config}))
+ # There's some data mangling inside the plugin. Check it does
+ # not propagate out, as it could change the real configuration.
+ self.assertEqual(old, json.dumps(config))
+
+ def accept(self, config):
+ """
+ Just a shortcut to check the config is accepted.
+ """
+ old = json.dumps(config)
+ self.assertIsNone(datasrc_config_plugin.check({"classes":
+ config}))
+ # There's some data mangling inside the plugin. Check it does
+ # not propagate out, as it could change the real configuration.
+ self.assertEqual(old, json.dumps(config))
+
def test_load(self):
"""
Checks the entry point returns the correct values.
@@ -32,5 +56,104 @@ class DatasrcTest(unittest.TestCase):
# The plugin stores it's spec
self.assertEqual(spec, datasrc_config_plugin.spec)
+ def test_empty(self):
+ """
+ Check an empty input is OK.
+ """
+ self.accept({})
+
+ def test_invalid_spec(self):
+ """
+ Check it rejects stuff that is not well-formed according
+ to the spec.
+ """
+ self.reject("test")
+ self.reject(13)
+ self.reject([])
+ self.reject({"IN": {}})
+ self.reject({"IN": [{"bad-name": True}]})
+
+ def test_class(self):
+ """
+ The class is rejected, if it is wrong.
+ """
+ self.reject({"BAD": []})
+ self.reject({"": []})
+ # But with a good one, it works
+ for c in ["IN", "CH", "HS"]:
+ self.accept({c: []})
+
+ def test_mem_ok(self):
+ """
+ Test we accept an in-memory data source. It doesn't really matter
+ which one it is. We just want to make sure we accept something
+ and this one does not need any kind of path mangling to find
+ plugins.
+ """
+ self.accept({"IN": [{
+ "type": "MasterFiles",
+ "cache-enable": True,
+ "params": {}
+ }]})
+
+ def test_dstype_bad(self):
+ """
+ The configuration is correct by the spec, but it would be rejected
+ by the client list. Check we reject it.
+ """
+ self.reject({"IN": [{
+ "type": "No such type"
+ }]})
+
+ def test_invalid_mem_params(self):
+ """
+ The client list skips in-memory sources. So we check it locally that
+ invalid things are rejected.
+ """
+ # The 'params' key is mandatory for MasterFiles
+ self.reject({"IN": [{
+ "type": "MasterFiles",
+ "cache-enable": True
+ }]})
+ # The cache must be enabled
+ self.reject({"IN": [{
+ "type": "MasterFiles",
+ "cache-enable": False,
+ "params": {}
+ }]})
+ self.reject({"IN": [{
+ "type": "MasterFiles",
+ "params": {}
+ }]})
+ # Bad params type
+ self.reject({"IN": [{
+ "type": "MasterFiles",
+ "cache-enable": True,
+ "params": []
+ }]})
+ # Bad name
+ self.reject({"IN": [{
+ "type": "MasterFiles",
+ "cache-enable": True,
+ "params": {
+ "example....org.": '/file/does/not/exist'
+ }
+ }]})
+
+ def test_no_such_file_mem(self):
+ """
+ We also check the existance of master files. Not the actual content,
+ though.
+ """
+ self.reject({"IN": [{
+ "type": "MasterFiles",
+ "cache-enable": True,
+ "params": {
+ "example.org.": '/file/does/not/exist'
+ }
+ }]})
+
if __name__ == '__main__':
- unittest.main()
+ isc.log.init("bind10")
+ isc.log.resetUnitTestRootLogger()
+ unittest.main()
diff --git a/src/bin/dhcp4/Makefile.am b/src/bin/dhcp4/Makefile.am
index d343633..dcf9ca0 100644
--- a/src/bin/dhcp4/Makefile.am
+++ b/src/bin/dhcp4/Makefile.am
@@ -39,12 +39,12 @@ if USE_CLANGPP
b10_dhcp4_CXXFLAGS = -Wno-unused-parameter
endif
-b10_dhcp4_LDADD = $(top_builddir)/src/lib/dhcp/libdhcp++.la
-b10_dhcp4_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-b10_dhcp4_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-b10_dhcp4_LDADD += $(top_builddir)/src/lib/log/liblog.la
-b10_dhcp4_LDADD += $(top_builddir)/src/lib/config/libcfgclient.la
-b10_dhcp4_LDADD += $(top_builddir)/src/lib/cc/libcc.la
+b10_dhcp4_LDADD = $(top_builddir)/src/lib/dhcp/libb10-dhcp++.la
+b10_dhcp4_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+b10_dhcp4_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+b10_dhcp4_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+b10_dhcp4_LDADD += $(top_builddir)/src/lib/config/libb10-cfgclient.la
+b10_dhcp4_LDADD += $(top_builddir)/src/lib/cc/libb10-cc.la
b10_dhcp4dir = $(pkgdatadir)
diff --git a/src/bin/dhcp4/ctrl_dhcp4_srv.cc b/src/bin/dhcp4/ctrl_dhcp4_srv.cc
index b052683..c6ba9ff 100644
--- a/src/bin/dhcp4/ctrl_dhcp4_srv.cc
+++ b/src/bin/dhcp4/ctrl_dhcp4_srv.cc
@@ -82,7 +82,7 @@ void ControlledDhcpv4Srv::sessionReader(void) {
}
void ControlledDhcpv4Srv::establishSession() {
-
+
string specfile;
if (getenv("B10_FROM_BUILD")) {
specfile = string(getenv("B10_FROM_BUILD")) +
@@ -92,9 +92,9 @@ void ControlledDhcpv4Srv::establishSession() {
}
/// @todo: Check if session is not established already. Throw, if it is.
-
+
cout << "b10-dhcp4: my specfile is " << specfile << endl;
-
+
cc_session_ = new Session(io_service_.get_io_service());
config_session_ = new ModuleCCSession(specfile, *cc_session_,
diff --git a/src/bin/dhcp4/main.cc b/src/bin/dhcp4/main.cc
index d6c4602..9cc9c5b 100644
--- a/src/bin/dhcp4/main.cc
+++ b/src/bin/dhcp4/main.cc
@@ -81,7 +81,7 @@ main(int argc, char* argv[]) {
(verbose_mode ? isc::log::DEBUG : isc::log::INFO),
isc::log::MAX_DEBUG_LEVEL, NULL);
- cout << "b10-dhcp4: My pid=" << getpid() << ", binding to port "
+ cout << "b10-dhcp4: My pid=" << getpid() << ", binding to port "
<< port_number << ", verbose " << (verbose_mode?"yes":"no") << endl;
if (argc - optind > 0) {
diff --git a/src/bin/dhcp4/tests/Makefile.am b/src/bin/dhcp4/tests/Makefile.am
index f56b6f6..402af60 100644
--- a/src/bin/dhcp4/tests/Makefile.am
+++ b/src/bin/dhcp4/tests/Makefile.am
@@ -60,13 +60,13 @@ endif
dhcp4_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
dhcp4_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
dhcp4_unittests_LDADD = $(GTEST_LDADD)
-dhcp4_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-dhcp4_unittests_LDADD += $(top_builddir)/src/lib/dhcp/libdhcp++.la
-dhcp4_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-dhcp4_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
-dhcp4_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-dhcp4_unittests_LDADD += $(top_builddir)/src/lib/config/libcfgclient.la
-dhcp4_unittests_LDADD += $(top_builddir)/src/lib/cc/libcc.la
+dhcp4_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+dhcp4_unittests_LDADD += $(top_builddir)/src/lib/dhcp/libb10-dhcp++.la
+dhcp4_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+dhcp4_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+dhcp4_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+dhcp4_unittests_LDADD += $(top_builddir)/src/lib/config/libb10-cfgclient.la
+dhcp4_unittests_LDADD += $(top_builddir)/src/lib/cc/libb10-cc.la
endif
noinst_PROGRAMS = $(TESTS)
diff --git a/src/bin/dhcp6/Makefile.am b/src/bin/dhcp6/Makefile.am
index 16b17ed..e68ce2e 100644
--- a/src/bin/dhcp6/Makefile.am
+++ b/src/bin/dhcp6/Makefile.am
@@ -40,10 +40,10 @@ if USE_CLANGPP
b10_dhcp6_CXXFLAGS = -Wno-unused-parameter
endif
-b10_dhcp6_LDADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
-b10_dhcp6_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-b10_dhcp6_LDADD += $(top_builddir)/src/lib/log/liblog.la
-b10_dhcp6_LDADD += $(top_builddir)/src/lib/dhcp/libdhcp++.la
+b10_dhcp6_LDADD = $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+b10_dhcp6_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+b10_dhcp6_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+b10_dhcp6_LDADD += $(top_builddir)/src/lib/dhcp/libb10-dhcp++.la
b10_dhcp6dir = $(pkgdatadir)
b10_dhcp6_DATA = dhcp6.spec
diff --git a/src/bin/dhcp6/tests/Makefile.am b/src/bin/dhcp6/tests/Makefile.am
index ac20d56..9b67804 100644
--- a/src/bin/dhcp6/tests/Makefile.am
+++ b/src/bin/dhcp6/tests/Makefile.am
@@ -55,10 +55,10 @@ endif
dhcp6_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
dhcp6_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
dhcp6_unittests_LDADD = $(GTEST_LDADD)
-dhcp6_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-dhcp6_unittests_LDADD += $(top_builddir)/src/lib/dhcp/libdhcp++.la
-dhcp6_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
-dhcp6_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+dhcp6_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+dhcp6_unittests_LDADD += $(top_builddir)/src/lib/dhcp/libb10-dhcp++.la
+dhcp6_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+dhcp6_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
endif
diff --git a/src/bin/host/Makefile.am b/src/bin/host/Makefile.am
index a8f96c2..22fba65 100644
--- a/src/bin/host/Makefile.am
+++ b/src/bin/host/Makefile.am
@@ -12,9 +12,9 @@ CLEANFILES = *.gcno *.gcda
bin_PROGRAMS = b10-host
b10_host_SOURCES = host.cc
-b10_host_LDADD = $(top_builddir)/src/lib/dns/libdns++.la
-b10_host_LDADD += $(top_builddir)/src/lib/util/libutil.la
-b10_host_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+b10_host_LDADD = $(top_builddir)/src/lib/dns/libb10-dns++.la
+b10_host_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+b10_host_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
man_MANS = b10-host.1
EXTRA_DIST = $(man_MANS) b10-host.xml
diff --git a/src/bin/msgq/b10-msgq.8 b/src/bin/msgq/b10-msgq.8
index 37b5228..b318491 100644
--- a/src/bin/msgq/b10-msgq.8
+++ b/src/bin/msgq/b10-msgq.8
@@ -2,12 +2,12 @@
.\" Title: b10-msgq
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\" Date: August 4, 2010
+.\" Date: June 25, 2012
.\" Manual: BIND10
.\" Source: BIND10
.\" Language: English
.\"
-.TH "B10\-MSGQ" "8" "August 4, 2010" "BIND10" "BIND10"
+.TH "B10\-MSGQ" "8" "June 25, 2012" "BIND10" "BIND10"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
@@ -87,8 +87,6 @@ is assigned a unique identifier \-\- this is the local name\&. The commands it h
.sp
.RE
.PP
-It listens on 127\&.0\&.0\&.1\&.
-.PP
The
\fBb10\-msgq\fR
daemon may be cleanly stopped by sending the SIGTERM signal to the process\&. This shutdown does not notify the subscribers\&.
diff --git a/src/bin/resolver/Makefile.am b/src/bin/resolver/Makefile.am
index 2bb3768..83bf8b3 100644
--- a/src/bin/resolver/Makefile.am
+++ b/src/bin/resolver/Makefile.am
@@ -56,20 +56,20 @@ b10_resolver_SOURCES += common.cc common.h
nodist_b10_resolver_SOURCES = resolver_messages.cc resolver_messages.h
-b10_resolver_LDADD = $(top_builddir)/src/lib/dns/libdns++.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/config/libcfgclient.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/cc/libcc.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/util/libutil.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/acl/libdnsacl.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/asiodns/libasiodns.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/xfr/libxfr.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/log/liblog.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/server_common/libserver_common.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/cache/libcache.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/nsas/libnsas.la
-b10_resolver_LDADD += $(top_builddir)/src/lib/resolve/libresolve.la
+b10_resolver_LDADD = $(top_builddir)/src/lib/dns/libb10-dns++.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/config/libb10-cfgclient.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/acl/libb10-dnsacl.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/asiodns/libb10-asiodns.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/xfr/libb10-xfr.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/server_common/libb10-server-common.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/cache/libb10-cache.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/nsas/libb10-nsas.la
+b10_resolver_LDADD += $(top_builddir)/src/lib/resolve/libb10-resolve.la
b10_resolver_LDFLAGS = -pthread
# TODO: config.h.in is wrong because doesn't honor pkgdatadir
diff --git a/src/bin/resolver/tests/Makefile.am b/src/bin/resolver/tests/Makefile.am
index 153dcd5..52b39a1 100644
--- a/src/bin/resolver/tests/Makefile.am
+++ b/src/bin/resolver/tests/Makefile.am
@@ -37,22 +37,22 @@ run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
run_unittests_LDADD = $(GTEST_LDADD)
-run_unittests_LDADD += $(top_builddir)/src/lib/testutils/libtestutils.la
-run_unittests_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiodns/libasiodns.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-run_unittests_LDADD += $(top_builddir)/src/lib/config/libcfgclient.la
-run_unittests_LDADD += $(top_builddir)/src/lib/acl/libdnsacl.la
-run_unittests_LDADD += $(top_builddir)/src/lib/cc/libcc.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-run_unittests_LDADD += $(top_builddir)/src/lib/xfr/libxfr.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
-run_unittests_LDADD += $(top_builddir)/src/lib/server_common/libserver_common.la
-run_unittests_LDADD += $(top_builddir)/src/lib/resolve/libresolve.la
-run_unittests_LDADD += $(top_builddir)/src/lib/cache/libcache.la
-run_unittests_LDADD += $(top_builddir)/src/lib/nsas/libnsas.la
-run_unittests_LDADD += $(top_builddir)/src/lib/acl/libacl.la
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
+run_unittests_LDADD += $(top_builddir)/src/lib/testutils/libb10-testutils.la
+run_unittests_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiodns/libb10-asiodns.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+run_unittests_LDADD += $(top_builddir)/src/lib/config/libb10-cfgclient.la
+run_unittests_LDADD += $(top_builddir)/src/lib/acl/libb10-dnsacl.la
+run_unittests_LDADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/xfr/libb10-xfr.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+run_unittests_LDADD += $(top_builddir)/src/lib/server_common/libb10-server-common.la
+run_unittests_LDADD += $(top_builddir)/src/lib/resolve/libb10-resolve.la
+run_unittests_LDADD += $(top_builddir)/src/lib/cache/libb10-cache.la
+run_unittests_LDADD += $(top_builddir)/src/lib/nsas/libb10-nsas.la
+run_unittests_LDADD += $(top_builddir)/src/lib/acl/libb10-acl.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
# Note the ordering matters: -Wno-... must follow -Wextra (defined in
diff --git a/src/bin/sockcreator/Makefile.am b/src/bin/sockcreator/Makefile.am
index 8494114..42b8c34 100644
--- a/src/bin/sockcreator/Makefile.am
+++ b/src/bin/sockcreator/Makefile.am
@@ -15,5 +15,5 @@ CLEANFILES = *.gcno *.gcda
pkglibexec_PROGRAMS = b10-sockcreator
b10_sockcreator_SOURCES = sockcreator.cc sockcreator.h main.cc
-b10_sockcreator_LDADD = $(top_builddir)/src/lib/util/io/libutil_io.la
-b10_sockcreator_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+b10_sockcreator_LDADD = $(top_builddir)/src/lib/util/io/libb10-util-io.la
+b10_sockcreator_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
diff --git a/src/bin/sockcreator/tests/Makefile.am b/src/bin/sockcreator/tests/Makefile.am
index 054c437..f543652 100644
--- a/src/bin/sockcreator/tests/Makefile.am
+++ b/src/bin/sockcreator/tests/Makefile.am
@@ -22,7 +22,7 @@ run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
run_unittests_LDADD = $(GTEST_LDADD)
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/util/io/libutil_io.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/io/libb10-util-io.la
endif
noinst_PROGRAMS = $(TESTS)
diff --git a/src/lib/acl/Makefile.am b/src/lib/acl/Makefile.am
index 92b7869..001ca59 100644
--- a/src/lib/acl/Makefile.am
+++ b/src/lib/acl/Makefile.am
@@ -5,23 +5,23 @@ AM_CPPFLAGS += $(BOOST_INCLUDES)
AM_CXXFLAGS = $(B10_CXXFLAGS)
# The core library
-lib_LTLIBRARIES = libacl.la
-libacl_la_SOURCES = acl.h
-libacl_la_SOURCES += check.h
-libacl_la_SOURCES += ip_check.h ip_check.cc
-libacl_la_SOURCES += logic_check.h
-libacl_la_SOURCES += loader.h loader.cc
+lib_LTLIBRARIES = libb10-acl.la
+libb10_acl_la_SOURCES = acl.h
+libb10_acl_la_SOURCES += check.h
+libb10_acl_la_SOURCES += ip_check.h ip_check.cc
+libb10_acl_la_SOURCES += logic_check.h
+libb10_acl_la_SOURCES += loader.h loader.cc
-libacl_la_LIBADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
-libacl_la_LIBADD += $(top_builddir)/src/lib/cc/libcc.la
-libacl_la_LIBADD += $(top_builddir)/src/lib/util/libutil.la
+libb10_acl_la_LIBADD = $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+libb10_acl_la_LIBADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+libb10_acl_la_LIBADD += $(top_builddir)/src/lib/util/libb10-util.la
# DNS specialized one
-lib_LTLIBRARIES += libdnsacl.la
+lib_LTLIBRARIES += libb10-dnsacl.la
-libdnsacl_la_SOURCES = dns.h dns.cc dnsname_check.h
+libb10_dnsacl_la_SOURCES = dns.h dns.cc dnsname_check.h
-libdnsacl_la_LIBADD = libacl.la
-libdnsacl_la_LIBADD += $(top_builddir)/src/lib/dns/libdns++.la
+libb10_dnsacl_la_LIBADD = libb10-acl.la
+libb10_dnsacl_la_LIBADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
CLEANFILES = *.gcno *.gcda
diff --git a/src/lib/acl/tests/Makefile.am b/src/lib/acl/tests/Makefile.am
index 9183bfe..d103047 100644
--- a/src/lib/acl/tests/Makefile.am
+++ b/src/lib/acl/tests/Makefile.am
@@ -31,13 +31,13 @@ run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
run_unittests_LDADD = $(GTEST_LDADD)
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/acl/libacl.la
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
-run_unittests_LDADD += $(top_builddir)/src/lib/cc/libcc.la
-run_unittests_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-run_unittests_LDADD += $(top_builddir)/src/lib/acl/libdnsacl.la
+run_unittests_LDADD += $(top_builddir)/src/lib/acl/libb10-acl.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+run_unittests_LDADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+run_unittests_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/acl/libb10-dnsacl.la
endif
noinst_PROGRAMS = $(TESTS)
diff --git a/src/lib/asiodns/Makefile.am b/src/lib/asiodns/Makefile.am
index a03f147..321de8b 100644
--- a/src/lib/asiodns/Makefile.am
+++ b/src/lib/asiodns/Makefile.am
@@ -16,28 +16,28 @@ asiodns_messages.h asiodns_messages.cc: asiodns_messages.mes
BUILT_SOURCES = asiodns_messages.h asiodns_messages.cc
-lib_LTLIBRARIES = libasiodns.la
-libasiodns_la_SOURCES = dns_answer.h
-libasiodns_la_SOURCES += asiodns.h
-libasiodns_la_SOURCES += dns_lookup.h
-libasiodns_la_SOURCES += dns_server.h
-libasiodns_la_SOURCES += dns_service.cc dns_service.h
-libasiodns_la_SOURCES += tcp_server.cc tcp_server.h
-libasiodns_la_SOURCES += udp_server.cc udp_server.h
-libasiodns_la_SOURCES += sync_udp_server.cc sync_udp_server.h
-libasiodns_la_SOURCES += io_fetch.cc io_fetch.h
-libasiodns_la_SOURCES += logger.h logger.cc
-
-nodist_libasiodns_la_SOURCES = asiodns_messages.cc asiodns_messages.h
+lib_LTLIBRARIES = libb10-asiodns.la
+libb10_asiodns_la_SOURCES = dns_answer.h
+libb10_asiodns_la_SOURCES += asiodns.h
+libb10_asiodns_la_SOURCES += dns_lookup.h
+libb10_asiodns_la_SOURCES += dns_server.h
+libb10_asiodns_la_SOURCES += dns_service.cc dns_service.h
+libb10_asiodns_la_SOURCES += tcp_server.cc tcp_server.h
+libb10_asiodns_la_SOURCES += udp_server.cc udp_server.h
+libb10_asiodns_la_SOURCES += sync_udp_server.cc sync_udp_server.h
+libb10_asiodns_la_SOURCES += io_fetch.cc io_fetch.h
+libb10_asiodns_la_SOURCES += logger.h logger.cc
+
+nodist_libb10_asiodns_la_SOURCES = asiodns_messages.cc asiodns_messages.h
EXTRA_DIST = asiodns_messages.mes
# Note: the ordering matters: -Wno-... must follow -Wextra (defined in
# B10_CXXFLAGS)
-libasiodns_la_CXXFLAGS = $(AM_CXXFLAGS)
+libb10_asiodns_la_CXXFLAGS = $(AM_CXXFLAGS)
if USE_CLANGPP
# Same for clang++, but we need to turn off -Werror completely.
-libasiodns_la_CXXFLAGS += -Wno-error
+libb10_asiodns_la_CXXFLAGS += -Wno-error
endif
-libasiodns_la_CPPFLAGS = $(AM_CPPFLAGS)
-libasiodns_la_LIBADD = $(top_builddir)/src/lib/log/liblog.la
+libb10_asiodns_la_CPPFLAGS = $(AM_CPPFLAGS)
+libb10_asiodns_la_LIBADD = $(top_builddir)/src/lib/log/libb10-log.la
diff --git a/src/lib/asiodns/tests/Makefile.am b/src/lib/asiodns/tests/Makefile.am
index 1e18645..25f2ea8 100644
--- a/src/lib/asiodns/tests/Makefile.am
+++ b/src/lib/asiodns/tests/Makefile.am
@@ -28,13 +28,13 @@ run_unittests_SOURCES += io_fetch_unittest.cc
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDADD = $(GTEST_LDADD)
-run_unittests_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
+run_unittests_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiodns/libasiodns.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiodns/libb10-asiodns.la
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
diff --git a/src/lib/asiolink/Makefile.am b/src/lib/asiolink/Makefile.am
index 07c3e13..3505982 100644
--- a/src/lib/asiolink/Makefile.am
+++ b/src/lib/asiolink/Makefile.am
@@ -13,32 +13,32 @@ CLEANFILES = *.gcno *.gcda
# gcc's unused-parameter warning, which would make the build fail
# with -Werror (our default setting).
-lib_LTLIBRARIES = libasiolink.la
-
-libasiolink_la_LDFLAGS = -no-undefined -version-info 1:0:1
-
-libasiolink_la_SOURCES = asiolink.h
-libasiolink_la_SOURCES += dummy_io_cb.h
-libasiolink_la_SOURCES += interval_timer.cc interval_timer.h
-libasiolink_la_SOURCES += io_address.cc io_address.h
-libasiolink_la_SOURCES += io_asio_socket.h
-libasiolink_la_SOURCES += io_endpoint.cc io_endpoint.h
-libasiolink_la_SOURCES += io_error.h
-libasiolink_la_SOURCES += io_message.h
-libasiolink_la_SOURCES += io_service.h io_service.cc
-libasiolink_la_SOURCES += io_socket.h io_socket.cc
-libasiolink_la_SOURCES += simple_callback.h
-libasiolink_la_SOURCES += tcp_endpoint.h
-libasiolink_la_SOURCES += tcp_socket.h
-libasiolink_la_SOURCES += udp_endpoint.h
-libasiolink_la_SOURCES += udp_socket.h
+lib_LTLIBRARIES = libb10-asiolink.la
+
+libb10_asiolink_la_LDFLAGS = -no-undefined -version-info 1:0:1
+
+libb10_asiolink_la_SOURCES = asiolink.h
+libb10_asiolink_la_SOURCES += dummy_io_cb.h
+libb10_asiolink_la_SOURCES += interval_timer.cc interval_timer.h
+libb10_asiolink_la_SOURCES += io_address.cc io_address.h
+libb10_asiolink_la_SOURCES += io_asio_socket.h
+libb10_asiolink_la_SOURCES += io_endpoint.cc io_endpoint.h
+libb10_asiolink_la_SOURCES += io_error.h
+libb10_asiolink_la_SOURCES += io_message.h
+libb10_asiolink_la_SOURCES += io_service.h io_service.cc
+libb10_asiolink_la_SOURCES += io_socket.h io_socket.cc
+libb10_asiolink_la_SOURCES += simple_callback.h
+libb10_asiolink_la_SOURCES += tcp_endpoint.h
+libb10_asiolink_la_SOURCES += tcp_socket.h
+libb10_asiolink_la_SOURCES += udp_endpoint.h
+libb10_asiolink_la_SOURCES += udp_socket.h
# Note: the ordering matters: -Wno-... must follow -Wextra (defined in
# B10_CXXFLAGS)
-libasiolink_la_CXXFLAGS = $(AM_CXXFLAGS)
+libb10_asiolink_la_CXXFLAGS = $(AM_CXXFLAGS)
if USE_CLANGPP
# Same for clang++, but we need to turn off -Werror completely.
-libasiolink_la_CXXFLAGS += -Wno-error
+libb10_asiolink_la_CXXFLAGS += -Wno-error
endif
-libasiolink_la_CPPFLAGS = $(AM_CPPFLAGS)
-libasiolink_la_LIBADD = $(top_builddir)/src/lib/log/liblog.la
+libb10_asiolink_la_CPPFLAGS = $(AM_CPPFLAGS)
+libb10_asiolink_la_LIBADD = $(top_builddir)/src/lib/log/libb10-log.la
diff --git a/src/lib/asiolink/tests/Makefile.am b/src/lib/asiolink/tests/Makefile.am
index d0f859a..b401834 100644
--- a/src/lib/asiolink/tests/Makefile.am
+++ b/src/lib/asiolink/tests/Makefile.am
@@ -36,10 +36,10 @@ run_unittests_SOURCES += udp_socket_unittest.cc
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
-run_unittests_LDADD = $(top_builddir)/src/lib/asiolink/libasiolink.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
+run_unittests_LDADD = $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
run_unittests_LDADD += $(GTEST_LDADD)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
diff --git a/src/lib/bench/Makefile.am b/src/lib/bench/Makefile.am
index 514b3b3..b4e1856 100644
--- a/src/lib/bench/Makefile.am
+++ b/src/lib/bench/Makefile.am
@@ -6,6 +6,6 @@ AM_CXXFLAGS = $(B10_CXXFLAGS)
CLEANFILES = *.gcno *.gcda
-noinst_LTLIBRARIES = libbench.la
-libbench_la_SOURCES = benchmark_util.h benchmark_util.cc
+noinst_LTLIBRARIES = libb10-bench.la
+libb10_bench_la_SOURCES = benchmark_util.h benchmark_util.cc
EXTRA_DIST = benchmark.h
diff --git a/src/lib/bench/example/Makefile.am b/src/lib/bench/example/Makefile.am
index 8257b35..51e79e5 100644
--- a/src/lib/bench/example/Makefile.am
+++ b/src/lib/bench/example/Makefile.am
@@ -5,5 +5,5 @@ CLEANFILES = *.gcno *.gcda
noinst_PROGRAMS = search_bench
search_bench_SOURCES = search_bench.cc
-search_bench_LDADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
+search_bench_LDADD = $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
diff --git a/src/lib/bench/tests/Makefile.am b/src/lib/bench/tests/Makefile.am
index fc5c3ae..a5688e8 100644
--- a/src/lib/bench/tests/Makefile.am
+++ b/src/lib/bench/tests/Makefile.am
@@ -17,11 +17,11 @@ run_unittests_SOURCES += loadquery_unittest.cc
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
-run_unittests_LDADD = $(top_builddir)/src/lib/bench/libbench.la
-run_unittests_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
+run_unittests_LDADD = $(top_builddir)/src/lib/bench/libb10-bench.la
+run_unittests_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
run_unittests_LDADD += $(GTEST_LDADD)
endif
diff --git a/src/lib/cache/Makefile.am b/src/lib/cache/Makefile.am
index 9871a5e..00ca16e 100644
--- a/src/lib/cache/Makefile.am
+++ b/src/lib/cache/Makefile.am
@@ -21,18 +21,18 @@ if USE_CLANGPP
AM_CXXFLAGS += -Wno-unused-parameter
endif
-lib_LTLIBRARIES = libcache.la
-libcache_la_SOURCES = resolver_cache.h resolver_cache.cc
-libcache_la_SOURCES += message_cache.h message_cache.cc
-libcache_la_SOURCES += message_entry.h message_entry.cc
-libcache_la_SOURCES += rrset_cache.h rrset_cache.cc
-libcache_la_SOURCES += rrset_entry.h rrset_entry.cc
-libcache_la_SOURCES += cache_entry_key.h cache_entry_key.cc
-libcache_la_SOURCES += rrset_copy.h rrset_copy.cc
-libcache_la_SOURCES += local_zone_data.h local_zone_data.cc
-libcache_la_SOURCES += message_utility.h message_utility.cc
-libcache_la_SOURCES += logger.h logger.cc
-nodist_libcache_la_SOURCES = cache_messages.cc cache_messages.h
+lib_LTLIBRARIES = libb10-cache.la
+libb10_cache_la_SOURCES = resolver_cache.h resolver_cache.cc
+libb10_cache_la_SOURCES += message_cache.h message_cache.cc
+libb10_cache_la_SOURCES += message_entry.h message_entry.cc
+libb10_cache_la_SOURCES += rrset_cache.h rrset_cache.cc
+libb10_cache_la_SOURCES += rrset_entry.h rrset_entry.cc
+libb10_cache_la_SOURCES += cache_entry_key.h cache_entry_key.cc
+libb10_cache_la_SOURCES += rrset_copy.h rrset_copy.cc
+libb10_cache_la_SOURCES += local_zone_data.h local_zone_data.cc
+libb10_cache_la_SOURCES += message_utility.h message_utility.cc
+libb10_cache_la_SOURCES += logger.h logger.cc
+nodist_libb10_cache_la_SOURCES = cache_messages.cc cache_messages.h
BUILT_SOURCES = cache_messages.cc cache_messages.h
diff --git a/src/lib/cache/tests/Makefile.am b/src/lib/cache/tests/Makefile.am
index 4e47314..83b67b0 100644
--- a/src/lib/cache/tests/Makefile.am
+++ b/src/lib/cache/tests/Makefile.am
@@ -50,14 +50,14 @@ run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
run_unittests_LDADD = $(GTEST_LDADD)
-run_unittests_LDADD += $(top_builddir)/src/lib/cache/libcache.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
-run_unittests_LDADD += $(top_builddir)/src/lib/nsas/libnsas.la
-run_unittests_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
+run_unittests_LDADD += $(top_builddir)/src/lib/cache/libb10-cache.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+run_unittests_LDADD += $(top_builddir)/src/lib/nsas/libb10-nsas.la
+run_unittests_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
endif
noinst_PROGRAMS = $(TESTS)
diff --git a/src/lib/cc/Makefile.am b/src/lib/cc/Makefile.am
index c23b27c..ec478de 100644
--- a/src/lib/cc/Makefile.am
+++ b/src/lib/cc/Makefile.am
@@ -20,11 +20,11 @@ if USE_CLANGPP
AM_CXXFLAGS += -Wno-error
endif
-lib_LTLIBRARIES = libcc.la
-libcc_la_SOURCES = data.cc data.h session.cc session.h
-libcc_la_SOURCES += logger.cc logger.h
-nodist_libcc_la_SOURCES = cc_messages.cc cc_messages.h
-libcc_la_LIBADD = $(top_builddir)/src/lib/log/liblog.la
+lib_LTLIBRARIES = libb10-cc.la
+libb10_cc_la_SOURCES = data.cc data.h session.cc session.h
+libb10_cc_la_SOURCES += logger.cc logger.h
+nodist_libb10_cc_la_SOURCES = cc_messages.cc cc_messages.h
+libb10_cc_la_LIBADD = $(top_builddir)/src/lib/log/libb10-log.la
CLEANFILES = *.gcno *.gcda session_config.h cc_messages.cc cc_messages.h
diff --git a/src/lib/cc/tests/Makefile.am b/src/lib/cc/tests/Makefile.am
index 7291abe..1c2b4b8 100644
--- a/src/lib/cc/tests/Makefile.am
+++ b/src/lib/cc/tests/Makefile.am
@@ -30,10 +30,10 @@ run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
# We need to put our libs first, in case gtest (or any dependency, really)
# is installed in the same location as a different version of bind10
# Otherwise the linker may not use the source tree libs
-run_unittests_LDADD = $(top_builddir)/src/lib/cc/libcc.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
+run_unittests_LDADD = $(top_builddir)/src/lib/cc/libb10-cc.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
run_unittests_LDADD += $(GTEST_LDADD)
endif
diff --git a/src/lib/config/Makefile.am b/src/lib/config/Makefile.am
index 518d497..b4fc2e0 100644
--- a/src/lib/config/Makefile.am
+++ b/src/lib/config/Makefile.am
@@ -11,18 +11,18 @@ config_messages.h config_messages.cc: config_messages.mes
BUILT_SOURCES = config_messages.h config_messages.cc
-lib_LTLIBRARIES = libcfgclient.la
-libcfgclient_la_SOURCES = config_data.h config_data.cc
-libcfgclient_la_SOURCES += module_spec.h module_spec.cc
-libcfgclient_la_SOURCES += ccsession.cc ccsession.h
-libcfgclient_la_SOURCES += config_log.h config_log.cc
+lib_LTLIBRARIES = libb10-cfgclient.la
+libb10_cfgclient_la_SOURCES = config_data.h config_data.cc
+libb10_cfgclient_la_SOURCES += module_spec.h module_spec.cc
+libb10_cfgclient_la_SOURCES += ccsession.cc ccsession.h
+libb10_cfgclient_la_SOURCES += config_log.h config_log.cc
-libcfgclient_la_LIBADD = $(top_builddir)/src/lib/cc/libcc.la
-libcfgclient_la_LIBADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+libb10_cfgclient_la_LIBADD = $(top_builddir)/src/lib/cc/libb10-cc.la
+libb10_cfgclient_la_LIBADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
-libcfgclient_la_LDFLAGS = -no-undefined -version-info 1:0:1
+libb10_cfgclient_la_LDFLAGS = -no-undefined -version-info 1:0:1
-nodist_libcfgclient_la_SOURCES = config_messages.h config_messages.cc
+nodist_libb10_cfgclient_la_SOURCES = config_messages.h config_messages.cc
# The message file should be in the distribution.
EXTRA_DIST = config_messages.mes
diff --git a/src/lib/config/tests/Makefile.am b/src/lib/config/tests/Makefile.am
index ac1a547..5418a8d 100644
--- a/src/lib/config/tests/Makefile.am
+++ b/src/lib/config/tests/Makefile.am
@@ -26,10 +26,10 @@ run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
run_unittests_LDADD = $(GTEST_LDADD)
run_unittests_LDADD += libfake_session.la
-run_unittests_LDADD += $(top_builddir)/src/lib/cc/libcc.la
-run_unittests_LDADD += $(top_builddir)/src/lib/config/libcfgclient.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
+run_unittests_LDADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+run_unittests_LDADD += $(top_builddir)/src/lib/config/libb10-cfgclient.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
endif
diff --git a/src/lib/config/tests/testdata/spec40.spec b/src/lib/config/tests/testdata/spec40.spec
index 8e64fa9..f778fc0 100644
--- a/src/lib/config/tests/testdata/spec40.spec
+++ b/src/lib/config/tests/testdata/spec40.spec
@@ -10,4 +10,3 @@
]
}
}
-
diff --git a/src/lib/cryptolink/Makefile.am b/src/lib/cryptolink/Makefile.am
index fc12fae..91825d8 100644
--- a/src/lib/cryptolink/Makefile.am
+++ b/src/lib/cryptolink/Makefile.am
@@ -6,10 +6,10 @@ AM_CXXFLAGS = $(B10_CXXFLAGS)
CLEANFILES = *.gcno *.gcda
-lib_LTLIBRARIES = libcryptolink.la
+lib_LTLIBRARIES = libb10-cryptolink.la
-libcryptolink_la_SOURCES = cryptolink.h cryptolink.cc
-libcryptolink_la_SOURCES += crypto_hmac.h crypto_hmac.cc
+libb10_cryptolink_la_SOURCES = cryptolink.h cryptolink.cc
+libb10_cryptolink_la_SOURCES += crypto_hmac.h crypto_hmac.cc
-libcryptolink_la_LDFLAGS = ${BOTAN_LDFLAGS}
-libcryptolink_la_LIBADD = ${BOTAN_LIBS} ${BOTAN_RPATH}
+libb10_cryptolink_la_LDFLAGS = ${BOTAN_LDFLAGS}
+libb10_cryptolink_la_LIBADD = ${BOTAN_LIBS} ${BOTAN_RPATH}
diff --git a/src/lib/cryptolink/tests/Makefile.am b/src/lib/cryptolink/tests/Makefile.am
index 29b30cd..4659a82 100644
--- a/src/lib/cryptolink/tests/Makefile.am
+++ b/src/lib/cryptolink/tests/Makefile.am
@@ -21,10 +21,10 @@ run_unittests_SOURCES += crypto_unittests.cc
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(BOTAN_LDFLAGS) $(GTEST_LDFLAGS) $(AM_LDFLAGS)
run_unittests_LDADD = $(GTEST_LDADD) $(BOTAN_LIBS)
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
-run_unittests_LDADD += $(top_builddir)/src/lib/cryptolink/libcryptolink.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+run_unittests_LDADD += $(top_builddir)/src/lib/cryptolink/libb10-cryptolink.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
endif
noinst_PROGRAMS = $(TESTS)
diff --git a/src/lib/datasrc/Makefile.am b/src/lib/datasrc/Makefile.am
index defc7ac..bb18b75 100644
--- a/src/lib/datasrc/Makefile.am
+++ b/src/lib/datasrc/Makefile.am
@@ -20,25 +20,25 @@ CLEANFILES = *.gcno *.gcda datasrc_messages.h datasrc_messages.cc
CLEANFILES += datasrc_config.h
CLEANFILES += static.zone
-lib_LTLIBRARIES = libdatasrc.la
-libdatasrc_la_SOURCES = data_source.h data_source.cc
-libdatasrc_la_SOURCES += static_datasrc.h static_datasrc.cc
-libdatasrc_la_SOURCES += sqlite3_datasrc.h sqlite3_datasrc.cc
-libdatasrc_la_SOURCES += query.h query.cc
-libdatasrc_la_SOURCES += cache.h cache.cc
-libdatasrc_la_SOURCES += rbnode_rrset.h
-libdatasrc_la_SOURCES += rbtree.h
-libdatasrc_la_SOURCES += zonetable.h zonetable.cc
-libdatasrc_la_SOURCES += zone.h zone_finder_context.cc
-libdatasrc_la_SOURCES += result.h
-libdatasrc_la_SOURCES += logger.h logger.cc
-libdatasrc_la_SOURCES += client.h iterator.h
-libdatasrc_la_SOURCES += database.h database.cc
-libdatasrc_la_SOURCES += factory.h factory.cc
-libdatasrc_la_SOURCES += client_list.h client_list.cc
-libdatasrc_la_SOURCES += memory_datasrc.h memory_datasrc.cc
-nodist_libdatasrc_la_SOURCES = datasrc_messages.h datasrc_messages.cc
-libdatasrc_la_LDFLAGS = -no-undefined -version-info 1:0:1
+lib_LTLIBRARIES = libb10-datasrc.la
+libb10_datasrc_la_SOURCES = data_source.h data_source.cc
+libb10_datasrc_la_SOURCES += static_datasrc.h static_datasrc.cc
+libb10_datasrc_la_SOURCES += sqlite3_datasrc.h sqlite3_datasrc.cc
+libb10_datasrc_la_SOURCES += query.h query.cc
+libb10_datasrc_la_SOURCES += cache.h cache.cc
+libb10_datasrc_la_SOURCES += rbnode_rrset.h
+libb10_datasrc_la_SOURCES += rbtree.h
+libb10_datasrc_la_SOURCES += zonetable.h zonetable.cc
+libb10_datasrc_la_SOURCES += zone.h zone_finder_context.cc
+libb10_datasrc_la_SOURCES += result.h
+libb10_datasrc_la_SOURCES += logger.h logger.cc
+libb10_datasrc_la_SOURCES += client.h iterator.h
+libb10_datasrc_la_SOURCES += database.h database.cc
+libb10_datasrc_la_SOURCES += factory.h factory.cc
+libb10_datasrc_la_SOURCES += client_list.h client_list.cc
+libb10_datasrc_la_SOURCES += memory_datasrc.h memory_datasrc.cc
+nodist_libb10_datasrc_la_SOURCES = datasrc_messages.h datasrc_messages.cc
+libb10_datasrc_la_LDFLAGS = -no-undefined -version-info 1:0:1
pkglib_LTLIBRARIES = sqlite3_ds.la memory_ds.la static_ds.la
@@ -46,26 +46,26 @@ sqlite3_ds_la_SOURCES = sqlite3_accessor.h sqlite3_accessor.cc
sqlite3_ds_la_SOURCES += sqlite3_accessor_link.cc
sqlite3_ds_la_LDFLAGS = -module -avoid-version
sqlite3_ds_la_LDFLAGS += -no-undefined -version-info 1:0:0
-sqlite3_ds_la_LIBADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
-sqlite3_ds_la_LIBADD += libdatasrc.la
+sqlite3_ds_la_LIBADD = $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+sqlite3_ds_la_LIBADD += libb10-datasrc.la
sqlite3_ds_la_LIBADD += $(SQLITE_LIBS)
memory_ds_la_SOURCES = memory_datasrc_link.cc
memory_ds_la_LDFLAGS = -module -avoid-version
-memory_ds_la_LIBADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
-memory_ds_la_LIBADD += libdatasrc.la
+memory_ds_la_LIBADD = $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+memory_ds_la_LIBADD += libb10-datasrc.la
static_ds_la_SOURCES = static_datasrc_link.cc
static_ds_la_LDFLAGS = -module -avoid-version
-static_ds_la_LIBADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
-static_ds_la_LIBADD += libdatasrc.la
+static_ds_la_LIBADD = $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+static_ds_la_LIBADD += libb10-datasrc.la
-libdatasrc_la_LIBADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
-libdatasrc_la_LIBADD += $(top_builddir)/src/lib/dns/libdns++.la
-libdatasrc_la_LIBADD += $(top_builddir)/src/lib/log/liblog.la
-libdatasrc_la_LIBADD += $(top_builddir)/src/lib/cc/libcc.la
-libdatasrc_la_LIBADD += memory/libdatasrc_memory.la # convenience library
-libdatasrc_la_LIBADD += $(SQLITE_LIBS)
+libb10_datasrc_la_LIBADD = $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+libb10_datasrc_la_LIBADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
+libb10_datasrc_la_LIBADD += $(top_builddir)/src/lib/log/libb10-log.la
+libb10_datasrc_la_LIBADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+libb10_datasrc_la_LIBADD += memory/libdatasrc_memory.la # convenience library
+libb10_datasrc_la_LIBADD += $(SQLITE_LIBS)
BUILT_SOURCES = datasrc_config.h datasrc_messages.h datasrc_messages.cc
datasrc_messages.h datasrc_messages.cc: Makefile datasrc_messages.mes
diff --git a/src/lib/datasrc/memory/rdata_encoder.cc b/src/lib/datasrc/memory/rdata_encoder.cc
index 973eb9a..1c27d85 100644
--- a/src/lib/datasrc/memory/rdata_encoder.cc
+++ b/src/lib/datasrc/memory/rdata_encoder.cc
@@ -12,20 +12,23 @@
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
+#include <exceptions/exceptions.h>
+
+#include <util/buffer.h>
+
#include <dns/name.h>
#include <dns/labelsequence.h>
+#include <dns/messagerenderer.h>
#include <dns/rdata.h>
-#include <dns/rdataclass.h> // for a test function
#include <dns/rrclass.h>
#include <dns/rrtype.h>
-#include <util/buffer.h> // for test functions
-
#include "rdata_encoder.h"
#include <boost/static_assert.hpp>
#include <cassert>
+#include <cstring>
#include <vector>
#include <stdint.h>
@@ -58,6 +61,23 @@ struct RdataFieldSpec {
};
/// Specification of RDATA in terms of internal encoding.
+///
+/// The fields must be a sequence of:
+/// <0 or 1 fixed/var-len data field>,
+/// <1 or more domain name fields>,
+/// <1 fixed/var-len data field>,
+/// <1 or more domain name fields>,
+/// <1 fixed/var-len data field>,
+/// ...and so on.
+/// There must not be more than one consecutive data fields (i.e., without
+/// interleaved by a domain name); it would just be inefficient in terms of
+/// memory footprint and iterating over the fields, and it would break
+/// some assumption within the encoder implementation. For consecutive
+/// data fields in the DNS protocol, if all fields have fixed lengths, they
+/// should be combined into a single fixed-length field (like the last 20
+/// bytes of SOA RDATA). If there's a variable length field, they should be
+/// combined into a single variable-length field (such as DNSKEY, which has
+/// 3 fixed-length fields followed by one variable-length field).
struct RdataEncodeSpec {
const uint16_t field_count; // total number of fields (# of fields member)
const uint16_t name_count; // number of domain name fields
@@ -243,72 +263,272 @@ getRdataEncodeSpec(RRClass rrclass, RRType rrtype) {
return (generic_data_spec);
}
-// A temporary helper of temporary encodeRdata(): it calculates the length
-// of the data portion of a NAPTR RDATA (i.e., the RDATA fields before the
-// "replacement" name).
+// This class is a helper for RdataEncoder to divide the content of RDATA
+// fields for encoding by "abusing" the message rendering logic.
+// The idea is to identify domain name fields in the writeName() method,
+// while keeping track of the size and position of other types of data
+// around the names.
+//
+// Technically, this use of inheritance may be considered a violation of
+// Liskov Substitution Principle in that it doesn't actually compress domain
+// names, and some of the methods are not expected to be used.
+// In fact, skip() or trim() may not be make much sense in this context.
+// Nevertheless we keep this idea at the moment. Since the usage is limited
+// (it's only used within this file, and only used with \c Rdata variants),
+// it's hopefully an acceptable practice.
+class RdataFieldComposer : public AbstractMessageRenderer {
+public:
+ RdataFieldComposer() : last_data_pos_(0), encode_spec_(NULL),
+ current_field_(0)
+ {}
+ virtual ~RdataFieldComposer() {}
+ virtual bool isTruncated() const { return (false); }
+ virtual size_t getLengthLimit() const { return (65535); }
+ virtual CompressMode getCompressMode() const { return (CASE_INSENSITIVE); }
+ virtual void setTruncated() {}
+ virtual void setLengthLimit(size_t) {}
+ virtual void setCompressMode(CompressMode) {}
+
+ // Called for each domain name in the RDATA, from the RDATA's toWire()
+ // implementation.
+ virtual void writeName(const Name& name, bool compress) {
+ // First, see if we have other data already stored in the renderer's
+ // buffer, and handle it appropriately.
+ updateOtherData();
+
+ // Then, we should still have a field in the spec, and it must be a
+ // domain name field.
+ if (current_field_ >= encode_spec_->field_count) {
+ isc_throw(BadValue,
+ "RDATA encoder encounters an unexpected name data: " <<
+ name);
+ }
+ const RdataFieldSpec& field =
+ encode_spec_->fields[current_field_++];
+ // Since we know we've passed any prior data field, the next field
+ // must be a domain name as long as it exists; otherwise it's a bug
+ // in the spec (not a bogus input). So we assert() that condition.
+ assert(field.type == RdataFieldSpec::DOMAIN_NAME);
+
+ // It would be compressed iff the field has that attribute.
+ if (compress !=
+ ((field.name_attributes & NAMEATTR_COMPRESSIBLE) != 0)) {
+ isc_throw(BadValue, "RDATA encoder error, inconsistent name "
+ "compression policy: " << name);
+ }
+
+ const LabelSequence labels(name);
+ labels.serialize(labels_placeholder_, sizeof(labels_placeholder_));
+ writeData(labels_placeholder_, labels.getSerializedLength());
+
+ last_data_pos_ += labels.getSerializedLength();
+ }
+ // Clear all internal states and resources for a new set of RDATA.
+ void clearLocal(const RdataEncodeSpec* encode_spec) {
+ AbstractMessageRenderer::clear();
+ encode_spec_ = encode_spec;
+ data_lengths_.clear();
+ last_data_pos_ = 0;
+ }
+ // Called at the beginning of an RDATA.
+ void startRdata() {
+ current_field_ = 0;
+ }
+ // Called at the end of an RDATA.
+ void endRdata() {
+ // Handle any remaining data (there should be no more name). Then
+ // we should reach the end of the fields.
+ updateOtherData();
+ if (current_field_ != encode_spec_->field_count) {
+ isc_throw(BadValue,
+ "RDATA encoder didn't find all expected fields");
+ }
+ }
+
+ // Hold the lengths of variable length fields, in the order of their
+ // appearance. For convenience, allow the encoder to refer to it
+ // directly.
+ vector<uint16_t> data_lengths_;
+
+private:
+ // We use generict write* methods, with the exception of writeName.
+ // So new data can arrive without us knowing it, this considers all new
+ // data to be just data, checking consistency with the field spec, and
+ // if it contains variable-length field, record its length.
+ size_t last_data_pos_;
+ void updateOtherData() {
+ // If we've reached the end of the fields or we are expecting a
+ // domain name, there's nothing to do here.
+ if (current_field_ >= encode_spec_->field_count ||
+ encode_spec_->fields[current_field_].type ==
+ RdataFieldSpec::DOMAIN_NAME) {
+ return;
+ }
+
+ const size_t cur_pos = getLength();
+ const size_t data_len = cur_pos - last_data_pos_;
+
+ const RdataFieldSpec& field = encode_spec_->fields[current_field_];
+ if (field.type == RdataFieldSpec::FIXEDLEN_DATA) {
+ // The data length of a fixed length field must be the one
+ // specified in the field spec.
+ if (data_len != field.fixeddata_len) {
+ isc_throw(BadValue,
+ "RDATA encoding: available data too short for the "
+ "type");
+ }
+ } else {
+ // For encoding purposes, a variable-length data field is
+ // a single field covering all data, even if it may
+ // consist of multiple fields as DNS RDATA (e.g. TXT).
+ if (data_len > 0xffff) {
+ isc_throw(RdataEncodingError, "RDATA field is too large: "
+ << data_len << " bytes");
+ }
+ data_lengths_.push_back(data_len);
+ }
+
+ ++current_field_;
+ last_data_pos_ = cur_pos;
+ }
+
+ // The RDATA field spec of the current session. Set at the beginning of
+ // each session.
+ const RdataEncodeSpec* encode_spec_;
+ // the RDATA field (for encoding) currently handled. Reset to 0 for
+ // each RDATA of the session.
+ size_t current_field_;
+ // Placeholder to convert a name object to a label sequence.
+ uint8_t labels_placeholder_[LabelSequence::MAX_SERIALIZED_LENGTH];
+};
+} // end of unnamed namespace
+
+struct RdataEncoder::RdataEncoderImpl {
+ RdataEncoderImpl() : encode_spec_(NULL), rrsig_buffer_(0),
+ rdata_count_(0)
+ {}
+
+ const RdataEncodeSpec* encode_spec_; // encode spec of current RDATA set
+ RdataFieldComposer field_composer_;
+ util::OutputBuffer rrsig_buffer_;
+ size_t rdata_count_;
+ vector<uint16_t> rrsig_lengths_;
+};
+
+RdataEncoder::RdataEncoder() :
+ impl_(new RdataEncoderImpl)
+{}
+
+RdataEncoder::~RdataEncoder() {
+ delete impl_;
+}
+
+void
+RdataEncoder::start(RRClass rrclass, RRType rrtype) {
+ if (rrtype == RRType::RRSIG()) {
+ isc_throw(BadValue, "RRSIG cannot be encoded as main RDATA type");
+ }
+
+ impl_->encode_spec_ = &getRdataEncodeSpec(rrclass, rrtype);
+ impl_->field_composer_.clearLocal(impl_->encode_spec_);
+ impl_->rrsig_buffer_.clear();
+ impl_->rdata_count_ = 0;
+ impl_->rrsig_lengths_.clear();
+}
+
+void
+RdataEncoder::addRdata(const rdata::Rdata& rdata) {
+ if (impl_->encode_spec_ == NULL) {
+ isc_throw(InvalidOperation,
+ "RdataEncoder::addRdata performed before start");
+ }
+
+ impl_->field_composer_.startRdata();
+ rdata.toWire(impl_->field_composer_);
+ impl_->field_composer_.endRdata();
+ ++impl_->rdata_count_;
+}
+
+void
+RdataEncoder::addSIGRdata(const rdata::Rdata& sig_rdata) {
+ if (impl_->encode_spec_ == NULL) {
+ isc_throw(InvalidOperation,
+ "RdataEncoder::addSIGRdata performed before start");
+ }
+ const size_t cur_pos = impl_->rrsig_buffer_.getLength();
+ sig_rdata.toWire(impl_->rrsig_buffer_);
+ const size_t rrsig_datalen = impl_->rrsig_buffer_.getLength() - cur_pos;
+ if (rrsig_datalen > 0xffff) {
+ isc_throw(RdataEncodingError, "RRSIG is too large: "
+ << rrsig_datalen << " bytes");
+ }
+ impl_->rrsig_lengths_.push_back(rrsig_datalen);
+}
+
size_t
-getNAPTRDataLen(const rdata::Rdata& rdata) {
- const rdata::generic::NAPTR& naptr_rdata =
- dynamic_cast<const rdata::generic::NAPTR&>(rdata);
+RdataEncoder::getStorageLength() const {
+ if (impl_->encode_spec_ == NULL) {
+ isc_throw(InvalidOperation,
+ "RdataEncoder::getStorageLength performed before start");
+ }
- util::OutputBuffer buffer(0);
- rdata.toWire(buffer);
- return (buffer.getLength() - naptr_rdata.getReplacement().getLength());
+ return (sizeof(uint16_t) * impl_->field_composer_.data_lengths_.size() +
+ sizeof(uint16_t) * impl_->rrsig_lengths_.size() +
+ impl_->rrsig_buffer_.getLength() +
+ impl_->field_composer_.getLength());
}
-} // end of unnamed namespace
-namespace testing {
void
-encodeRdata(const rdata::Rdata& rdata, RRClass rrclass, RRType rrtype,
- vector<uint8_t>& data_result, vector<uint16_t>& len_result)
-{
- util::OutputBuffer buffer(0);
- rdata.toWire(buffer);
- util::InputBuffer ibuffer(buffer.getData(), buffer.getLength());
- vector<uint8_t> tmp; // used as temporary placeholder below
+RdataEncoder::encode(void* buf, size_t buf_len) const {
+ if (impl_->encode_spec_ == NULL) {
+ isc_throw(InvalidOperation,
+ "RdataEncoder::encode performed before start");
+ }
+ if (buf == NULL) {
+ isc_throw(BadValue,
+ "RdataEncoder::encode NULL buffer is given");
+ }
+ if (getStorageLength() > buf_len) {
+ isc_throw(BadValue, "RdataEncoder::encode short buffer given");
+ }
- const RdataEncodeSpec& encode_spec = getRdataEncodeSpec(rrclass, rrtype);
- for (size_t i = 0; i < encode_spec.field_count; ++i) {
- const RdataFieldSpec& field_spec = encode_spec.fields[i];
- switch (field_spec.type) {
- case RdataFieldSpec::FIXEDLEN_DATA:
- tmp.resize(field_spec.fixeddata_len);
- ibuffer.readData(&tmp[0], tmp.size());
- data_result.insert(data_result.end(), tmp.begin(), tmp.end());
- break;
- case RdataFieldSpec::VARLEN_DATA:
- {
- // In the vast majority cases of our supported RR types,
- // variable-length data fields are placed at the end of RDATA,
- // so the length of the field should be the remaining length
- // of the output buffer. The only exception is NAPTR, for which
- // we use an ad hoc workaround (remember this function is for
- // initial testing only, and will be cleaned up eventually).
- const size_t pos = ibuffer.getPosition();
- const size_t data_len = rrtype == RRType::NAPTR() ?
- getNAPTRDataLen(rdata) : (ibuffer.getLength() - pos);
- tmp.resize(data_len);
- ibuffer.readData(&tmp[0], tmp.size());
- data_result.insert(data_result.end(), tmp.begin(), tmp.end());
- len_result.push_back(data_len);
- break;
- }
- case RdataFieldSpec::DOMAIN_NAME:
- {
- const Name name(ibuffer);
- const LabelSequence labels(name);
- uint8_t labels_holder[LabelSequence::MAX_SERIALIZED_LENGTH];
- labels.serialize(labels_holder, sizeof(labels_holder));
- data_result.insert(data_result.end(), labels_holder,
- labels_holder + labels.getSerializedLength());
- break;
- }
- }
+ uint8_t* const dp_beg = reinterpret_cast<uint8_t*>(buf);
+ uint8_t* dp = dp_beg;
+ uint16_t* lenp = reinterpret_cast<uint16_t*>(buf);
+
+ // Encode list of lengths for variable length fields (if any)
+ if (!impl_->field_composer_.data_lengths_.empty()) {
+ const size_t varlen_fields_len =
+ impl_->field_composer_.data_lengths_.size() * sizeof(uint16_t);
+ std::memcpy(lenp, &impl_->field_composer_.data_lengths_[0],
+ varlen_fields_len);
+ lenp += impl_->field_composer_.data_lengths_.size();
+ dp += varlen_fields_len;
}
+ // Encode list of lengths for RRSIGs (if any)
+ if (!impl_->rrsig_lengths_.empty()) {
+ const size_t rrsigs_len =
+ impl_->rrsig_lengths_.size() * sizeof(uint16_t);
+ std::memcpy(lenp, &impl_->rrsig_lengths_[0], rrsigs_len);
+ dp += rrsigs_len;
+ }
+ // Encode main RDATA
+ std::memcpy(dp, impl_->field_composer_.getData(),
+ impl_->field_composer_.getLength());
+ dp += impl_->field_composer_.getLength();
+ // Encode RRSIGs, if any
+ std::memcpy(dp, impl_->rrsig_buffer_.getData(),
+ impl_->rrsig_buffer_.getLength());
+ dp += impl_->rrsig_buffer_.getLength();
+
+ // The validation at the entrance must ensure this
+ assert(buf_len >= dp - dp_beg);
}
+namespace testing {
void
foreachRdataField(RRClass rrclass, RRType rrtype,
+ size_t rdata_count,
const vector<uint8_t>& encoded_data,
const vector<uint16_t>& varlen_list,
NameCallback name_callback, DataCallback data_callback)
@@ -318,40 +538,62 @@ foreachRdataField(RRClass rrclass, RRType rrtype,
size_t off = 0;
size_t varlen_count = 0;
size_t name_count = 0;
- for (size_t i = 0; i < encode_spec.field_count; ++i) {
- const RdataFieldSpec& field_spec = encode_spec.fields[i];
- switch (field_spec.type) {
- case RdataFieldSpec::FIXEDLEN_DATA:
- if (data_callback) {
- data_callback(&encoded_data.at(off), field_spec.fixeddata_len);
+ for (size_t count = 0; count < rdata_count; ++count) {
+ for (size_t i = 0; i < encode_spec.field_count; ++i) {
+ const RdataFieldSpec& field_spec = encode_spec.fields[i];
+ switch (field_spec.type) {
+ case RdataFieldSpec::FIXEDLEN_DATA:
+ if (data_callback) {
+ data_callback(&encoded_data.at(off),
+ field_spec.fixeddata_len);
+ }
+ off += field_spec.fixeddata_len;
+ break;
+ case RdataFieldSpec::VARLEN_DATA:
+ {
+ const size_t varlen = varlen_list.at(varlen_count);
+ if (data_callback && varlen > 0) {
+ data_callback(&encoded_data.at(off), varlen);
+ }
+ off += varlen;
+ ++varlen_count;
+ break;
}
- off += field_spec.fixeddata_len;
- break;
- case RdataFieldSpec::VARLEN_DATA:
- {
- const size_t varlen = varlen_list.at(varlen_count);
- if (data_callback && varlen > 0) {
- data_callback(&encoded_data.at(off), varlen);
+ case RdataFieldSpec::DOMAIN_NAME:
+ {
+ ++name_count;
+ const LabelSequence labels(&encoded_data.at(off));
+ if (name_callback) {
+ name_callback(labels, field_spec.name_attributes);
+ }
+ off += labels.getSerializedLength();
+ break;
}
- off += varlen;
- ++varlen_count;
- break;
- }
- case RdataFieldSpec::DOMAIN_NAME:
- {
- ++name_count;
- const LabelSequence labels(&encoded_data.at(off));
- if (name_callback) {
- name_callback(labels, field_spec.name_attributes);
}
- off += labels.getSerializedLength();
- break;
- }
}
}
+ assert(name_count == encode_spec.name_count * rdata_count);
+ assert(varlen_count == encode_spec.varlen_count * rdata_count);
+}
+
+void
+foreachRRSig(const vector<uint8_t>& encoded_data,
+ const vector<uint16_t>& rrsiglen_list,
+ DataCallback data_callback)
+{
+ size_t rrsig_totallen = 0;
+ for (vector<uint16_t>::const_iterator it = rrsiglen_list.begin();
+ it != rrsiglen_list.end();
+ ++it) {
+ rrsig_totallen += *it;
+ }
+ assert(encoded_data.size() >= rrsig_totallen);
- assert(name_count == encode_spec.name_count);
- assert(varlen_count == encode_spec.varlen_count);
+ const uint8_t* dp = &encoded_data[encoded_data.size() - rrsig_totallen];
+ for (size_t i = 0; i < rrsiglen_list.size(); ++i) {
+ data_callback(dp, rrsiglen_list[i]);
+ dp += rrsiglen_list[i];
+ }
}
} // namespace testing
diff --git a/src/lib/datasrc/memory/rdata_encoder.h b/src/lib/datasrc/memory/rdata_encoder.h
index 7f29959..7524f94 100644
--- a/src/lib/datasrc/memory/rdata_encoder.h
+++ b/src/lib/datasrc/memory/rdata_encoder.h
@@ -15,19 +15,97 @@
#ifndef DATASRC_MEMORY_RDATA_ENCODER_H
#define DATASRC_MEMORY_RDATA_ENCODER_H 1
+#include <exceptions/exceptions.h>
+
#include <dns/labelsequence.h>
#include <dns/rdata.h>
#include <dns/rrclass.h>
#include <dns/rrtype.h>
#include <boost/function.hpp>
+#include <boost/noncopyable.hpp>
#include <vector>
+/// \file rdata_encoder.h
+/// \brief Set of utility classes for encoding RDATA in memory efficient way.
+///
+/// This file defines a set of interfaces (classes, types, constants) to
+/// manipulate a given set of RDATA of the same type (normally associated with
+/// an RRset) that may be accompanied with RRSIGs in a memory efficient way.
+///
+/// The entire set of RDATA is stored in a packed form in a contiguous
+/// memory region. It's opaque data, without containing non trivial
+/// data structures, so it can be located anywhere in the memory or even
+/// dumped to a file.
+///
+/// Two main classes are provided: one is
+/// \c isc::datasrc::memory::RdataEncoder, which allows
+/// the application to create encoded data for a set of RDATA;
+/// the other (TBD) provides an interface to iterate over encoded set of
+/// RDATA for purposes such as data lookups or rendering the data into the
+/// wire format to create a DNS message.
+///
+/// The actual encoding detail is private information to the implementation,
+/// and the application shouldn't assume anything about that except that
+/// each RDATA is considered to consist of one or more generic fields,
+/// and each field is typed as either opaque data or a domain name.
+/// A domain name field has additional attributes
+/// (see \c isc::datasrc::memory::RdataNameAttributes)
+/// so the application can change how the name should be handled in terms
+/// of the DNS protocol (e.g., whether it's subject to name compression).
+///
+/// The following are the current implementation of internal encoding, shown
+/// only for reference. Applications must not assume this particular form
+/// for the encoded data; in fact, it can change in a future version of the
+/// implementation.
+/// \verbatim
+// The encoded data begin with a series of 16-bit length fields (values are
+// stored in the host byte order). The sequence may be empty.
+// uint16_t n1_1: size of 1st variable len field (if any) of 1st RDATA
+// uint16_t n1_2: size of 2nd variable len field of 1st RDATA
+// ...
+// uint16_t nN_M: size of last (Mth) variable len field of last (Nth) RDATA
+// uint16_t ns1: size of 1st RRSIG (if any) data
+// ...
+// uint16_t nsL: size of last (Lth) RRSIG data
+// A sequence of packed data fields follows:
+// uint8_t[]: data field value, length specified by nI_J (in case it's
+// variable-length) or by the per type field spec (in case it's
+// fixed-length).
+// or
+// opaque data, LabelSequence::getSerializedLength() bytes: data for a name
+// uint8_t[ns1]: 1st RRSIG data
+// ...
+// uint8_t[nsL]: last RRSIG data
+// \endverbatim
+///
+/// As described above, this implementation treats RRSIGs as opaque data
+/// that don't contain any domain names. Technically, it has a "signer"
+/// domain name field in the sense of RFC4034. In practice, however, this
+/// field is essentially mere data; it's not subject to name compression,
+/// and since it's very likely to be a subdomain of (or equal to) the
+/// owner name of the corresponding RR (or, if used in a DNS message,
+/// some domain name that already appears before this field), so it won't
+/// be a target of name compression either. By treating the entire RRSIG
+/// as single-field data we can make the implementation simpler, and probably
+/// make it faster in rendering it into a DNS message.
+
namespace isc {
namespace datasrc {
namespace memory {
+/// \brief General error in RDATA encoding.
+///
+/// This is thrown when \c RdataEncoder encounters a rare, unsupported
+/// situation. a method is called for a name or RRset which
+/// is not in or below the zone.
+class RdataEncodingError : public Exception {
+public:
+ RdataEncodingError(const char* file, size_t line, const char* what) :
+ Exception(file, line, what) {}
+};
+
/// \brief Attributes of domain name fields of encoded RDATA.
///
/// The enum values define special traits of the name that can affect how
@@ -40,42 +118,194 @@ enum RdataNameAttributes {
///< handling
};
-// We use the following quick-hack version of encoder and "foreach"
-// operator until we implement the complete versions. The plan is to
+/// \brief RDATA encoder.
+///
+/// This class provides interfaces to encode a set of RDATA of a specific
+/// RR class and type, possibly with their RRSIG RDATAs, in a memory-efficient
+/// format. In many cases these sets of RDATA come from a specific (signed
+/// or unsigned) RRset.
+///
+/// It is expected for a single \c RdataEncoder object to be used multiple
+/// times for different sets of RDATA, such as in loading an entire zone
+/// into memory. Each encoding session begins with the \c start() method,
+/// which sets the context for the specific RR class and type to be encoded.
+/// Any number of calls to \c addRdata() or \c addSIGRdata() follow, each
+/// of which updates the internal state of the encoder with the encoding
+/// information for the given RDATA or RRSIG RDATA, respectively.
+/// The \c addRdata() is expected to be called with an
+/// \c isc::dns::rdata::Rdata object
+/// of the specified class and type, and \c addRdata() checks the consistency
+/// for the purpose of encoding (but it's not completely type safe; for
+/// example, it wouldn't distinguish TXT RDATA and HINFO RDATA.
+/// Likewise, an \c isc::dns::rdata::Rdata given to \c addSIGRdata() is
+/// expected to be of RRSIG, but the method does not check the assumption).
+///
+/// After passing the complete set of RDATA and their RRSIG, the application
+/// is expected to call \c getStorageLength() to know the size of storage
+/// that is sufficient to store all encoded data. Normally the application
+/// would allocate a memory region of that size, and then call \c encode()
+/// with the prepared region. The \c encode() method dumps encoded data
+/// to the given memory region.
+///
+/// The caller can reuse the \c RdataEncoder object for another set of RDATA
+/// by repeating the session from \c start().
+class RdataEncoder : boost::noncopyable {
+public:
+ /// \brief Default constructor.
+ RdataEncoder();
+
+ /// \brief The destrcutor.
+ ~RdataEncoder();
+
+ /// \brief Start the encoding session.
+ ///
+ /// It re-initializes the internal encoder state for a new encoding
+ /// session. The \c rrclass and \c rrtype parameters specify the
+ /// type of RDATA to be encoded in the new session. Note that if the
+ /// set of RDATA is signed, \c rrtype always specifies the "signed" type;
+ /// it must not be RRSIG.
+ ///
+ /// \throw BadValue RRSIG is specified for rrtype.
+ ///
+ /// \param rrclass The RR class of RDATA to be encoded in the session.
+ /// \param rrtype The RR type of RDATA to be encoded in the session.
+ void start(dns::RRClass rrclass, dns::RRType rrtype);
+
+ /// \brief Add an RDATA for encoding.
+ ///
+ /// This method updates internal state of the \c RdataEncoder() with the
+ /// given RDATA so it will be part of the encoded data in a subsequent
+ /// call to \c encode().
+ ///
+ /// The given \c rdata must be of the RR class and type specified at
+ /// the prior call to \c start(). This method checks the assumption
+ /// to some extent, but the check is not complete; this is generally
+ /// the responsibility of the caller.
+ ///
+ /// The caller can destroy \c rdata after this call is completed.
+ ///
+ /// \note This implementation does not support RDATA (or any subfield of
+ /// it) whose size exceeds 65535 bytes (max uint16_t value). Such RDATA
+ /// may not necessarily be considered invalid in terms of protocol
+ /// specification, but in practice it's mostly useless because the
+ /// corresponding RR won't fit in any valid DNS message.
+ ///
+ /// As long as the \c rdata is of the correct type and its size is normal,
+ /// this method should normally be exception free. If it throws, however,
+ /// it doesn't always provide the strong exception guarantee. In general,
+ /// the caller needs to either destroy the encoder object or restart a
+ /// new session from \c start() should this method throws an exception.
+ ///
+ /// \throw InvalidOperation called before start().
+ /// \throw BadValue inconsistent data found.
+ /// \throw RdataEncodingError A very unusual case, such as over 64KB RDATA.
+ /// \throw std::bad_alloc Internal memory allocation failure.
+ ///
+ /// \param rdata An RDATA to be encoded in the session.
+ void addRdata(const dns::rdata::Rdata& rdata);
+
+ /// \brief Add an RRSIG RDATA for encoding.
+ ///
+ /// This method updates internal state of the \c RdataEncoder() with the
+ /// given RDATA, which is assumed to be of type RRSIG that covers the
+ /// type specified at the time of \c start() for the encoding session.
+ /// The corresponding data for the RRSIG RDATA will be encoded in a
+ /// subsequent call to \c encode().
+ ///
+ /// The passed \c sig_rdata is expected to be of type RRSIG and cover
+ /// the RR type specified at the call to \c start() to this encoding
+ /// session. But this method does not check if it is the case at all;
+ /// it could even accept any type of RDATA as opaque data. It's caller's
+ /// responsibility to ensure the assumption.
+ ///
+ /// The caller can destroy \c rdata after this call is completed.
+ ///
+ /// \note Like addRdata(), this implementation does not support
+ /// RRSIG RDATA whose size (in the form of wire format) exceeds 65535
+ /// bytes.
+ ///
+ /// The same note about exception safety as \c addRdata() applies.
+ ///
+ /// \throw InvalidOperation called before start().
+ /// \throw RdataEncodingError A very unusual case, such as over 64KB RDATA.
+ /// \throw std::bad_alloc Internal memory allocation failure.
+ ///
+ /// \param sig_rdata An RDATA to be encoded in the session. Supposed to
+ /// be of type RRSIG.
+ void addSIGRdata(const dns::rdata::Rdata& sig_rdata);
+
+ /// \brief Return the length of space for encoding for the session.
+ ///
+ /// It returns the size of the encoded data that would be generated for
+ /// the set of RDATA (and RRSIGs) in the encoder at the call of this
+ /// method. It's ensured that a buffer of that size can be safely passed
+ /// to \c encode() unless there's no other "add" method is called by then.
+ ///
+ /// As long as this method is called after start(), it never throws.
+ ///
+ /// \throw InvalidOperation called before start().
+ ///
+ /// \return The expected size of the encoded data at the time of the call.
+ size_t getStorageLength() const;
+
+ /// \brief Encode RDATAs of the session to a buffer.
+ ///
+ /// This method dumps encoded data for the stored set of RDATA and
+ /// their RRSIGs to a given buffer. The buffer must have a size
+ /// at least as large as the return value of a prior call to
+ /// \c getStorageLength() (it may be larger than that).
+ ///
+ /// The given buffer must be aligned at the natural boundary for
+ /// 16-bit integers. The method doesn't check this condition; it's
+ /// caller's responsibility to ensure that. Note: the alignment
+ /// requirement may change in a future version of this implementation.
+ ///
+ /// As long as this method is called after start() and the buffer is
+ /// valid with a sufficient size, this method never throws.
+ ///
+ /// \throw InvalidOperation called before start().
+ /// \throw BadValue buffer is NULL or it's too short for the encoded data.
+ ///
+ /// \param buf A pointer to the buffer to which encoded data are to be
+ /// dumped.
+ /// \param buf_len The size of the buffer in bytes.
+ void encode(void* buf, size_t buf_len) const;
+
+private:
+ struct RdataEncoderImpl;
+ RdataEncoderImpl* impl_;
+};
+
+// We use the following quick-hack version of "foreach"
+// operators until we implement the complete versions. The plan is to
// update the test cases that use these functions with the complete
// functions/classes, and then remove the entire namespace.
namespace testing {
-// "Encode" given RDATA of given RR class and type.
-//
-// Fixed/variable-length data fields are encoded in their wire-format;
-// domain names are encoded in the form of:
-// - nlen: name data length (1 byte)
-// - olen: offset data length (1 byte)
-// - name data (nlen bytes)
-// - offset data (olen bytes)
-//
-// The encoded results are appended to data_result.
-// If the RDATA contain variable-length data fields, the lengths of the
-// these fields will be appended in len_result, in the order of appearance.
-void encodeRdata(const dns::rdata::Rdata& rdata, dns::RRClass rrclass,
- dns::RRType rrtype, std::vector<uint8_t>& data_result,
- std::vector<uint16_t>& len_result);
-
// Callbacks used in foreachRdataField.
typedef boost::function<void(const dns::LabelSequence&,
RdataNameAttributes)> NameCallback;
typedef boost::function<void(const uint8_t*, size_t)> DataCallback;
-// Iterate over each RDATA field (in terms of the internal encoding) stored
-// in encoded_data, and call the given callback for each data (for
-// domain name fields, name_callback will be called; for normal data fields
-// data_callback will be called). If the encoded data contain variable-length
-// data fields, varlen_list should store a sequence of their lengths, in the
-// of the appearance.
+// Iterate over each field (in terms of the internal encoding) of each
+// RDATA stored in encoded_data, and call the given callback for each
+// data (for domain name fields, name_callback will be called; for
+// normal data fields data_callback will be called). rdata_count is
+// the number of RDATAs. If the encoded data contain variable-length
+// data fields, varlen_list should store a sequence of their lengths,
+// in the order of the appearance.
void foreachRdataField(dns::RRClass rrclass, dns::RRType rrtype,
+ size_t rdata_count,
const std::vector<uint8_t>& encoded_data,
const std::vector<uint16_t>& varlen_list,
NameCallback name_callback, DataCallback data_callback);
+
+// Iterate over each RRSIG stored in encoded_data, and call the given
+// callback for each. rrsiglen_list should store a sequence of their lengths,
+// in the order of the appearance. Its size is the number of RRSIGs.
+// The list can be empty, in which case this function does nothing.
+void foreachRRSig(const std::vector<uint8_t>& encoded_data,
+ const std::vector<uint16_t>& rrsiglen_list,
+ DataCallback data_callback);
}
} // namespace memory
diff --git a/src/lib/datasrc/memory/tests/Makefile.am b/src/lib/datasrc/memory/tests/Makefile.am
index cef1fed..1396600 100644
--- a/src/lib/datasrc/memory/tests/Makefile.am
+++ b/src/lib/datasrc/memory/tests/Makefile.am
@@ -25,9 +25,9 @@ run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
run_unittests_LDADD = $(builddir)/../libdatasrc_memory.la
-run_unittests_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
+run_unittests_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
run_unittests_LDADD += $(GTEST_LDADD)
endif
diff --git a/src/lib/datasrc/memory/tests/rdata_encoder_unittest.cc b/src/lib/datasrc/memory/tests/rdata_encoder_unittest.cc
index 33c09af..2854c37 100644
--- a/src/lib/datasrc/memory/tests/rdata_encoder_unittest.cc
+++ b/src/lib/datasrc/memory/tests/rdata_encoder_unittest.cc
@@ -12,10 +12,15 @@
// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
+#include <exceptions/exceptions.h>
+
+#include <util/buffer.h>
+
#include <dns/name.h>
#include <dns/labelsequence.h>
#include <dns/messagerenderer.h>
#include <dns/rdata.h>
+#include <dns/rdataclass.h>
#include <dns/rrclass.h>
#include <dns/rrtype.h>
@@ -26,7 +31,9 @@
#include <gtest/gtest.h>
#include <boost/bind.hpp>
+#include <boost/foreach.hpp>
+#include <cstring>
#include <set>
#include <string>
#include <vector>
@@ -49,10 +56,8 @@ struct TestRdata {
const size_t n_varlen_fields; // expected # of variable-len fields
};
-// This test data consist of all supported types of RDATA (+ some
-// unusual and corner cases). We'll construct corresponding Rdata
-// object from this, and compare its wire format data both generated
-// by normal libdns++ interface and via encoding conversion.
+// This test data consist of (almost) all supported types of RDATA (+ some
+// unusual and corner cases).
const TestRdata test_rdata_list[] = {
{"IN", "A", "192.0.2.1", 0},
{"IN", "NS", "ns.example.com", 0},
@@ -71,11 +76,7 @@ const TestRdata test_rdata_list[] = {
{"IN", "DNAME", "dname.example.com", 0},
{"IN", "DS", "12892 5 2 5F0EB5C777586DE18DA6B5", 1},
{"IN", "SSHFP", "1 1 dd465c09cfa51fb45020cc83316fff", 1},
- // Note: in our implementation RRSIG is treated as opaque data (including
- // the signer name). We use "com" for signer so it won't be a compress
- // target in the test.
- {"IN", "RRSIG", "SOA 5 2 3600 20120814220826 20120715220826 12345 "
- "com. FAKEFAKEFAKE", 1},
+ // We handle RRSIG separately, so it's excluded from the list
{"IN", "NSEC", "next.example.com. A AAAA NSEC RRSIG", 1},
{"IN", "DNSKEY", "256 3 5 FAKEFAKE", 1},
{"IN", "DHCID", "FAKEFAKE", 1},
@@ -110,7 +111,69 @@ renderDataField(MessageRenderer* renderer, const uint8_t* data,
renderer->writeData(data, data_len);
}
-TEST(RdataFieldSpec, checkData) {
+class RdataEncoderTest : public ::testing::Test {
+protected:
+ RdataEncoderTest() : a_rdata_(createRdata(RRType::A(), RRClass::IN(),
+ "192.0.2.53")),
+ aaaa_rdata_(createRdata(RRType::AAAA(), RRClass::IN(),
+ "2001:db8::53")),
+ rrsig_rdata_(createRdata(
+ RRType::RRSIG(), RRClass::IN(),
+ "A 5 2 3600 20120814220826 "
+ "20120715220826 12345 com. FAKE"))
+ {}
+
+ // This helper test method constructs encodes the given list of RDATAs
+ // (in rdata_list), and then iterates over the data, rendering the fields
+ // in the wire format. It then compares the wire data with the one
+ // generated by the normal libdns++ interface to see the encoding/decoding
+ // works as intended.
+ void checkEncode(RRClass rrclass, RRType rrtype,
+ const vector<ConstRdataPtr>& rdata_list,
+ size_t expected_varlen_fields,
+ const vector<ConstRdataPtr>& rrsig_list);
+ // A wraper for RdataEncoder::encode() with buffer overrun check.
+ void encodeWrapper(size_t data_len);
+
+ void addRdataCommon(const vector<ConstRdataPtr>& rrsigs);
+ void addRdataMultiCommon(const vector<ConstRdataPtr>& rrsigs);
+
+ // Some commonly used RDATA
+ const ConstRdataPtr a_rdata_;
+ const ConstRdataPtr aaaa_rdata_;
+ const ConstRdataPtr rrsig_rdata_;
+
+ RdataEncoder encoder_;
+ vector<uint8_t> encoded_data_;
+ MessageRenderer expected_renderer_;
+ MessageRenderer actual_renderer_;
+ vector<ConstRdataPtr> rdata_list_;
+};
+
+
+void
+RdataEncoderTest::encodeWrapper(size_t data_len) {
+ // make sure the data buffer is large enough for the canary
+ encoded_data_.resize(data_len + 2);
+ // set the canary data
+ encoded_data_.at(data_len) = 0xde;
+ encoded_data_.at(data_len + 1) = 0xad;
+ // encode, then check the canary is intact
+ encoder_.encode(&encoded_data_[0], data_len);
+ EXPECT_EQ(0xde, encoded_data_.at(data_len));
+ EXPECT_EQ(0xad, encoded_data_.at(data_len + 1));
+ // shrink the data buffer to the originally expected size (some tests
+ // expect that). the actual encoded data should be intact.
+ encoded_data_.resize(data_len);
+}
+
+void
+RdataEncoderTest::checkEncode(RRClass rrclass, RRType rrtype,
+ const vector<ConstRdataPtr>& rdata_list,
+ size_t expected_varlen_fields,
+ const vector<ConstRdataPtr>& rrsig_list =
+ vector<ConstRdataPtr>())
+{
// These two names will be rendered before and after the test RDATA,
// to check in case the RDATA contain a domain name whether it's
// compressed or not correctly. The names in the RDATA should basically
@@ -120,10 +183,6 @@ TEST(RdataFieldSpec, checkData) {
const Name dummy_name("com");
const Name dummy_name2("example.com");
- MessageRenderer expected_renderer, actual_renderer;
- vector<uint8_t> encoded_data;
- vector<uint16_t> varlen_list;
-
// The set of RR types that require additional section processing.
// We'll pass it to renderNameField to check the stored attribute matches
// our expectation.
@@ -131,42 +190,292 @@ TEST(RdataFieldSpec, checkData) {
need_additionals.insert(RRType::NS());
need_additionals.insert(RRType::MX());
need_additionals.insert(RRType::SRV());
+ expected_renderer_.clear();
+ actual_renderer_.clear();
+ encoded_data_.clear();
- for (size_t i = 1; test_rdata_list[i].rrclass != NULL; ++i) {
- SCOPED_TRACE(string(test_rdata_list[i].rrclass) + "/" +
- test_rdata_list[i].rrtype);
+ const bool additional_required =
+ (need_additionals.find(rrtype) != need_additionals.end());
- expected_renderer.clear();
- actual_renderer.clear();
- expected_renderer.writeName(dummy_name);
- actual_renderer.writeName(dummy_name);
- encoded_data.clear();
- varlen_list.clear();
+ // Build expected wire-format data
+ expected_renderer_.writeName(dummy_name);
+ BOOST_FOREACH(const ConstRdataPtr& rdata, rdata_list) {
+ rdata->toWire(expected_renderer_);
+ }
+ expected_renderer_.writeName(dummy_name2);
+ BOOST_FOREACH(const ConstRdataPtr& rdata, rrsig_list) {
+ rdata->toWire(expected_renderer_);
+ }
+
+ // Then build wire format data using the encoded data.
+ // 1st dummy name
+ actual_renderer_.writeName(dummy_name);
+
+ // Create encoded data
+ encoder_.start(rrclass, rrtype);
+ BOOST_FOREACH(const ConstRdataPtr& rdata, rdata_list) {
+ encoder_.addRdata(*rdata);
+ }
+ BOOST_FOREACH(const ConstRdataPtr& rdata, rrsig_list) {
+ encoder_.addSIGRdata(*rdata);
+ }
+ encodeWrapper(encoder_.getStorageLength());
+
+ // If this type of RDATA is expected to contain variable-length fields,
+ // we brute force the encoded data, exploiting our knowledge of actual
+ // encoding, then adjust the encoded data excluding the list of length
+ // fields. This is ugly, but we should be able to eliminate this hack
+ // at #2096.
+ vector<uint16_t> varlen_list;
+ if (expected_varlen_fields > 0) {
+ const size_t varlen_list_size =
+ rdata_list.size() * expected_varlen_fields * sizeof(uint16_t);
+ ASSERT_LE(varlen_list_size, encoded_data_.size());
+ varlen_list.resize(rdata_list.size() * expected_varlen_fields);
+ std::memcpy(&varlen_list[0], &encoded_data_[0], varlen_list_size);
+ encoded_data_.assign(encoded_data_.begin() + varlen_list_size,
+ encoded_data_.end());
+ }
+ // If RRSIGs are given, we need to extract the list of the RRSIG lengths
+ // and adjust encoded_data_ further (this will be unnecessary at #2096,
+ // too).
+ vector<uint16_t> rrsiglen_list;
+ if (rrsig_list.size() > 0) {
+ const size_t rrsig_len_size = rrsig_list.size() * sizeof(uint16_t);
+ ASSERT_LE(rrsig_len_size, encoded_data_.size());
+ rrsiglen_list.resize(rrsig_list.size() * rrsig_len_size);
+ std::memcpy(&rrsiglen_list[0], &encoded_data_[0], rrsig_len_size);
+ encoded_data_.assign(encoded_data_.begin() + rrsig_len_size,
+ encoded_data_.end());
+ }
+
+ // Create wire-format data from the encoded data
+ foreachRdataField(rrclass, rrtype, rdata_list.size(), encoded_data_,
+ varlen_list,
+ boost::bind(renderNameField, &actual_renderer_,
+ additional_required, _1, _2),
+ boost::bind(renderDataField, &actual_renderer_, _1, _2));
+ // 2nd dummy name
+ actual_renderer_.writeName(dummy_name2);
+ // Finally, dump any RRSIGs in wire format.
+ foreachRRSig(encoded_data_, rrsiglen_list,
+ boost::bind(renderDataField, &actual_renderer_, _1, _2));
+
+ // Two sets of wire-format data should be identical.
+ matchWireData(expected_renderer_.getData(), expected_renderer_.getLength(),
+ actual_renderer_.getData(), actual_renderer_.getLength());
+}
+
+void
+RdataEncoderTest::addRdataCommon(const vector<ConstRdataPtr>& rrsigs) {
+ // Basic check on the encoded data for (most of) all supported RR types,
+ // in a comprehensive manner.
+ for (size_t i = 0; test_rdata_list[i].rrclass != NULL; ++i) {
+ SCOPED_TRACE(string(test_rdata_list[i].rrclass) + "/" +
+ test_rdata_list[i].rrtype);
const RRClass rrclass(test_rdata_list[i].rrclass);
const RRType rrtype(test_rdata_list[i].rrtype);
const ConstRdataPtr rdata = createRdata(rrtype, rrclass,
test_rdata_list[i].rdata);
- rdata->toWire(expected_renderer);
- expected_renderer.writeName(dummy_name2);
-
- const bool additional_required =
- (need_additionals.find(rrtype) != need_additionals.end());
-
- encodeRdata(*rdata, rrclass, rrtype, encoded_data, varlen_list);
- EXPECT_EQ(varlen_list.size(), test_rdata_list[i].n_varlen_fields);
- foreachRdataField(rrclass, rrtype, encoded_data, varlen_list,
- boost::bind(renderNameField, &actual_renderer,
- additional_required, _1, _2),
- boost::bind(renderDataField, &actual_renderer,
- _1, _2));
-
- actual_renderer.writeName(dummy_name2);
- matchWireData(expected_renderer.getData(),
- expected_renderer.getLength(),
- actual_renderer.getData(),
- actual_renderer.getLength());
+ rdata_list_.clear();
+ rdata_list_.push_back(rdata);
+ checkEncode(rrclass, rrtype, rdata_list_,
+ test_rdata_list[i].n_varlen_fields, rrsigs);
}
}
+TEST_F(RdataEncoderTest, addRdata) {
+ vector<ConstRdataPtr> rrsigs;
+ addRdataCommon(rrsigs); // basic tests without RRSIGs (empty vector)
+
+ // Test with RRSIGs (covered type doesn't always match, but the encoder
+ // doesn't check that)
+ rrsigs.push_back(rrsig_rdata_);
+ addRdataCommon(rrsigs);
+}
+
+void
+RdataEncoderTest::addRdataMultiCommon(const vector<ConstRdataPtr>& rrsigs) {
+ // Similar to addRdata(), but test with multiple RDATAs.
+ // Four different cases are tested: a single fixed-len RDATA (A),
+ // fixed-len data + domain name (MX), variable-len data only (TXT),
+ // variable-len data + domain name (NAPTR).
+ ConstRdataPtr a_rdata2 = createRdata(RRType::A(), RRClass::IN(),
+ "192.0.2.54");
+ rdata_list_.clear();
+ rdata_list_.push_back(a_rdata_);
+ rdata_list_.push_back(a_rdata2);
+ checkEncode(RRClass::IN(), RRType::A(), rdata_list_, 0, rrsigs);
+
+ ConstRdataPtr mx_rdata1 = createRdata(RRType::MX(), RRClass::IN(),
+ "5 mx1.example.com");
+ ConstRdataPtr mx_rdata2 = createRdata(RRType::MX(), RRClass::IN(),
+ "10 mx2.example.com");
+ rdata_list_.clear();
+ rdata_list_.push_back(mx_rdata1);
+ rdata_list_.push_back(mx_rdata2);
+ checkEncode(RRClass::IN(), RRType::MX(), rdata_list_, 0, rrsigs);
+
+ ConstRdataPtr txt_rdata1 = createRdata(RRType::TXT(), RRClass::IN(),
+ "foo bar baz");
+ ConstRdataPtr txt_rdata2 = createRdata(RRType::TXT(), RRClass::IN(),
+ "another text data");
+ rdata_list_.clear();
+ rdata_list_.push_back(txt_rdata1);
+ rdata_list_.push_back(txt_rdata2);
+ checkEncode(RRClass::IN(), RRType::TXT(), rdata_list_, 1, rrsigs);
+
+ ConstRdataPtr naptr_rdata1 =
+ createRdata(RRType::NAPTR(), RRClass::IN(),
+ "100 50 \"s\" \"http\" \"\" _http._tcp.example.com");
+ ConstRdataPtr naptr_rdata2 =
+ createRdata(RRType::NAPTR(), RRClass::IN(),
+ "200 100 \"s\" \"http\" \"\" _http._tcp.example.com");
+ rdata_list_.clear();
+ rdata_list_.push_back(naptr_rdata1);
+ rdata_list_.push_back(naptr_rdata2);
+ checkEncode(RRClass::IN(), RRType::NAPTR(), rdata_list_, 1, rrsigs);
+}
+
+TEST_F(RdataEncoderTest, encodeLargeRdata) {
+ // There should be no reason for a large RDATA to fail in encoding,
+ // but we check such a case explicitly.
+
+ encoded_data_.resize(65535); // max unsigned 16-bit int
+ isc::util::InputBuffer buffer(&encoded_data_[0], encoded_data_.size());
+ const in::DHCID large_dhcid(buffer, encoded_data_.size());
+
+ encoder_.start(RRClass::IN(), RRType::DHCID());
+ encoder_.addRdata(large_dhcid);
+ encodeWrapper(encoder_.getStorageLength());
+
+ // The encoded data should be identical to the original one.
+ ASSERT_LT(sizeof(uint16_t), encoder_.getStorageLength());
+ isc::util::InputBuffer ib(&encoded_data_[2], encoded_data_.size() - 2);
+ const in::DHCID encoded_dhcid(ib, ib.getLength());
+ EXPECT_EQ(0, encoded_dhcid.compare(large_dhcid));
+}
+
+TEST_F(RdataEncoderTest, addRdataMulti) {
+ vector<ConstRdataPtr> rrsigs;
+ addRdataMultiCommon(rrsigs); // test without RRSIGs (empty vector)
+
+ // Tests with two RRSIGs
+ rrsigs.push_back(rrsig_rdata_);
+ rrsigs.push_back(createRdata(RRType::RRSIG(), RRClass::IN(),
+ "A 5 2 3600 20120814220826 "
+ "20120715220826 54321 com. FAKE"));
+ addRdataMultiCommon(rrsigs);
+}
+
+TEST_F(RdataEncoderTest, badAddRdata) {
+ // Some operations must follow start().
+ EXPECT_THROW(encoder_.addRdata(*a_rdata_), isc::InvalidOperation);
+ EXPECT_THROW(encoder_.getStorageLength(), isc::InvalidOperation);
+ // will allocate space of some arbitrary size (256 bytes)
+ EXPECT_THROW(encodeWrapper(256), isc::InvalidOperation);
+
+ // Bad buffer for encode
+ encoder_.start(RRClass::IN(), RRType::A());
+ encoder_.addRdata(*a_rdata_);
+ const size_t buf_len = encoder_.getStorageLength();
+ // NULL buffer for encode
+ EXPECT_THROW(encoder_.encode(NULL, buf_len), isc::BadValue);
+ // buffer length is too short (we don't use the wrraper because we don't
+ // like to tweak the length arg to encode()).
+ encoded_data_.resize(buf_len - 1);
+ EXPECT_THROW(encoder_.encode(&encoded_data_[0], buf_len - 1),
+ isc::BadValue);
+
+ // Type of RDATA and the specified RR type don't match. addRdata() should
+ // detect this inconsistency.
+ encoder_.start(RRClass::IN(), RRType::AAAA());
+ EXPECT_THROW(encoder_.addRdata(*a_rdata_), isc::BadValue);
+
+ // Likewise.
+ encoder_.start(RRClass::IN(), RRType::A());
+ EXPECT_THROW(encoder_.addRdata(*aaaa_rdata_), isc::BadValue);
+
+ // Likewise. The encoder expects the first name completes the data, and
+ // throws on the second due as an unexpected name field.
+ const ConstRdataPtr rp_rdata =
+ createRdata(RRType::RP(), RRClass::IN(), "a.example. b.example");
+ encoder_.start(RRClass::IN(), RRType::NS());
+ EXPECT_THROW(encoder_.addRdata(*rp_rdata), isc::BadValue);
+
+ // Likewise. The encoder considers the name data a variable length data
+ // field, and throws on the first name.
+ encoder_.start(RRClass::IN(), RRType::DHCID());
+ EXPECT_THROW(encoder_.addRdata(*rp_rdata), isc::BadValue);
+
+ // Likewise. The text RDATA (2 bytes) will be treated as MX preference,
+ // and the encoder will still expect to see a domain name.
+ const ConstRdataPtr txt_rdata = createRdata(RRType::TXT(), RRClass::IN(),
+ "a");
+ encoder_.start(RRClass::IN(), RRType::MX());
+ EXPECT_THROW(encoder_.addRdata(*txt_rdata), isc::BadValue);
+
+ // Similar to the previous one, but in this case there's no data field
+ // in the spec.
+ encoder_.start(RRClass::IN(), RRType::NS());
+ EXPECT_THROW(encoder_.addRdata(*txt_rdata), isc::BadValue);
+
+ // Likewise. Inconsistent name compression policy.
+ const ConstRdataPtr ns_rdata =
+ createRdata(RRType::NS(), RRClass::IN(), "ns.example");
+ encoder_.start(RRClass::IN(), RRType::DNAME());
+ EXPECT_THROW(encoder_.addRdata(*ns_rdata), isc::BadValue);
+
+ // Same as the previous one, opposite inconsistency.
+ const ConstRdataPtr dname_rdata =
+ createRdata(RRType::DNAME(), RRClass::IN(), "dname.example");
+ encoder_.start(RRClass::IN(), RRType::NS());
+ EXPECT_THROW(encoder_.addRdata(*dname_rdata), isc::BadValue);
+
+ // RDATA len exceeds the 16-bit range. Technically not invalid, but
+ // we don't support that (and it's practically useless anyway).
+ encoded_data_.resize(65536); // use encoded_data_ for placeholder
+ isc::util::InputBuffer buffer(&encoded_data_[0], encoded_data_.size());
+ encoder_.start(RRClass::IN(), RRType::DHCID());
+ EXPECT_THROW(encoder_.addRdata(in::DHCID(buffer, encoded_data_.size())),
+ RdataEncodingError);
+
+ // RRSIG cannot be used as the main RDATA type (can only be added as
+ // a signature for some other type of RDATAs).
+ EXPECT_THROW(encoder_.start(RRClass::IN(), RRType::RRSIG()),
+ isc::BadValue);
+}
+
+TEST_F(RdataEncoderTest, addSIGRdataOnly) {
+ // Encoded data that only contain RRSIGs. Mostly useless, but can happen
+ // (in a partially broken zone) and it's accepted.
+ encoder_.start(RRClass::IN(), RRType::A());
+ encoder_.addSIGRdata(*rrsig_rdata_);
+ encodeWrapper(encoder_.getStorageLength());
+ ASSERT_LT(sizeof(uint16_t), encoder_.getStorageLength());
+
+ // The encoded data should be identical to the given one.
+ isc::util::InputBuffer ib(&encoded_data_[2], encoded_data_.size() - 2);
+ const generic::RRSIG encoded_sig(ib, ib.getLength());
+ EXPECT_EQ(0, encoded_sig.compare(*rrsig_rdata_));
+}
+
+TEST_F(RdataEncoderTest, badAddSIGRdata) {
+ // try adding SIG before start
+ EXPECT_THROW(encoder_.addSIGRdata(*rrsig_rdata_), isc::InvalidOperation);
+
+ // Very big RRSIG. This implementation rejects it.
+ isc::util::OutputBuffer ob(0);
+ rrsig_rdata_->toWire(ob);
+ // append dummy trailing signature to make it too big
+ vector<uint8_t> dummy_sig(65536 - ob.getLength());
+ ob.writeData(&dummy_sig[0], dummy_sig.size());
+ ASSERT_EQ(65536, ob.getLength());
+
+ isc::util::InputBuffer ib(ob.getData(), ob.getLength());
+ const generic::RRSIG big_sigrdata(ib, ob.getLength());
+ encoder_.start(RRClass::IN(), RRType::A());
+ EXPECT_THROW(encoder_.addSIGRdata(big_sigrdata), RdataEncodingError);
+}
}
diff --git a/src/lib/datasrc/rbtree.h b/src/lib/datasrc/rbtree.h
index 38086db..2ec5347 100644
--- a/src/lib/datasrc/rbtree.h
+++ b/src/lib/datasrc/rbtree.h
@@ -221,6 +221,26 @@ public:
return (dns::LabelSequence(getLabelsData()));
}
+ /// \brief Return the absolute label sequence of the node.
+ ///
+ /// This method returns the label sequence corresponding to the full
+ /// name of the node; i.e. the entire name as it appears in the zone.
+ ///
+ /// It takes the (partial) name of the node itself, and extends it
+ /// with all upper nodes.
+ ///
+ /// \note Care must be taken with the buffer that is used here; this
+ /// method overwrites its data, so it should not be associated with
+ /// any other LabelSequence during the lifetime of the LabelSequence
+ /// returned by this method. See LabelSequence::extend(), which is used
+ /// by this method.
+ ///
+ /// \param buf A data buffer where the label sequence will be built.
+ /// The data in this buffer will be overwritten by this call.
+ /// \return A LabelSequence with the absolute name of this node.
+ isc::dns::LabelSequence getAbsoluteLabels(
+ uint8_t buf[isc::dns::LabelSequence::MAX_SERIALIZED_LENGTH]) const;
+
/// \brief Return the data stored in this node.
///
/// You should not delete the data, it is handled by shared pointers.
@@ -503,6 +523,21 @@ RBNode<T>::getUpperNode() const {
}
template <typename T>
+isc::dns::LabelSequence
+RBNode<T>::getAbsoluteLabels(
+ uint8_t buf[isc::dns::LabelSequence::MAX_SERIALIZED_LENGTH]) const
+{
+ isc::dns::LabelSequence result(getLabels(), buf);
+ const RBNode<T>* upper = getUpperNode();
+ while (upper != NULL) {
+ result.extend(upper->getLabels(), buf);
+ upper = upper->getUpperNode();
+ }
+
+ return (result);
+}
+
+template <typename T>
const RBNode<T>*
RBNode<T>::abstractSuccessor(typename RBNode<T>::RBNodePtr RBNode<T>::*left,
typename RBNode<T>::RBNodePtr RBNode<T>::*right)
@@ -1277,10 +1312,11 @@ private:
/// Split one node into two nodes for "prefix" and "suffix" parts of
/// the labels of the original node, respectively. The given node
- /// will hold the suffix labels, while the new node will hold the prefix.
- /// The newly created node represents the labels that the original node
- /// did, so necessary data are swapped.
- /// (Note: as commented in the code, this behavior should be changed).
+ /// will hold the prefix, while a newly created node will hold the prefix.
+ /// Note that the original node still represents the same domain name in
+ /// the entire tree. This ensures that a pointer to a node keeps its
+ /// semantics even if the tree structure is changed (as long as the node
+ /// itself remains valid).
void nodeFission(util::MemorySegment& mem_sgmt, RBNode<T>& node,
const isc::dns::LabelSequence& new_prefix,
const isc::dns::LabelSequence& new_suffix);
@@ -1309,35 +1345,30 @@ RBTree<T>::~RBTree() {
template <typename T>
void
RBTree<T>::deleteHelper(util::MemorySegment& mem_sgmt, RBNode<T>* root) {
- if (root == NULL) {
- return;
- }
-
- RBNode<T>* node = root;
- while (root->getLeft() != NULL || root->getRight() != NULL) {
- RBNode<T>* left(NULL);
- RBNode<T>* right(NULL);
- while ((left = node->getLeft()) != NULL ||
- (right = node->getRight()) != NULL) {
- node = (left != NULL) ? left : right;
- }
-
- RBNode<T>* parent = node->getParent();
- if (parent->getLeft() == node) {
- parent->left_ = NULL;
+ while (root != NULL) {
+ // If there is a left, right or down node, walk into it and
+ // iterate.
+ if (root->getLeft() != NULL) {
+ RBNode<T>* node = root;
+ root = root->getLeft();
+ node->left_ = NULL;
+ } else if (root->getRight() != NULL) {
+ RBNode<T>* node = root;
+ root = root->getRight();
+ node->right_ = NULL;
+ } else if (root->getDown() != NULL) {
+ RBNode<T>* node = root;
+ root = root->getDown();
+ node->down_ = NULL;
} else {
- parent->right_ = NULL;
+ // There are no left, right or down nodes, so we can
+ // free this one and go back to its parent.
+ RBNode<T>* node = root;
+ root = root->getParent();
+ RBNode<T>::destroy(mem_sgmt, node);
+ --node_count_;
}
-
- deleteHelper(mem_sgmt, node->getDown());
- RBNode<T>::destroy(mem_sgmt, node);
- --node_count_;
- node = parent;
}
-
- deleteHelper(mem_sgmt, root->getDown());
- RBNode<T>::destroy(mem_sgmt, root);
- --node_count_;
}
template <typename T>
@@ -1623,6 +1654,7 @@ RBTree<T>::insert(util::MemorySegment& mem_sgmt,
dns::LabelSequence new_prefix = current_labels;
new_prefix.stripRight(compare_result.getCommonLabels());
nodeFission(mem_sgmt, *current, new_prefix, common_ancestor);
+ current = current->getParent();
}
}
@@ -1661,11 +1693,6 @@ RBTree<T>::deleteAllNodes(util::MemorySegment& mem_sgmt) {
root_ = NULL;
}
-// Note: when we redesign this (still keeping the basic concept), we should
-// change this part so the newly created node will be used for the inserted
-// name (and therefore the name for the existing node doesn't change).
-// Otherwise, things like shortcut links between nodes won't work.
-// See Trac #2054.
template <typename T>
void
RBTree<T>::nodeFission(util::MemorySegment& mem_sgmt, RBNode<T>& node,
@@ -1677,38 +1704,45 @@ RBTree<T>::nodeFission(util::MemorySegment& mem_sgmt, RBNode<T>& node,
// the end of the function, and it will keep consistent behavior
// (i.e., a weak form of strong exception guarantee) even if code
// after the call to this function throws an exception.
- RBNode<T>* down_node = RBNode<T>::create(mem_sgmt, new_prefix);
- node.resetLabels(new_suffix);
-
- std::swap(node.data_, down_node->data_);
-
- // Swap flags bitfields; yes, this is ugly (it appears we cannot use
- // std::swap for bitfields). The right solution is to implement
- // the above note regarding #2054, then we won't have to swap the
- // flags in the first place.
- const bool is_root = node.isSubTreeRoot();
- const uint32_t tmp = node.flags_;
- node.flags_ = down_node->flags_;
- down_node->flags_ = tmp;
- node.setSubTreeRoot(is_root);
-
- down_node->down_ = node.getDown();
- if (down_node->down_ != NULL) {
- down_node->down_->parent_ = down_node;
+ RBNode<T>* up_node = RBNode<T>::create(mem_sgmt, new_suffix);
+ node.resetLabels(new_prefix);
+
+ up_node->parent_ = node.getParent();
+ if (node.getParent() != NULL) {
+ if (node.getParent()->getLeft() == &node) {
+ node.getParent()->left_ = up_node;
+ } else if (node.getParent()->getRight() == &node) {
+ node.getParent()->right_ = up_node;
+ } else {
+ node.getParent()->down_ = up_node;
+ }
+ } else {
+ this->root_ = up_node;
}
- node.down_ = down_node;
- down_node->parent_ = &node;
+ up_node->down_ = &node;
+ node.parent_ = up_node;
- // Restore the color of the node (may have gotten changed by the flags
- // swap)
- node.setColor(down_node->getColor());
+ // inherit the left/right pointers from the original node, and set
+ // the original node's left/right pointers to NULL.
+ up_node->left_ = node.getLeft();
+ if (node.getLeft() != NULL) {
+ node.getLeft()->parent_ = up_node;
+ }
+ up_node->right_ = node.getRight();
+ if (node.getRight() != NULL) {
+ node.getRight()->parent_ = up_node;
+ }
+ node.left_ = NULL;
+ node.right_ = NULL;
- // root node of sub tree, the initial color is BLACK
- down_node->setColor(RBNode<T>::BLACK);
+ // set color of both nodes; the initial subtree node color is BLACK
+ up_node->setColor(node.getColor());
+ node.setColor(RBNode<T>::BLACK);
- // mark it as the root of a subtree
- down_node->setSubTreeRoot(true);
+ // set the subtree root flag of both nodes
+ up_node->setSubTreeRoot(node.isSubTreeRoot());
+ node.setSubTreeRoot(true);
++node_count_;
}
diff --git a/src/lib/datasrc/tests/Makefile.am b/src/lib/datasrc/tests/Makefile.am
index 5db12ea..027ec6e 100644
--- a/src/lib/datasrc/tests/Makefile.am
+++ b/src/lib/datasrc/tests/Makefile.am
@@ -34,13 +34,13 @@ common_sources = run_unittests.cc
common_sources += $(top_srcdir)/src/lib/dns/tests/unittest_util.h
common_sources += $(top_srcdir)/src/lib/dns/tests/unittest_util.cc
-common_ldadd = $(top_builddir)/src/lib/datasrc/libdatasrc.la
-common_ldadd += $(top_builddir)/src/lib/dns/libdns++.la
-common_ldadd += $(top_builddir)/src/lib/util/libutil.la
-common_ldadd += $(top_builddir)/src/lib/log/liblog.la
-common_ldadd += $(top_builddir)/src/lib/exceptions/libexceptions.la
-common_ldadd += $(top_builddir)/src/lib/cc/libcc.la
-common_ldadd += $(top_builddir)/src/lib/testutils/libtestutils.la
+common_ldadd = $(top_builddir)/src/lib/datasrc/libb10-datasrc.la
+common_ldadd += $(top_builddir)/src/lib/dns/libb10-dns++.la
+common_ldadd += $(top_builddir)/src/lib/util/libb10-util.la
+common_ldadd += $(top_builddir)/src/lib/log/libb10-log.la
+common_ldadd += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+common_ldadd += $(top_builddir)/src/lib/cc/libb10-cc.la
+common_ldadd += $(top_builddir)/src/lib/testutils/libb10-testutils.la
common_ldadd += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
common_ldadd += $(GTEST_LDADD) $(SQLITE_LIBS)
diff --git a/src/lib/datasrc/tests/rbtree_unittest.cc b/src/lib/datasrc/tests/rbtree_unittest.cc
index 1d08fed..2370631 100644
--- a/src/lib/datasrc/tests/rbtree_unittest.cc
+++ b/src/lib/datasrc/tests/rbtree_unittest.cc
@@ -40,7 +40,7 @@ const size_t Name::MAX_LABELS;
/* The initial structure of rbtree
*
-* .
+ * .
* |
* b
* / \
@@ -104,6 +104,7 @@ protected:
RBTree<int>& rbtree_expose_empty_node;
RBNode<int>* rbtnode;
const RBNode<int>* crbtnode;
+ uint8_t buf[LabelSequence::MAX_SERIALIZED_LENGTH];
};
TEST_F(RBTreeTest, nodeCount) {
@@ -252,6 +253,36 @@ TEST_F(RBTreeTest, subTreeRoot) {
EXPECT_TRUE(rbtnode->getFlag(RBNode<int>::FLAG_SUBTREE_ROOT));
}
+TEST_F(RBTreeTest, additionalNodeFission) {
+ // These are additional nodeFission tests added by #2054's rewrite
+ // of RBTree::nodeFission(). These test specific corner cases that
+ // are not covered by other tests.
+
+ // Insert "t.0" (which becomes the left child of its parent)
+ EXPECT_EQ(RBTree<int>::SUCCESS,
+ rbtree_expose_empty_node.insert(mem_sgmt_, Name("t.0"),
+ &rbtnode));
+
+ // "t.0" is not a subtree root
+ EXPECT_EQ(RBTree<int>::EXACTMATCH,
+ rbtree_expose_empty_node.find(Name("t.0"), &rbtnode));
+ EXPECT_FALSE(rbtnode->getFlag(RBNode<int>::FLAG_SUBTREE_ROOT));
+
+ // fission the node "t.0"
+ EXPECT_EQ(RBTree<int>::ALREADYEXISTS,
+ rbtree_expose_empty_node.insert(mem_sgmt_, Name("0"),
+ &rbtnode));
+
+ // the node "0" ("0".down_ -> "t") should not be a subtree root. "t"
+ // should be a subtree root.
+ EXPECT_FALSE(rbtnode->getFlag(RBNode<int>::FLAG_SUBTREE_ROOT));
+
+ // "t.0" should be a subtree root now.
+ EXPECT_EQ(RBTree<int>::EXACTMATCH,
+ rbtree_expose_empty_node.find(Name("t.0"), &rbtnode));
+ EXPECT_TRUE(rbtnode->getFlag(RBNode<int>::FLAG_SUBTREE_ROOT));
+}
+
TEST_F(RBTreeTest, findName) {
// find const rbtnode
// exact match
@@ -419,6 +450,11 @@ TEST_F(RBTreeTest, chainLevel) {
tree.find(node_name, &crbtnode, chain));
EXPECT_EQ(1, chain.getLevelCount());
+ // Check the name of the found node (should have '.' as both non-absolute
+ // and absolute name
+ EXPECT_EQ(".", crbtnode->getLabels().toText());
+ EXPECT_EQ(".", crbtnode->getAbsoluteLabels(buf).toText());
+
/*
* Now creating a possibly deepest tree with MAX_LABELS levels.
* it should look like:
@@ -442,6 +478,12 @@ TEST_F(RBTreeTest, chainLevel) {
EXPECT_EQ(RBTree<int>::EXACTMATCH,
tree.find(node_name, &crbtnode, found_chain));
EXPECT_EQ(i, found_chain.getLevelCount());
+
+ // The non-absolute name should only have the first label
+ EXPECT_EQ("a", crbtnode->getLabels().toText());
+ // But the absolute name should have all labels
+ EXPECT_EQ(node_name.toText(),
+ crbtnode->getAbsoluteLabels(buf).toText());
}
// Confirm the last inserted name has the possible maximum length with
@@ -458,7 +500,7 @@ TEST_F(RBTreeTest, getAbsoluteNameError) {
}
/*
- *the domain order should be:
+ * The domain order should be:
* ., a, b, c, d.e.f, x.d.e.f, w.y.d.e.f, o.w.y.d.e.f, p.w.y.d.e.f,
* q.w.y.d.e.f, z.d.e.f, j.z.d.e.f, g.h, i.g.h, k.g.h
* . (no data, can't be found)
@@ -988,4 +1030,45 @@ TEST_F(RBTreeTest, root) {
root.find(Name("example.com"), &crbtnode));
EXPECT_EQ(rbtnode, crbtnode);
}
+
+TEST_F(RBTreeTest, getAbsoluteLabels) {
+ // The full absolute names of the nodes in the tree
+ // with the addition of the explicit root node
+ const char* const domain_names[] = {
+ "c", "b", "a", "x.d.e.f", "z.d.e.f", "g.h", "i.g.h", "o.w.y.d.e.f",
+ "j.z.d.e.f", "p.w.y.d.e.f", "q.w.y.d.e.f", "k.g.h"};
+ // The names of the nodes themselves, as they end up in the tree
+ const char* const first_labels[] = {
+ "c", "b", "a", "x", "z", "g.h", "i", "o",
+ "j", "p", "q", "k"};
+
+ const int name_count = sizeof(domain_names) / sizeof(domain_names[0]);
+ for (int i = 0; i < name_count; ++i) {
+ EXPECT_EQ(RBTree<int>::EXACTMATCH, rbtree.find(Name(domain_names[i]),
+ &crbtnode));
+
+ // First make sure the names themselves are not absolute
+ const LabelSequence ls(crbtnode->getLabels());
+ EXPECT_EQ(first_labels[i], ls.toText());
+ EXPECT_FALSE(ls.isAbsolute());
+
+ // Now check the absolute names
+ const LabelSequence abs_ls(crbtnode->getAbsoluteLabels(buf));
+ EXPECT_EQ(Name(domain_names[i]).toText(), abs_ls.toText());
+ EXPECT_TRUE(abs_ls.isAbsolute());
+ }
+
+ // Explicitly add and find a root node, to see that getAbsoluteLabels
+ // also works when getLabels() already returns an absolute LabelSequence
+ rbtree.insert(mem_sgmt_, Name("."), &rbtnode);
+ rbtnode->setData(RBNode<int>::NodeDataPtr(new int(1)));
+
+ EXPECT_EQ(RBTree<int>::EXACTMATCH, rbtree.find(Name("."), &crbtnode));
+
+ EXPECT_TRUE(crbtnode->getLabels().isAbsolute());
+ EXPECT_EQ(".", crbtnode->getLabels().toText());
+ EXPECT_TRUE(crbtnode->getAbsoluteLabels(buf).isAbsolute());
+ EXPECT_EQ(".", crbtnode->getAbsoluteLabels(buf).toText());
+}
+
}
diff --git a/src/lib/dhcp/Makefile.am b/src/lib/dhcp/Makefile.am
index ec169a5..fbd4eb5 100644
--- a/src/lib/dhcp/Makefile.am
+++ b/src/lib/dhcp/Makefile.am
@@ -13,33 +13,33 @@ AM_CXXFLAGS += $(WARNING_NO_MISSING_FIELD_INITIALIZERS_CFLAG)
CLEANFILES = *.gcno *.gcda
-lib_LTLIBRARIES = libdhcp++.la
-libdhcp___la_SOURCES =
-libdhcp___la_SOURCES += libdhcp++.cc libdhcp++.h
-libdhcp___la_SOURCES += iface_mgr.cc iface_mgr.h
-libdhcp___la_SOURCES += iface_mgr_linux.cc
-libdhcp___la_SOURCES += iface_mgr_bsd.cc
-libdhcp___la_SOURCES += iface_mgr_sun.cc
-libdhcp___la_SOURCES += option.cc option.h
-libdhcp___la_SOURCES += option6_ia.cc option6_ia.h
-libdhcp___la_SOURCES += option6_iaaddr.cc option6_iaaddr.h
-libdhcp___la_SOURCES += option6_addrlst.cc option6_addrlst.h
-libdhcp___la_SOURCES += option4_addrlst.cc option4_addrlst.h
-libdhcp___la_SOURCES += dhcp6.h dhcp4.h
-libdhcp___la_SOURCES += pkt6.cc pkt6.h
-libdhcp___la_SOURCES += pkt4.cc pkt4.h
+lib_LTLIBRARIES = libb10-dhcp++.la
+libb10_dhcp___la_SOURCES =
+libb10_dhcp___la_SOURCES += libdhcp++.cc libdhcp++.h
+libb10_dhcp___la_SOURCES += iface_mgr.cc iface_mgr.h
+libb10_dhcp___la_SOURCES += iface_mgr_linux.cc
+libb10_dhcp___la_SOURCES += iface_mgr_bsd.cc
+libb10_dhcp___la_SOURCES += iface_mgr_sun.cc
+libb10_dhcp___la_SOURCES += option.cc option.h
+libb10_dhcp___la_SOURCES += option6_ia.cc option6_ia.h
+libb10_dhcp___la_SOURCES += option6_iaaddr.cc option6_iaaddr.h
+libb10_dhcp___la_SOURCES += option6_addrlst.cc option6_addrlst.h
+libb10_dhcp___la_SOURCES += option4_addrlst.cc option4_addrlst.h
+libb10_dhcp___la_SOURCES += dhcp6.h dhcp4.h
+libb10_dhcp___la_SOURCES += pkt6.cc pkt6.h
+libb10_dhcp___la_SOURCES += pkt4.cc pkt4.h
EXTRA_DIST = README
#EXTRA_DIST += log_messages.mes
-libdhcp___la_CXXFLAGS = $(AM_CXXFLAGS)
-libdhcp___la_CPPFLAGS = $(AM_CPPFLAGS) $(LOG4CPLUS_INCLUDES)
-libdhcp___la_LIBADD = $(top_builddir)/src/lib/asiolink/libasiolink.la
-libdhcp___la_LIBADD += $(top_builddir)/src/lib/util/libutil.la
-libdhcp___la_LDFLAGS = -no-undefined -version-info 2:0:0
+libb10_dhcp___la_CXXFLAGS = $(AM_CXXFLAGS)
+libb10_dhcp___la_CPPFLAGS = $(AM_CPPFLAGS) $(LOG4CPLUS_INCLUDES)
+libb10_dhcp___la_LIBADD = $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+libb10_dhcp___la_LIBADD += $(top_builddir)/src/lib/util/libb10-util.la
+libb10_dhcp___la_LDFLAGS = -no-undefined -version-info 2:0:0
if USE_CLANGPP
# Disable unused parameter warning caused by some of the
# Boost headers when compiling with clang.
-libdhcp___la_CXXFLAGS += -Wno-unused-parameter
+libb10_dhcp___la_CXXFLAGS += -Wno-unused-parameter
endif
diff --git a/src/lib/dhcp/tests/Makefile.am b/src/lib/dhcp/tests/Makefile.am
index 46225e4..eba7e81 100644
--- a/src/lib/dhcp/tests/Makefile.am
+++ b/src/lib/dhcp/tests/Makefile.am
@@ -52,10 +52,10 @@ if USE_CLANGPP
libdhcp___unittests_CXXFLAGS += -Wno-unused-variable -Wno-unused-parameter
endif
libdhcp___unittests_LDADD = $(GTEST_LDADD)
-libdhcp___unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
-libdhcp___unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
-libdhcp___unittests_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-libdhcp___unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+libdhcp___unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+libdhcp___unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+libdhcp___unittests_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+libdhcp___unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
endif
noinst_PROGRAMS = $(TESTS)
diff --git a/src/lib/dns/Makefile.am b/src/lib/dns/Makefile.am
index 2cd889d..38809e0 100644
--- a/src/lib/dns/Makefile.am
+++ b/src/lib/dns/Makefile.am
@@ -86,53 +86,53 @@ EXTRA_DIST += rdata/in_1/srv_33.h
BUILT_SOURCES = rrclass.h rrtype.h rrparamregistry.cc
BUILT_SOURCES += rdataclass.h rdataclass.cc
-lib_LTLIBRARIES = libdns++.la
+lib_LTLIBRARIES = libb10-dns++.la
-libdns___la_LDFLAGS = -no-undefined -version-info 2:0:0
+libb10_dns___la_LDFLAGS = -no-undefined -version-info 2:0:0
-libdns___la_SOURCES =
-libdns___la_SOURCES += edns.h edns.cc
-libdns___la_SOURCES += exceptions.h exceptions.cc
-libdns___la_SOURCES += labelsequence.h labelsequence.cc
-libdns___la_SOURCES += masterload.h masterload.cc
-libdns___la_SOURCES += message.h message.cc
-libdns___la_SOURCES += messagerenderer.h messagerenderer.cc
-libdns___la_SOURCES += name.h name.cc
-libdns___la_SOURCES += name_internal.h
-libdns___la_SOURCES += nsec3hash.h nsec3hash.cc
-libdns___la_SOURCES += opcode.h opcode.cc
-libdns___la_SOURCES += rcode.h rcode.cc
-libdns___la_SOURCES += rdata.h rdata.cc
-libdns___la_SOURCES += rdatafields.h rdatafields.cc
-libdns___la_SOURCES += rrclass.cc
-libdns___la_SOURCES += rrparamregistry.h
-libdns___la_SOURCES += rrset.h rrset.cc
-libdns___la_SOURCES += rrsetlist.h rrsetlist.cc
-libdns___la_SOURCES += rrttl.h rrttl.cc
-libdns___la_SOURCES += rrtype.cc
-libdns___la_SOURCES += question.h question.cc
-libdns___la_SOURCES += serial.h serial.cc
-libdns___la_SOURCES += tsig.h tsig.cc
-libdns___la_SOURCES += tsigerror.h tsigerror.cc
-libdns___la_SOURCES += tsigkey.h tsigkey.cc
-libdns___la_SOURCES += tsigrecord.h tsigrecord.cc
-libdns___la_SOURCES += character_string.h character_string.cc
-libdns___la_SOURCES += rdata/generic/detail/nsec_bitmap.h
-libdns___la_SOURCES += rdata/generic/detail/nsec_bitmap.cc
-libdns___la_SOURCES += rdata/generic/detail/nsec3param_common.cc
-libdns___la_SOURCES += rdata/generic/detail/nsec3param_common.h
-libdns___la_SOURCES += rdata/generic/detail/txt_like.h
-libdns___la_SOURCES += rdata/generic/detail/ds_like.h
+libb10_dns___la_SOURCES =
+libb10_dns___la_SOURCES += edns.h edns.cc
+libb10_dns___la_SOURCES += exceptions.h exceptions.cc
+libb10_dns___la_SOURCES += labelsequence.h labelsequence.cc
+libb10_dns___la_SOURCES += masterload.h masterload.cc
+libb10_dns___la_SOURCES += message.h message.cc
+libb10_dns___la_SOURCES += messagerenderer.h messagerenderer.cc
+libb10_dns___la_SOURCES += name.h name.cc
+libb10_dns___la_SOURCES += name_internal.h
+libb10_dns___la_SOURCES += nsec3hash.h nsec3hash.cc
+libb10_dns___la_SOURCES += opcode.h opcode.cc
+libb10_dns___la_SOURCES += rcode.h rcode.cc
+libb10_dns___la_SOURCES += rdata.h rdata.cc
+libb10_dns___la_SOURCES += rdatafields.h rdatafields.cc
+libb10_dns___la_SOURCES += rrclass.cc
+libb10_dns___la_SOURCES += rrparamregistry.h
+libb10_dns___la_SOURCES += rrset.h rrset.cc
+libb10_dns___la_SOURCES += rrsetlist.h rrsetlist.cc
+libb10_dns___la_SOURCES += rrttl.h rrttl.cc
+libb10_dns___la_SOURCES += rrtype.cc
+libb10_dns___la_SOURCES += question.h question.cc
+libb10_dns___la_SOURCES += serial.h serial.cc
+libb10_dns___la_SOURCES += tsig.h tsig.cc
+libb10_dns___la_SOURCES += tsigerror.h tsigerror.cc
+libb10_dns___la_SOURCES += tsigkey.h tsigkey.cc
+libb10_dns___la_SOURCES += tsigrecord.h tsigrecord.cc
+libb10_dns___la_SOURCES += character_string.h character_string.cc
+libb10_dns___la_SOURCES += rdata/generic/detail/nsec_bitmap.h
+libb10_dns___la_SOURCES += rdata/generic/detail/nsec_bitmap.cc
+libb10_dns___la_SOURCES += rdata/generic/detail/nsec3param_common.cc
+libb10_dns___la_SOURCES += rdata/generic/detail/nsec3param_common.h
+libb10_dns___la_SOURCES += rdata/generic/detail/txt_like.h
+libb10_dns___la_SOURCES += rdata/generic/detail/ds_like.h
-libdns___la_CPPFLAGS = $(AM_CPPFLAGS)
+libb10_dns___la_CPPFLAGS = $(AM_CPPFLAGS)
# Most applications of libdns++ will only implicitly rely on libcryptolink,
# so we add the dependency here so that the applications don't have to link
# libcryptolink explicitly.
-libdns___la_LIBADD = $(top_builddir)/src/lib/cryptolink/libcryptolink.la
-libdns___la_LIBADD += $(top_builddir)/src/lib/util/libutil.la
+libb10_dns___la_LIBADD = $(top_builddir)/src/lib/cryptolink/libb10-cryptolink.la
+libb10_dns___la_LIBADD += $(top_builddir)/src/lib/util/libb10-util.la
nodist_libdns___include_HEADERS = rdataclass.h rrclass.h rrtype.h
-nodist_libdns___la_SOURCES = rdataclass.cc rrparamregistry.cc
+nodist_libb10_dns___la_SOURCES = rdataclass.cc rrparamregistry.cc
rrclass.h: rrclass-placeholder.h
rrtype.h: rrtype-placeholder.h
diff --git a/src/lib/dns/benchmarks/Makefile.am b/src/lib/dns/benchmarks/Makefile.am
index ff591cc..a7e216a 100644
--- a/src/lib/dns/benchmarks/Makefile.am
+++ b/src/lib/dns/benchmarks/Makefile.am
@@ -13,12 +13,12 @@ noinst_PROGRAMS = rdatarender_bench message_renderer_bench
rdatarender_bench_SOURCES = rdatarender_bench.cc
-rdatarender_bench_LDADD = $(top_builddir)/src/lib/dns/libdns++.la
-rdatarender_bench_LDADD += $(top_builddir)/src/lib/util/libutil.la
-rdatarender_bench_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+rdatarender_bench_LDADD = $(top_builddir)/src/lib/dns/libb10-dns++.la
+rdatarender_bench_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+rdatarender_bench_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
message_renderer_bench_SOURCES = message_renderer_bench.cc
message_renderer_bench_SOURCES += oldmessagerenderer.h oldmessagerenderer.cc
-message_renderer_bench_LDADD = $(top_builddir)/src/lib/dns/libdns++.la
-message_renderer_bench_LDADD += $(top_builddir)/src/lib/util/libutil.la
-message_renderer_bench_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+message_renderer_bench_LDADD = $(top_builddir)/src/lib/dns/libb10-dns++.la
+message_renderer_bench_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+message_renderer_bench_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
diff --git a/src/lib/dns/python/Makefile.am b/src/lib/dns/python/Makefile.am
index 2846659..6dd94b6 100644
--- a/src/lib/dns/python/Makefile.am
+++ b/src/lib/dns/python/Makefile.am
@@ -4,31 +4,31 @@ AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib
AM_CPPFLAGS += $(BOOST_INCLUDES)
AM_CXXFLAGS = $(B10_CXXFLAGS)
-lib_LTLIBRARIES = libpydnspp.la
-libpydnspp_la_SOURCES = pydnspp_common.cc pydnspp_common.h pydnspp_towire.h
-libpydnspp_la_SOURCES += name_python.cc name_python.h
-libpydnspp_la_SOURCES += nsec3hash_python.cc nsec3hash_python.h
-libpydnspp_la_SOURCES += rrset_python.cc rrset_python.h
-libpydnspp_la_SOURCES += rrclass_python.cc rrclass_python.h
-libpydnspp_la_SOURCES += rrtype_python.cc rrtype_python.h
-libpydnspp_la_SOURCES += rrttl_python.cc rrttl_python.h
-libpydnspp_la_SOURCES += rdata_python.cc rdata_python.h
-libpydnspp_la_SOURCES += serial_python.cc serial_python.h
-libpydnspp_la_SOURCES += messagerenderer_python.cc messagerenderer_python.h
-libpydnspp_la_SOURCES += rcode_python.cc rcode_python.h
-libpydnspp_la_SOURCES += opcode_python.cc opcode_python.h
-libpydnspp_la_SOURCES += question_python.cc question_python.h
-libpydnspp_la_SOURCES += tsigkey_python.cc tsigkey_python.h
-libpydnspp_la_SOURCES += tsigerror_python.cc tsigerror_python.h
-libpydnspp_la_SOURCES += tsig_rdata_python.cc tsig_rdata_python.h
-libpydnspp_la_SOURCES += tsigrecord_python.cc tsigrecord_python.h
-libpydnspp_la_SOURCES += tsig_python.cc tsig_python.h
-libpydnspp_la_SOURCES += edns_python.cc edns_python.h
-libpydnspp_la_SOURCES += message_python.cc message_python.h
-
-libpydnspp_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON_INCLUDES)
-libpydnspp_la_CXXFLAGS = $(AM_CXXFLAGS) $(PYTHON_CXXFLAGS)
-libpydnspp_la_LDFLAGS = $(PYTHON_LDFLAGS)
+lib_LTLIBRARIES = libb10-pydnspp.la
+libb10_pydnspp_la_SOURCES = pydnspp_common.cc pydnspp_common.h pydnspp_towire.h
+libb10_pydnspp_la_SOURCES += name_python.cc name_python.h
+libb10_pydnspp_la_SOURCES += nsec3hash_python.cc nsec3hash_python.h
+libb10_pydnspp_la_SOURCES += rrset_python.cc rrset_python.h
+libb10_pydnspp_la_SOURCES += rrclass_python.cc rrclass_python.h
+libb10_pydnspp_la_SOURCES += rrtype_python.cc rrtype_python.h
+libb10_pydnspp_la_SOURCES += rrttl_python.cc rrttl_python.h
+libb10_pydnspp_la_SOURCES += rdata_python.cc rdata_python.h
+libb10_pydnspp_la_SOURCES += serial_python.cc serial_python.h
+libb10_pydnspp_la_SOURCES += messagerenderer_python.cc messagerenderer_python.h
+libb10_pydnspp_la_SOURCES += rcode_python.cc rcode_python.h
+libb10_pydnspp_la_SOURCES += opcode_python.cc opcode_python.h
+libb10_pydnspp_la_SOURCES += question_python.cc question_python.h
+libb10_pydnspp_la_SOURCES += tsigkey_python.cc tsigkey_python.h
+libb10_pydnspp_la_SOURCES += tsigerror_python.cc tsigerror_python.h
+libb10_pydnspp_la_SOURCES += tsig_rdata_python.cc tsig_rdata_python.h
+libb10_pydnspp_la_SOURCES += tsigrecord_python.cc tsigrecord_python.h
+libb10_pydnspp_la_SOURCES += tsig_python.cc tsig_python.h
+libb10_pydnspp_la_SOURCES += edns_python.cc edns_python.h
+libb10_pydnspp_la_SOURCES += message_python.cc message_python.h
+
+libb10_pydnspp_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON_INCLUDES)
+libb10_pydnspp_la_CXXFLAGS = $(AM_CXXFLAGS) $(PYTHON_CXXFLAGS)
+libb10_pydnspp_la_LDFLAGS = $(PYTHON_LDFLAGS)
@@ -47,7 +47,7 @@ EXTRA_DIST += nsec3hash_python_inc.cc
# Python prefers .so, while some OSes (specifically MacOS) use a different
# suffix for dynamic objects. -module is necessary to work this around.
pydnspp_la_LDFLAGS += -module -avoid-version
-pydnspp_la_LIBADD = $(top_builddir)/src/lib/dns/libdns++.la
-pydnspp_la_LIBADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-pydnspp_la_LIBADD += libpydnspp.la
+pydnspp_la_LIBADD = $(top_builddir)/src/lib/dns/libb10-dns++.la
+pydnspp_la_LIBADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+pydnspp_la_LIBADD += libb10-pydnspp.la
pydnspp_la_LIBADD += $(PYTHON_LIB)
diff --git a/src/lib/dns/tests/Makefile.am b/src/lib/dns/tests/Makefile.am
index db2a894..0abb389 100644
--- a/src/lib/dns/tests/Makefile.am
+++ b/src/lib/dns/tests/Makefile.am
@@ -74,10 +74,10 @@ run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
# an older version of botan, and somehow that version gets
# linked if we don't
run_unittests_LDFLAGS = $(BOTAN_LDFLAGS) $(GTEST_LDFLAGS) $(AM_LDFLAGS)
-run_unittests_LDADD = $(top_builddir)/src/lib/dns/libdns++.la
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
+run_unittests_LDADD = $(top_builddir)/src/lib/dns/libb10-dns++.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
run_unittests_LDADD += $(BOTAN_LIBS) $(GTEST_LDADD)
endif
diff --git a/src/lib/exceptions/Makefile.am b/src/lib/exceptions/Makefile.am
index 1d0ce2d..aa7d6cd 100644
--- a/src/lib/exceptions/Makefile.am
+++ b/src/lib/exceptions/Makefile.am
@@ -3,10 +3,10 @@ SUBDIRS = . tests
AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib
AM_CXXFLAGS=$(B10_CXXFLAGS)
-lib_LTLIBRARIES = libexceptions.la
-libexceptions_la_SOURCES = exceptions.h exceptions.cc
+lib_LTLIBRARIES = libb10-exceptions.la
+libb10_exceptions_la_SOURCES = exceptions.h exceptions.cc
CLEANFILES = *.gcno *.gcda
-libexceptions_includedir = $(includedir)/$(PACKAGE_NAME)/exceptions
-libexceptions_include_HEADERS = exceptions.h
+libb10_exceptions_includedir = $(includedir)/$(PACKAGE_NAME)/exceptions
+libb10_exceptions_include_HEADERS = exceptions.h
diff --git a/src/lib/exceptions/tests/Makefile.am b/src/lib/exceptions/tests/Makefile.am
index 1e31353..83b9765 100644
--- a/src/lib/exceptions/tests/Makefile.am
+++ b/src/lib/exceptions/tests/Makefile.am
@@ -20,7 +20,7 @@ run_unittests_SOURCES += exceptions_unittest.cc
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(GTEST_LDFLAGS)
run_unittests_LDADD = $(GTEST_LDADD)
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
endif
noinst_PROGRAMS = $(TESTS)
diff --git a/src/lib/log/Makefile.am b/src/lib/log/Makefile.am
index ed23176..6207655 100644
--- a/src/lib/log/Makefile.am
+++ b/src/lib/log/Makefile.am
@@ -6,31 +6,31 @@ AM_CPPFLAGS += -DTOP_BUILDDIR=\"${abs_top_builddir}\"
CLEANFILES = *.gcno *.gcda
-lib_LTLIBRARIES = liblog.la
-liblog_la_SOURCES =
-liblog_la_SOURCES += dummylog.h dummylog.cc
-liblog_la_SOURCES += logimpl_messages.cc logimpl_messages.h
-liblog_la_SOURCES += log_dbglevels.h
-liblog_la_SOURCES += log_formatter.h log_formatter.cc
-liblog_la_SOURCES += logger.cc logger.h
-liblog_la_SOURCES += logger_impl.cc logger_impl.h
-liblog_la_SOURCES += logger_level.h
-liblog_la_SOURCES += logger_level.cc logger_level.h
-liblog_la_SOURCES += logger_level_impl.cc logger_level_impl.h
-liblog_la_SOURCES += logger_manager.cc logger_manager.h
-liblog_la_SOURCES += logger_manager_impl.cc logger_manager_impl.h
-liblog_la_SOURCES += logger_name.cc logger_name.h
-liblog_la_SOURCES += logger_specification.h
-liblog_la_SOURCES += logger_support.cc logger_support.h
-liblog_la_SOURCES += logger_unittest_support.cc logger_unittest_support.h
-liblog_la_SOURCES += log_messages.cc log_messages.h
-liblog_la_SOURCES += macros.h
-liblog_la_SOURCES += message_dictionary.cc message_dictionary.h
-liblog_la_SOURCES += message_exception.h
-liblog_la_SOURCES += message_initializer.cc message_initializer.h
-liblog_la_SOURCES += message_reader.cc message_reader.h
-liblog_la_SOURCES += message_types.h
-liblog_la_SOURCES += output_option.cc output_option.h
+lib_LTLIBRARIES = libb10-log.la
+libb10_log_la_SOURCES =
+libb10_log_la_SOURCES += dummylog.h dummylog.cc
+libb10_log_la_SOURCES += logimpl_messages.cc logimpl_messages.h
+libb10_log_la_SOURCES += log_dbglevels.h
+libb10_log_la_SOURCES += log_formatter.h log_formatter.cc
+libb10_log_la_SOURCES += logger.cc logger.h
+libb10_log_la_SOURCES += logger_impl.cc logger_impl.h
+libb10_log_la_SOURCES += logger_level.h
+libb10_log_la_SOURCES += logger_level.cc logger_level.h
+libb10_log_la_SOURCES += logger_level_impl.cc logger_level_impl.h
+libb10_log_la_SOURCES += logger_manager.cc logger_manager.h
+libb10_log_la_SOURCES += logger_manager_impl.cc logger_manager_impl.h
+libb10_log_la_SOURCES += logger_name.cc logger_name.h
+libb10_log_la_SOURCES += logger_specification.h
+libb10_log_la_SOURCES += logger_support.cc logger_support.h
+libb10_log_la_SOURCES += logger_unittest_support.cc logger_unittest_support.h
+libb10_log_la_SOURCES += log_messages.cc log_messages.h
+libb10_log_la_SOURCES += macros.h
+libb10_log_la_SOURCES += message_dictionary.cc message_dictionary.h
+libb10_log_la_SOURCES += message_exception.h
+libb10_log_la_SOURCES += message_initializer.cc message_initializer.h
+libb10_log_la_SOURCES += message_reader.cc message_reader.h
+libb10_log_la_SOURCES += message_types.h
+libb10_log_la_SOURCES += output_option.cc output_option.h
EXTRA_DIST = README
EXTRA_DIST += logimpl_messages.mes
@@ -38,14 +38,14 @@ EXTRA_DIST += log_messages.mes
# Note: the ordering matters: -Wno-... must follow -Wextra (defined in
# B10_CXXFLAGS)
-liblog_la_CXXFLAGS = $(AM_CXXFLAGS)
+libb10_log_la_CXXFLAGS = $(AM_CXXFLAGS)
if USE_GXX
-liblog_la_CXXFLAGS += -Wno-unused-parameter
+libb10_log_la_CXXFLAGS += -Wno-unused-parameter
endif
if USE_CLANGPP
# Same for clang++, but we need to turn off -Werror completely.
-liblog_la_CXXFLAGS += -Wno-error
+libb10_log_la_CXXFLAGS += -Wno-error
endif
-liblog_la_CPPFLAGS = $(AM_CPPFLAGS) $(LOG4CPLUS_INCLUDES)
-liblog_la_LIBADD = $(top_builddir)/src/lib/util/libutil.la $(LOG4CPLUS_LIBS)
-liblog_la_LDFLAGS = -no-undefined -version-info 1:0:0
+libb10_log_la_CPPFLAGS = $(AM_CPPFLAGS) $(LOG4CPLUS_INCLUDES)
+libb10_log_la_LIBADD = $(top_builddir)/src/lib/util/libb10-util.la $(LOG4CPLUS_LIBS)
+libb10_log_la_LDFLAGS = -no-undefined -version-info 1:0:0
diff --git a/src/lib/log/compiler/Makefile.am b/src/lib/log/compiler/Makefile.am
index 84cd4f6..f4435d8 100644
--- a/src/lib/log/compiler/Makefile.am
+++ b/src/lib/log/compiler/Makefile.am
@@ -14,6 +14,6 @@ CLEANFILES = *.gcno *.gcda
noinst_PROGRAMS = message
message_SOURCES = message.cc
-message_LDADD = $(top_builddir)/src/lib/log/liblog.la
-message_LDADD += $(top_builddir)/src/lib/util/libutil.la
-message_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+message_LDADD = $(top_builddir)/src/lib/log/libb10-log.la
+message_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+message_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
diff --git a/src/lib/log/logger_impl.cc b/src/lib/log/logger_impl.cc
index 2d6c0f4..6cd3da5 100644
--- a/src/lib/log/logger_impl.cc
+++ b/src/lib/log/logger_impl.cc
@@ -22,6 +22,7 @@
#include <boost/static_assert.hpp>
#include <log4cplus/configurator.h>
+#include <log4cplus/loggingmacros.h>
#include <log/logger.h>
#include <log/logger_impl.h>
diff --git a/src/lib/log/logger_level_impl.cc b/src/lib/log/logger_level_impl.cc
index 397f6d4..bfc4748 100644
--- a/src/lib/log/logger_level_impl.cc
+++ b/src/lib/log/logger_level_impl.cc
@@ -185,20 +185,22 @@ LoggerLevelImpl::logLevelFromString(const log4cplus::tstring& level) {
// Convert logging level to string. If the level is a valid debug level,
// return the string DEBUG, else return the empty string.
-log4cplus::tstring
+LoggerLevelImpl::LogLevelString
LoggerLevelImpl::logLevelToString(log4cplus::LogLevel level) {
+ static const tstring debug_string("DEBUG");
+ static const tstring empty_string;
Level bindlevel = convertToBindLevel(level);
Severity& severity = bindlevel.severity;
int& dbglevel = bindlevel.dbglevel;
if ((severity == DEBUG) &&
((dbglevel >= MIN_DEBUG_LEVEL) && (dbglevel <= MAX_DEBUG_LEVEL))) {
- return (tstring("DEBUG"));
+ return (debug_string);
}
// Unknown, so return empty string for log4cplus to try other conversion
// functions.
- return (tstring());
+ return (empty_string);
}
// Initialization. Register the conversion functions with the LogLevelManager.
diff --git a/src/lib/log/logger_level_impl.h b/src/lib/log/logger_level_impl.h
index c990796..17b866d 100644
--- a/src/lib/log/logger_level_impl.h
+++ b/src/lib/log/logger_level_impl.h
@@ -16,6 +16,7 @@
#define __LOGGER_LEVEL_IMPL_H
#include <log4cplus/logger.h>
+#include <log4cplus/version.h>
#include <log/logger_level.h>
namespace isc {
@@ -65,6 +66,12 @@ namespace log {
class LoggerLevelImpl {
public:
+#if (LOG4CPLUS_VERSION >= LOG4CPLUS_MAKE_VERSION(1, 1, 0))
+ typedef log4cplus::tstring const & LogLevelString;
+#else
+ typedef log4cplus::tstring LogLevelString;
+#endif
+
/// \brief Convert BIND 10 level to log4cplus logging level
///
/// Converts the BIND 10 severity level into a log4cplus logging level.
@@ -112,7 +119,7 @@ public:
/// \param level Extended logging level
///
/// \return Equivalent string.
- static log4cplus::tstring logLevelToString(log4cplus::LogLevel level);
+ static LogLevelString logLevelToString(log4cplus::LogLevel level);
/// \brief Initialize extended logging levels
///
diff --git a/src/lib/log/logger_manager_impl.cc b/src/lib/log/logger_manager_impl.cc
index 68f2bb8..1af40c1 100644
--- a/src/lib/log/logger_manager_impl.cc
+++ b/src/lib/log/logger_manager_impl.cc
@@ -17,6 +17,7 @@
#include <log4cplus/logger.h>
#include <log4cplus/configurator.h>
+#include <log4cplus/hierarchy.h>
#include <log4cplus/consoleappender.h>
#include <log4cplus/fileappender.h>
#include <log4cplus/syslogappender.h>
diff --git a/src/lib/log/tests/Makefile.am b/src/lib/log/tests/Makefile.am
index aac3914..3ac19a4 100644
--- a/src/lib/log/tests/Makefile.am
+++ b/src/lib/log/tests/Makefile.am
@@ -23,18 +23,18 @@ noinst_PROGRAMS = logger_example
logger_example_SOURCES = logger_example.cc
logger_example_CPPFLAGS = $(AM_CPPFLAGS)
logger_example_LDFLAGS = $(AM_LDFLAGS)
-logger_example_LDADD = $(top_builddir)/src/lib/log/liblog.la
-logger_example_LDADD += $(top_builddir)/src/lib/util/libutil.la
-logger_example_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+logger_example_LDADD = $(top_builddir)/src/lib/log/libb10-log.la
+logger_example_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+logger_example_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
logger_example_LDADD += $(AM_LDADD) $(LOG4CPLUS_LIBS)
noinst_PROGRAMS += init_logger_test
init_logger_test_SOURCES = init_logger_test.cc
init_logger_test_CPPFLAGS = $(AM_CPPFLAGS)
init_logger_test_LDFLAGS = $(AM_LDFLAGS)
-init_logger_test_LDADD = $(top_builddir)/src/lib/log/liblog.la
-init_logger_test_LDADD += $(top_builddir)/src/lib/util/libutil.la
-init_logger_test_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+init_logger_test_LDADD = $(top_builddir)/src/lib/log/libb10-log.la
+init_logger_test_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+init_logger_test_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
init_logger_test_LDADD += $(AM_LDADD) $(LOG4CPLUS_LIBS)
noinst_PROGRAMS += logger_lock_test
@@ -42,9 +42,9 @@ logger_lock_test_SOURCES = logger_lock_test.cc
nodist_logger_lock_test_SOURCES = log_test_messages.cc log_test_messages.h
logger_lock_test_CPPFLAGS = $(AM_CPPFLAGS)
logger_lock_test_LDFLAGS = $(AM_LDFLAGS)
-logger_lock_test_LDADD = $(top_builddir)/src/lib/log/liblog.la
-logger_lock_test_LDADD += $(top_builddir)/src/lib/util/libutil.la
-logger_lock_test_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+logger_lock_test_LDADD = $(top_builddir)/src/lib/log/libb10-log.la
+logger_lock_test_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+logger_lock_test_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
logger_lock_test_LDADD += $(AM_LDADD) $(LOG4CPLUS_LIBS)
TESTS_ENVIRONMENT = \
@@ -61,10 +61,10 @@ endif
AM_CPPFLAGS += $(GTEST_INCLUDES) $(LOG4CPLUS_INCLUDES)
AM_LDFLAGS += $(GTEST_LDFLAGS)
-AM_LDADD += $(top_builddir)/src/lib/util/libutil.la
-AM_LDADD += $(top_builddir)/src/lib/log/liblog.la
+AM_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+AM_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
AM_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-AM_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+AM_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
AM_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
AM_LDADD += $(GTEST_LDADD)
diff --git a/src/lib/nsas/Makefile.am b/src/lib/nsas/Makefile.am
index 663afba..eb8c0c3 100644
--- a/src/lib/nsas/Makefile.am
+++ b/src/lib/nsas/Makefile.am
@@ -26,7 +26,7 @@ nsas_messages.h nsas_messages.cc: nsas_messages.mes
$(top_builddir)/src/lib/log/compiler/message $(top_srcdir)/src/lib/nsas/nsas_messages.mes
# What is being built.
-lib_LTLIBRARIES = libnsas.la
+lib_LTLIBRARIES = libb10-nsas.la
# Tell Automake that the nsas_messages.{cc,h} source files are created in the build
# process, so it must create these before doing anything else. Although they
@@ -37,24 +37,24 @@ lib_LTLIBRARIES = libnsas.la
BUILT_SOURCES = nsas_messages.h nsas_messages.cc
# Library sources. The generated files will not be in the distribution.
-libnsas_la_SOURCES = address_entry.h address_entry.cc
-libnsas_la_SOURCES += asiolink.h
-libnsas_la_SOURCES += hash.cc hash.h
-libnsas_la_SOURCES += hash_deleter.h
-libnsas_la_SOURCES += hash_key.cc hash_key.h
-libnsas_la_SOURCES += hash_table.h
-libnsas_la_SOURCES += nameserver_address_store.cc nameserver_address_store.h
-libnsas_la_SOURCES += nameserver_address.h nameserver_address.cc
-libnsas_la_SOURCES += nameserver_entry.cc nameserver_entry.h
-libnsas_la_SOURCES += nsas_entry_compare.h
-libnsas_la_SOURCES += nsas_entry.h nsas_types.h
-libnsas_la_SOURCES += nsas_log.cc nsas_log.h
-libnsas_la_SOURCES += zone_entry.cc zone_entry.h
-libnsas_la_SOURCES += fetchable.h
-libnsas_la_SOURCES += address_request_callback.h
-libnsas_la_SOURCES += glue_hints.h glue_hints.cc
-
-nodist_libnsas_la_SOURCES = nsas_messages.h nsas_messages.cc
+libb10_nsas_la_SOURCES = address_entry.h address_entry.cc
+libb10_nsas_la_SOURCES += asiolink.h
+libb10_nsas_la_SOURCES += hash.cc hash.h
+libb10_nsas_la_SOURCES += hash_deleter.h
+libb10_nsas_la_SOURCES += hash_key.cc hash_key.h
+libb10_nsas_la_SOURCES += hash_table.h
+libb10_nsas_la_SOURCES += nameserver_address_store.cc nameserver_address_store.h
+libb10_nsas_la_SOURCES += nameserver_address.h nameserver_address.cc
+libb10_nsas_la_SOURCES += nameserver_entry.cc nameserver_entry.h
+libb10_nsas_la_SOURCES += nsas_entry_compare.h
+libb10_nsas_la_SOURCES += nsas_entry.h nsas_types.h
+libb10_nsas_la_SOURCES += nsas_log.cc nsas_log.h
+libb10_nsas_la_SOURCES += zone_entry.cc zone_entry.h
+libb10_nsas_la_SOURCES += fetchable.h
+libb10_nsas_la_SOURCES += address_request_callback.h
+libb10_nsas_la_SOURCES += glue_hints.h glue_hints.cc
+
+nodist_libb10_nsas_la_SOURCES = nsas_messages.h nsas_messages.cc
# The message file should be in the distribution.
EXTRA_DIST = nsas_messages.mes
diff --git a/src/lib/nsas/tests/Makefile.am b/src/lib/nsas/tests/Makefile.am
index bc03978..1b89cb8 100644
--- a/src/lib/nsas/tests/Makefile.am
+++ b/src/lib/nsas/tests/Makefile.am
@@ -49,13 +49,13 @@ run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
run_unittests_LDADD = $(GTEST_LDADD)
-run_unittests_LDADD += $(top_builddir)/src/lib/nsas/libnsas.la
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
-run_unittests_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
+run_unittests_LDADD += $(top_builddir)/src/lib/nsas/libb10-nsas.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+run_unittests_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
endif
noinst_PROGRAMS = $(TESTS)
diff --git a/src/lib/python/isc/acl/Makefile.am b/src/lib/python/isc/acl/Makefile.am
index b9a0c81..634fadd 100644
--- a/src/lib/python/isc/acl/Makefile.am
+++ b/src/lib/python/isc/acl/Makefile.am
@@ -27,11 +27,11 @@ _dns_la_CXXFLAGS = $(AM_CXXFLAGS) $(PYTHON_CXXFLAGS)
# Python prefers .so, while some OSes (specifically MacOS) use a different
# suffix for dynamic objects. -module is necessary to work this around.
acl_la_LDFLAGS += -module -avoid-version
-acl_la_LIBADD = $(top_builddir)/src/lib/acl/libacl.la
+acl_la_LIBADD = $(top_builddir)/src/lib/acl/libb10-acl.la
acl_la_LIBADD += $(PYTHON_LIB)
_dns_la_LDFLAGS += -module -avoid-version
-_dns_la_LIBADD = $(top_builddir)/src/lib/acl/libdnsacl.la
+_dns_la_LIBADD = $(top_builddir)/src/lib/acl/libb10-dnsacl.la
_dns_la_LIBADD += $(PYTHON_LIB)
EXTRA_DIST = acl.py _dns.py
diff --git a/src/lib/python/isc/config/module_spec.py b/src/lib/python/isc/config/module_spec.py
index b79f928..e5568f6 100644
--- a/src/lib/python/isc/config/module_spec.py
+++ b/src/lib/python/isc/config/module_spec.py
@@ -386,6 +386,8 @@ def _validate_format(spec, value, errors):
return True
def _validate_item(spec, full, data, errors):
+ if spec.get('item_type') == 'any':
+ return True
if not _validate_type(spec, data, errors):
return False
elif type(data) == list:
diff --git a/src/lib/python/isc/datasrc/Makefile.am b/src/lib/python/isc/datasrc/Makefile.am
index 2ccf8ff..84da788 100644
--- a/src/lib/python/isc/datasrc/Makefile.am
+++ b/src/lib/python/isc/datasrc/Makefile.am
@@ -25,9 +25,9 @@ datasrc_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON_INCLUDES)
datasrc_la_CXXFLAGS = $(AM_CXXFLAGS) $(PYTHON_CXXFLAGS)
datasrc_la_LDFLAGS = $(PYTHON_LDFLAGS)
datasrc_la_LDFLAGS += -module -avoid-version
-datasrc_la_LIBADD = $(top_builddir)/src/lib/datasrc/libdatasrc.la
-datasrc_la_LIBADD += $(top_builddir)/src/lib/cc/libcc.la
-datasrc_la_LIBADD += $(top_builddir)/src/lib/dns/python/libpydnspp.la
+datasrc_la_LIBADD = $(top_builddir)/src/lib/datasrc/libb10-datasrc.la
+datasrc_la_LIBADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+datasrc_la_LIBADD += $(top_builddir)/src/lib/dns/python/libb10-pydnspp.la
datasrc_la_LIBADD += $(PYTHON_LIB)
EXTRA_DIST = client_inc.cc
diff --git a/src/lib/python/isc/log/Makefile.am b/src/lib/python/isc/log/Makefile.am
index 3658c17..5941492 100644
--- a/src/lib/python/isc/log/Makefile.am
+++ b/src/lib/python/isc/log/Makefile.am
@@ -14,10 +14,10 @@ log_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON_INCLUDES)
log_la_CXXFLAGS = $(AM_CXXFLAGS) $(PYTHON_CXXFLAGS)
log_la_LDFLAGS = $(PYTHON_LDFLAGS)
log_la_LDFLAGS += -module -avoid-version
-log_la_LIBADD = $(top_builddir)/src/lib/log/liblog.la
-log_la_LIBADD += $(top_builddir)/src/lib/cc/libcc.la
-log_la_LIBADD += $(top_builddir)/src/lib/config/libcfgclient.la
-log_la_LIBADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+log_la_LIBADD = $(top_builddir)/src/lib/log/libb10-log.la
+log_la_LIBADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+log_la_LIBADD += $(top_builddir)/src/lib/config/libb10-cfgclient.la
+log_la_LIBADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
log_la_LIBADD += $(PYTHON_LIB)
# This is not installed, it helps locate the module during tests
diff --git a/src/lib/python/isc/util/cio/Makefile.am b/src/lib/python/isc/util/cio/Makefile.am
index 0a2e735..4a23509 100644
--- a/src/lib/python/isc/util/cio/Makefile.am
+++ b/src/lib/python/isc/util/cio/Makefile.am
@@ -24,7 +24,7 @@ socketsession_la_CXXFLAGS = $(AM_CXXFLAGS) $(PYTHON_CXXFLAGS)
# Python prefers .so, while some OSes (specifically MacOS) use a different
# suffix for dynamic objects. -module is necessary to work this around.
socketsession_la_LDFLAGS += -module -avoid-version
-socketsession_la_LIBADD = $(top_builddir)/src/lib/util/io/libutil_io.la
+socketsession_la_LIBADD = $(top_builddir)/src/lib/util/io/libb10-util-io.la
socketsession_la_LIBADD += $(PYTHON_LIB)
# This is not installed, it helps locate the module during tests
diff --git a/src/lib/resolve/Makefile.am b/src/lib/resolve/Makefile.am
index 4b81862..096a14d 100644
--- a/src/lib/resolve/Makefile.am
+++ b/src/lib/resolve/Makefile.am
@@ -21,30 +21,30 @@ BUILT_SOURCES = resolve_messages.h resolve_messages.cc
CLEANFILES = *.gcno *.gcda resolve_messages.cc resolve_messages.h
-lib_LTLIBRARIES = libresolve.la
-libresolve_la_SOURCES = resolve.h resolve.cc
-libresolve_la_SOURCES += resolve_log.h resolve_log.cc
-libresolve_la_SOURCES += resolver_interface.h
-libresolve_la_SOURCES += resolver_callback.h resolver_callback.cc
-libresolve_la_SOURCES += response_classifier.cc response_classifier.h
-libresolve_la_SOURCES += recursive_query.cc recursive_query.h
+lib_LTLIBRARIES = libb10-resolve.la
+libb10_resolve_la_SOURCES = resolve.h resolve.cc
+libb10_resolve_la_SOURCES += resolve_log.h resolve_log.cc
+libb10_resolve_la_SOURCES += resolver_interface.h
+libb10_resolve_la_SOURCES += resolver_callback.h resolver_callback.cc
+libb10_resolve_la_SOURCES += response_classifier.cc response_classifier.h
+libb10_resolve_la_SOURCES += recursive_query.cc recursive_query.h
-nodist_libresolve_la_SOURCES = resolve_messages.h resolve_messages.cc
+nodist_libb10_resolve_la_SOURCES = resolve_messages.h resolve_messages.cc
-libresolve_la_LIBADD = $(top_builddir)/src/lib/dns/libdns++.la
-libresolve_la_LIBADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-libresolve_la_LIBADD += $(top_builddir)/src/lib/log/liblog.la
-libresolve_la_LIBADD += $(top_builddir)/src/lib/asiodns/libasiodns.la
+libb10_resolve_la_LIBADD = $(top_builddir)/src/lib/dns/libb10-dns++.la
+libb10_resolve_la_LIBADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+libb10_resolve_la_LIBADD += $(top_builddir)/src/lib/log/libb10-log.la
+libb10_resolve_la_LIBADD += $(top_builddir)/src/lib/asiodns/libb10-asiodns.la
# The message file should be in the distribution.
EXTRA_DIST = resolve_messages.mes
# Note: the ordering matters: -Wno-... must follow -Wextra (defined in
# B10_CXXFLAGS)
-libresolve_la_CXXFLAGS = $(AM_CXXFLAGS)
+libb10_resolve_la_CXXFLAGS = $(AM_CXXFLAGS)
if USE_CLANGPP
# For clang++, we need to turn off -Werror completely.
-libresolve_la_CXXFLAGS += -Wno-error
+libb10_resolve_la_CXXFLAGS += -Wno-error
endif
-libresolve_la_CPPFLAGS = $(AM_CPPFLAGS)
+libb10_resolve_la_CPPFLAGS = $(AM_CPPFLAGS)
diff --git a/src/lib/resolve/tests/Makefile.am b/src/lib/resolve/tests/Makefile.am
index 97afe5c..84f603b 100644
--- a/src/lib/resolve/tests/Makefile.am
+++ b/src/lib/resolve/tests/Makefile.am
@@ -29,16 +29,16 @@ run_unittests_SOURCES += recursive_query_unittest_2.cc
run_unittests_SOURCES += recursive_query_unittest_3.cc
run_unittests_LDADD = $(GTEST_LDADD)
-run_unittests_LDADD += $(top_builddir)/src/lib/nsas/libnsas.la
-run_unittests_LDADD += $(top_builddir)/src/lib/cache/libcache.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiodns/libasiodns.la
-run_unittests_LDADD += $(top_builddir)/src/lib/resolve/libresolve.la
-run_unittests_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
+run_unittests_LDADD += $(top_builddir)/src/lib/nsas/libb10-nsas.la
+run_unittests_LDADD += $(top_builddir)/src/lib/cache/libb10-cache.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiodns/libb10-asiodns.la
+run_unittests_LDADD += $(top_builddir)/src/lib/resolve/libb10-resolve.la
+run_unittests_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
endif
diff --git a/src/lib/server_common/Makefile.am b/src/lib/server_common/Makefile.am
index 6010316..cf9059a 100644
--- a/src/lib/server_common/Makefile.am
+++ b/src/lib/server_common/Makefile.am
@@ -16,22 +16,22 @@ if USE_CLANGPP
AM_CXXFLAGS += -Wno-unused-parameter
endif
-lib_LTLIBRARIES = libserver_common.la
-libserver_common_la_SOURCES = client.h client.cc
-libserver_common_la_SOURCES += keyring.h keyring.cc
-libserver_common_la_SOURCES += portconfig.h portconfig.cc
-libserver_common_la_SOURCES += logger.h logger.cc
-libserver_common_la_SOURCES += socket_request.h socket_request.cc
-nodist_libserver_common_la_SOURCES = server_common_messages.h
-nodist_libserver_common_la_SOURCES += server_common_messages.cc
-libserver_common_la_LIBADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
-libserver_common_la_LIBADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-libserver_common_la_LIBADD += $(top_builddir)/src/lib/cc/libcc.la
-libserver_common_la_LIBADD += $(top_builddir)/src/lib/config/libcfgclient.la
-libserver_common_la_LIBADD += $(top_builddir)/src/lib/log/liblog.la
-libserver_common_la_LIBADD += $(top_builddir)/src/lib/acl/libacl.la
-libserver_common_la_LIBADD += $(top_builddir)/src/lib/dns/libdns++.la
-libserver_common_la_LIBADD += $(top_builddir)/src/lib/util/io/libutil_io.la
+lib_LTLIBRARIES = libb10-server-common.la
+libb10_server_common_la_SOURCES = client.h client.cc
+libb10_server_common_la_SOURCES += keyring.h keyring.cc
+libb10_server_common_la_SOURCES += portconfig.h portconfig.cc
+libb10_server_common_la_SOURCES += logger.h logger.cc
+libb10_server_common_la_SOURCES += socket_request.h socket_request.cc
+nodist_libb10_server_common_la_SOURCES = server_common_messages.h
+nodist_libb10_server_common_la_SOURCES += server_common_messages.cc
+libb10_server_common_la_LIBADD = $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+libb10_server_common_la_LIBADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+libb10_server_common_la_LIBADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+libb10_server_common_la_LIBADD += $(top_builddir)/src/lib/config/libb10-cfgclient.la
+libb10_server_common_la_LIBADD += $(top_builddir)/src/lib/log/libb10-log.la
+libb10_server_common_la_LIBADD += $(top_builddir)/src/lib/acl/libb10-acl.la
+libb10_server_common_la_LIBADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
+libb10_server_common_la_LIBADD += $(top_builddir)/src/lib/util/io/libb10-util-io.la
BUILT_SOURCES = server_common_messages.h server_common_messages.cc
server_common_messages.h server_common_messages.cc: server_common_messages.mes
$(top_builddir)/src/lib/log/compiler/message $(top_srcdir)/src/lib/server_common/server_common_messages.mes
diff --git a/src/lib/server_common/tests/Makefile.am b/src/lib/server_common/tests/Makefile.am
index d6498f1..6e03f70 100644
--- a/src/lib/server_common/tests/Makefile.am
+++ b/src/lib/server_common/tests/Makefile.am
@@ -38,18 +38,18 @@ nodist_run_unittests_SOURCES = data_path.h
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
run_unittests_LDADD = $(GTEST_LDADD)
-run_unittests_LDADD += $(top_builddir)/src/lib/server_common/libserver_common.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiodns/libasiodns.la
-run_unittests_LDADD += $(top_builddir)/src/lib/cc/libcc.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
-run_unittests_LDADD += $(top_builddir)/src/lib/acl/libacl.la
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
-run_unittests_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
+run_unittests_LDADD += $(top_builddir)/src/lib/server_common/libb10-server-common.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiodns/libb10-asiodns.la
+run_unittests_LDADD += $(top_builddir)/src/lib/cc/libb10-cc.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+run_unittests_LDADD += $(top_builddir)/src/lib/acl/libb10-acl.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+run_unittests_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-run_unittests_LDADD += $(top_builddir)/src/lib/config/libcfgclient.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/config/libb10-cfgclient.la
run_unittests_LDADD += $(top_builddir)/src/lib/config/tests/libfake_session.la
endif
diff --git a/src/lib/statistics/Makefile.am b/src/lib/statistics/Makefile.am
index 6c7b910..206b527 100644
--- a/src/lib/statistics/Makefile.am
+++ b/src/lib/statistics/Makefile.am
@@ -17,8 +17,8 @@ if USE_CLANGPP
AM_CXXFLAGS += -Wno-unused-parameter
endif
-lib_LTLIBRARIES = libstatistics.la
-libstatistics_la_SOURCES = counter.h counter.cc
-libstatistics_la_SOURCES += counter_dict.h counter_dict.cc
+lib_LTLIBRARIES = libb10-statistics.la
+libb10_statistics_la_SOURCES = counter.h counter.cc
+libb10_statistics_la_SOURCES += counter_dict.h counter_dict.cc
CLEANFILES = *.gcno *.gcda
diff --git a/src/lib/statistics/tests/Makefile.am b/src/lib/statistics/tests/Makefile.am
index c6e7cb8..007c8b0 100644
--- a/src/lib/statistics/tests/Makefile.am
+++ b/src/lib/statistics/tests/Makefile.am
@@ -28,10 +28,10 @@ run_unittests_SOURCES += counter_dict_unittest.cc
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDADD = $(GTEST_LDADD)
-run_unittests_LDADD += $(top_builddir)/src/lib/statistics/libstatistics.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
+run_unittests_LDADD += $(top_builddir)/src/lib/statistics/libb10-statistics.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
diff --git a/src/lib/testutils/Makefile.am b/src/lib/testutils/Makefile.am
index 7a4c8d7..2281b6d 100644
--- a/src/lib/testutils/Makefile.am
+++ b/src/lib/testutils/Makefile.am
@@ -5,13 +5,13 @@ AM_CPPFLAGS += $(BOOST_INCLUDES)
AM_CXXFLAGS=$(B10_CXXFLAGS)
if HAVE_GTEST
-noinst_LTLIBRARIES = libtestutils.la
+noinst_LTLIBRARIES = libb10-testutils.la
-libtestutils_la_SOURCES = srv_test.h srv_test.cc
-libtestutils_la_SOURCES += dnsmessage_test.h dnsmessage_test.cc
-libtestutils_la_SOURCES += mockups.h
-libtestutils_la_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
-libtestutils_la_LIBADD = $(top_builddir)/src/lib/asiolink/libasiolink.la
+libb10_testutils_la_SOURCES = srv_test.h srv_test.cc
+libb10_testutils_la_SOURCES += dnsmessage_test.h dnsmessage_test.cc
+libb10_testutils_la_SOURCES += mockups.h
+libb10_testutils_la_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
+libb10_testutils_la_LIBADD = $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
endif
EXTRA_DIST = portconfig.h socket_request.h
diff --git a/src/lib/util/Makefile.am b/src/lib/util/Makefile.am
index b135ffc..c56e4b8 100644
--- a/src/lib/util/Makefile.am
+++ b/src/lib/util/Makefile.am
@@ -7,29 +7,29 @@ AM_CPPFLAGS += $(BOOST_INCLUDES)
AM_CPPFLAGS += -DLOCKFILE_DIR=\"${localstatedir}/${PACKAGE_NAME}\"
AM_CXXFLAGS = $(B10_CXXFLAGS)
-lib_LTLIBRARIES = libutil.la
-libutil_la_SOURCES = filename.h filename.cc
-libutil_la_SOURCES += locks.h lru_list.h
-libutil_la_SOURCES += strutil.h strutil.cc
-libutil_la_SOURCES += buffer.h io_utilities.h
-libutil_la_SOURCES += time_utilities.h time_utilities.cc
-libutil_la_SOURCES += interprocess_sync.h
-libutil_la_SOURCES += interprocess_sync_file.h interprocess_sync_file.cc
-libutil_la_SOURCES += interprocess_sync_null.h interprocess_sync_null.cc
-libutil_la_SOURCES += memory_segment.h
-libutil_la_SOURCES += memory_segment_local.h memory_segment_local.cc
-libutil_la_SOURCES += range_utilities.h
-libutil_la_SOURCES += hash/sha1.h hash/sha1.cc
-libutil_la_SOURCES += encode/base16_from_binary.h
-libutil_la_SOURCES += encode/base32hex.h encode/base64.h
-libutil_la_SOURCES += encode/base32hex_from_binary.h
-libutil_la_SOURCES += encode/base_n.cc encode/hex.h
-libutil_la_SOURCES += encode/binary_from_base32hex.h
-libutil_la_SOURCES += encode/binary_from_base16.h
-libutil_la_SOURCES += random/qid_gen.h random/qid_gen.cc
-libutil_la_SOURCES += random/random_number_generator.h
+lib_LTLIBRARIES = libb10-util.la
+libb10_util_la_SOURCES = filename.h filename.cc
+libb10_util_la_SOURCES += locks.h lru_list.h
+libb10_util_la_SOURCES += strutil.h strutil.cc
+libb10_util_la_SOURCES += buffer.h io_utilities.h
+libb10_util_la_SOURCES += time_utilities.h time_utilities.cc
+libb10_util_la_SOURCES += interprocess_sync.h
+libb10_util_la_SOURCES += interprocess_sync_file.h interprocess_sync_file.cc
+libb10_util_la_SOURCES += interprocess_sync_null.h interprocess_sync_null.cc
+libb10_util_la_SOURCES += memory_segment.h
+libb10_util_la_SOURCES += memory_segment_local.h memory_segment_local.cc
+libb10_util_la_SOURCES += range_utilities.h
+libb10_util_la_SOURCES += hash/sha1.h hash/sha1.cc
+libb10_util_la_SOURCES += encode/base16_from_binary.h
+libb10_util_la_SOURCES += encode/base32hex.h encode/base64.h
+libb10_util_la_SOURCES += encode/base32hex_from_binary.h
+libb10_util_la_SOURCES += encode/base_n.cc encode/hex.h
+libb10_util_la_SOURCES += encode/binary_from_base32hex.h
+libb10_util_la_SOURCES += encode/binary_from_base16.h
+libb10_util_la_SOURCES += random/qid_gen.h random/qid_gen.cc
+libb10_util_la_SOURCES += random/random_number_generator.h
EXTRA_DIST = python/pycppwrapper_util.h
-libutil_la_LIBADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
+libb10_util_la_LIBADD = $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
CLEANFILES = *.gcno *.gcda
diff --git a/src/lib/util/io/Makefile.am b/src/lib/util/io/Makefile.am
index 1cb0ab9..1249178 100644
--- a/src/lib/util/io/Makefile.am
+++ b/src/lib/util/io/Makefile.am
@@ -3,11 +3,11 @@ AM_CXXFLAGS = $(B10_CXXFLAGS)
AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib
AM_CPPFLAGS += $(BOOST_INCLUDES)
-lib_LTLIBRARIES = libutil_io.la
-libutil_io_la_SOURCES = fd.h fd.cc fd_share.h fd_share.cc
-libutil_io_la_SOURCES += socketsession.h socketsession.cc sockaddr_util.h
-libutil_io_la_SOURCES += pktinfo_utilities.h
-libutil_io_la_LIBADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
+lib_LTLIBRARIES = libb10-util-io.la
+libb10_util_io_la_SOURCES = fd.h fd.cc fd_share.h fd_share.cc
+libb10_util_io_la_SOURCES += socketsession.h socketsession.cc sockaddr_util.h
+libb10_util_io_la_SOURCES += pktinfo_utilities.h
+libb10_util_io_la_LIBADD = $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
CLEANFILES = *.gcno *.gcda
@@ -16,7 +16,7 @@ pyexec_LTLIBRARIES = libutil_io_python.la
# suffix for dynamic objects. -module is necessary to work this around.
libutil_io_python_la_LDFLAGS = -module -avoid-version
libutil_io_python_la_SOURCES = fdshare_python.cc
-libutil_io_python_la_LIBADD = libutil_io.la
+libutil_io_python_la_LIBADD = libb10-util-io.la
libutil_io_python_la_CPPFLAGS = $(AM_CPPFLAGS) $(PYTHON_INCLUDES)
# Note: PYTHON_CXXFLAGS may have some -Wno... workaround, which must be
# placed after -Wextra defined in AM_CXXFLAGS
diff --git a/src/lib/util/pyunittests/Makefile.am b/src/lib/util/pyunittests/Makefile.am
index 93b0748..7f04d89 100644
--- a/src/lib/util/pyunittests/Makefile.am
+++ b/src/lib/util/pyunittests/Makefile.am
@@ -14,7 +14,7 @@ pyunittests_util_la_CXXFLAGS = $(AM_CXXFLAGS) $(PYTHON_CXXFLAGS)
# Python prefers .so, while some OSes (specifically MacOS) use a different
# suffix for dynamic objects. -module is necessary to work this around.
pyunittests_util_la_LDFLAGS += -module -avoid-version
-pyunittests_util_la_LIBADD = $(top_builddir)/src/lib/util/libutil.la
+pyunittests_util_la_LIBADD = $(top_builddir)/src/lib/util/libb10-util.la
pyunittests_util_la_LIBADD += $(PYTHON_LIB)
# hack to trigger libtool to not create a convenience archive,
diff --git a/src/lib/util/tests/Makefile.am b/src/lib/util/tests/Makefile.am
index 97ee77d..105322f 100644
--- a/src/lib/util/tests/Makefile.am
+++ b/src/lib/util/tests/Makefile.am
@@ -45,11 +45,11 @@ run_unittests_SOURCES += range_utilities_unittest.cc
run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
-run_unittests_LDADD = $(top_builddir)/src/lib/util/libutil.la
-run_unittests_LDADD += $(top_builddir)/src/lib/util/io/libutil_io.la
+run_unittests_LDADD = $(top_builddir)/src/lib/util/libb10-util.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/io/libb10-util-io.la
run_unittests_LDADD += \
$(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
run_unittests_LDADD += $(GTEST_LDADD)
endif
diff --git a/src/lib/util/unittests/Makefile.am b/src/lib/util/unittests/Makefile.am
index 39fbf88..451ab4e 100644
--- a/src/lib/util/unittests/Makefile.am
+++ b/src/lib/util/unittests/Makefile.am
@@ -20,8 +20,8 @@ if HAVE_GTEST
libutil_unittests_la_CPPFLAGS += $(GTEST_INCLUDES)
endif
-libutil_unittests_la_LIBADD = $(top_builddir)/src/lib/util/libutil.la
-libutil_unittests_la_LIBADD += $(top_builddir)/src/lib/util/io/libutil_io.la
-libutil_unittests_la_LIBADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+libutil_unittests_la_LIBADD = $(top_builddir)/src/lib/util/libb10-util.la
+libutil_unittests_la_LIBADD += $(top_builddir)/src/lib/util/io/libb10-util-io.la
+libutil_unittests_la_LIBADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
CLEANFILES = *.gcno *.gcda
diff --git a/src/lib/xfr/Makefile.am b/src/lib/xfr/Makefile.am
index 3d7f60f..5551a5b 100644
--- a/src/lib/xfr/Makefile.am
+++ b/src/lib/xfr/Makefile.am
@@ -12,6 +12,6 @@ endif
CLEANFILES = *.gcno *.gcda
-lib_LTLIBRARIES = libxfr.la
-libxfr_la_SOURCES = xfrout_client.h xfrout_client.cc
-libxfr_la_LIBADD = $(top_builddir)/src/lib/util/io/libutil_io.la
+lib_LTLIBRARIES = libb10-xfr.la
+libb10_xfr_la_SOURCES = xfrout_client.h xfrout_client.cc
+libb10_xfr_la_LIBADD = $(top_builddir)/src/lib/util/io/libb10-util-io.la
diff --git a/src/lib/xfr/tests/Makefile.am b/src/lib/xfr/tests/Makefile.am
index e8f187f..908abe8 100644
--- a/src/lib/xfr/tests/Makefile.am
+++ b/src/lib/xfr/tests/Makefile.am
@@ -21,8 +21,8 @@ run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
run_unittests_LDADD = $(GTEST_LDADD)
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
-run_unittests_LDADD += $(top_builddir)/src/lib/xfr/libxfr.la
-run_unittests_LDADD += $(top_builddir)/src/lib/log/liblog.la
+run_unittests_LDADD += $(top_builddir)/src/lib/xfr/libb10-xfr.la
+run_unittests_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
endif
noinst_PROGRAMS = $(TESTS)
diff --git a/tests/lettuce/features/terrain/bind10_control.py b/tests/lettuce/features/terrain/bind10_control.py
index 5829339..b661657 100644
--- a/tests/lettuce/features/terrain/bind10_control.py
+++ b/tests/lettuce/features/terrain/bind10_control.py
@@ -362,4 +362,3 @@ def configure_ddns_off(step):
config commit
\"\"\"
""")
-
diff --git a/tests/tools/badpacket/Makefile.am b/tests/tools/badpacket/Makefile.am
index fcba404..b24cf3c 100644
--- a/tests/tools/badpacket/Makefile.am
+++ b/tests/tools/badpacket/Makefile.am
@@ -25,9 +25,9 @@ if USE_CLANGPP
badpacket_CXXFLAGS += -Wno-error
endif
-badpacket_LDADD = $(top_builddir)/src/lib/asiodns/libasiodns.la
-badpacket_LDADD += $(top_builddir)/src/lib/dns/libdns++.la
-badpacket_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-badpacket_LDADD += $(top_builddir)/src/lib/log/liblog.la
-badpacket_LDADD += $(top_builddir)/src/lib/util/libutil.la
-badpacket_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+badpacket_LDADD = $(top_builddir)/src/lib/asiodns/libb10-asiodns.la
+badpacket_LDADD += $(top_builddir)/src/lib/dns/libb10-dns++.la
+badpacket_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+badpacket_LDADD += $(top_builddir)/src/lib/log/libb10-log.la
+badpacket_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+badpacket_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
diff --git a/tests/tools/badpacket/tests/Makefile.am b/tests/tools/badpacket/tests/Makefile.am
index a036dc8..3a8c922 100644
--- a/tests/tools/badpacket/tests/Makefile.am
+++ b/tests/tools/badpacket/tests/Makefile.am
@@ -27,8 +27,8 @@ run_unittests_CPPFLAGS = $(AM_CPPFLAGS) $(GTEST_INCLUDES)
run_unittests_LDFLAGS = $(AM_LDFLAGS) $(GTEST_LDFLAGS)
run_unittests_LDADD = $(GTEST_LDADD)
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
endif
diff --git a/tests/tools/perfdhcp/Makefile.am b/tests/tools/perfdhcp/Makefile.am
index 6ebc00f..d46f2d1 100644
--- a/tests/tools/perfdhcp/Makefile.am
+++ b/tests/tools/perfdhcp/Makefile.am
@@ -18,23 +18,23 @@ if USE_STATIC_LINK
AM_LDFLAGS += -static
endif
-lib_LTLIBRARIES = libperfdhcp++.la
-libperfdhcp___la_SOURCES = command_options.cc command_options.h
-libperfdhcp___la_SOURCES += localized_option.h
-libperfdhcp___la_SOURCES += perf_pkt6.cc perf_pkt6.h
-libperfdhcp___la_SOURCES += perf_pkt4.cc perf_pkt4.h
-libperfdhcp___la_SOURCES += pkt_transform.cc pkt_transform.h
-
-libperfdhcp___la_CXXFLAGS = $(AM_CXXFLAGS)
+lib_LTLIBRARIES = libb10_perfdhcp++.la
+libb10_perfdhcp___la_SOURCES = command_options.cc command_options.h
+libb10_perfdhcp___la_SOURCES += localized_option.h
+libb10_perfdhcp___la_SOURCES += perf_pkt6.cc perf_pkt6.h
+libb10_perfdhcp___la_SOURCES += perf_pkt4.cc perf_pkt4.h
+libb10_perfdhcp___la_SOURCES += pkt_transform.cc pkt_transform.h
+
+libb10_perfdhcp___la_CXXFLAGS = $(AM_CXXFLAGS)
if USE_CLANGPP
# Disable unused parameter warning caused by some of the
# Boost headers when compiling with clang.
-libperfdhcp___la_CXXFLAGS += -Wno-unused-parameter
+libb10_perfdhcp___la_CXXFLAGS += -Wno-unused-parameter
endif
-libperfdhcp___la_LIBADD = $(top_builddir)/src/lib/exceptions/libexceptions.la
-libperfdhcp___la_LIBADD += $(top_builddir)/src/lib/dhcp/libdhcp++.la
-libperfdhcp___la_LIBADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
+libb10_perfdhcp___la_LIBADD = $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+libb10_perfdhcp___la_LIBADD += $(top_builddir)/src/lib/dhcp/libb10-dhcp++.la
+libb10_perfdhcp___la_LIBADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
pkglibexec_PROGRAMS = perfdhcp
perfdhcp_SOURCES = perfdhcp.c
diff --git a/tests/tools/perfdhcp/tests/Makefile.am b/tests/tools/perfdhcp/tests/Makefile.am
index ab1251c..ec1b403 100644
--- a/tests/tools/perfdhcp/tests/Makefile.am
+++ b/tests/tools/perfdhcp/tests/Makefile.am
@@ -36,10 +36,10 @@ run_unittests_CXXFLAGS = -Wno-unused-parameter
endif
run_unittests_LDADD = $(GTEST_LDADD)
-run_unittests_LDADD += $(top_builddir)/src/lib/util/libutil.la
-run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libexceptions.la
-run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libasiolink.la
-run_unittests_LDADD += $(top_builddir)/src/lib/dhcp/libdhcp++.la
+run_unittests_LDADD += $(top_builddir)/src/lib/util/libb10-util.la
+run_unittests_LDADD += $(top_builddir)/src/lib/exceptions/libb10-exceptions.la
+run_unittests_LDADD += $(top_builddir)/src/lib/asiolink/libb10-asiolink.la
+run_unittests_LDADD += $(top_builddir)/src/lib/dhcp/libb10-dhcp++.la
run_unittests_LDADD += $(top_builddir)/src/lib/util/unittests/libutil_unittests.la
endif
More information about the bind10-changes
mailing list