Commit e1252b9d authored by Tomek Mrugalski's avatar Tomek Mrugalski 🛰
Browse files

Merge branch 'master' into trac1237

Conflicts:
	ChangeLog
	src/bin/dhcp6/dhcp6_srv.cc
	src/lib/dhcp/Makefile.am
	src/lib/dhcp/iface_mgr.cc
	src/lib/dhcp/iface_mgr.h
	src/lib/dhcp/tests/Makefile.am
parents 73601f24 b0d0bf39
......@@ -4,11 +4,146 @@
addresses, flags and configured IPv4 and IPv6 addresses.
(Trac #1237, git TBD)
3XX. [func] tomek
349. [bug] dvv
resolver: If an upstream server responds with FORMERR to an EDNS query,
try querying it without EDNS.
(Trac #1386, git 99ad0292af284a246fff20b3702fbd7902c45418)
348. [bug] stephen
By default the logging output stream is now flushed after each write.
This fixes a problem seen on some systems where the log output from
different processes was jumbled up. Flushing can be disabled by setting
the appropriate option in the logging configuration.
(Trac #1405, git 2f0aa20b44604b671e6bde78815db39381e563bf)
347. [bug] jelte
Fixed a bug where adding Zonemgr/secondary_zones without explicitely
setting the class value of the added zone resulted in a cryptic
error in bindctl ("Error: class"). It will now correctly default to
IN if not set. This also adds better checks on the name and class
values, and better errors if they are bad.
(Trac #1414, git 7b122af8489acf0f28f935a19eca2c5509a3677f)
346. [build]* jreed
Renamed libdhcp to libdhcp++.
(Trac #1446, git d394e64f4c44f16027b1e62b4ac34e054b49221d)
345. [func] tomek
dhcp4: Dummy DHCPv4 component implemented. Currently it does
nothing useful, except providing skeleton implementation that can
be expanded in the future.
(Trac #992, git TBD)
(Trac #992, git d6e33479365c8f8f62ef2b9aa5548efe6b194601)
344. [func] y-aharen
src/lib/statistics: Added statistics counter library for entire server
items and per zone items. Also, modified b10-auth to use it. It is
also intended to use in the other modules such as b10-resolver.
(Trac #510, git afddaf4c5718c2a0cc31f2eee79c4e0cc625499f)
343. [func] jelte
Added IXFR-out system tests, based on the first two test sets of
http://bind10.isc.org/wiki/IxfrSystemTests.
(Trac #1314, git 1655bed624866a766311a01214597db01b4c7cec)
342. [bug] stephen
In the resolver, a FORMERR received from an upstream nameserver
now results in a SERVFAIL being returned as a response to the original
query. Additional debug messages added to distinguish between
different errors in packets received from upstream nameservers.
(Trac #1383, git 9b2b249d23576c999a65d8c338e008cabe45f0c9)
341. [func] tomek
libdhcp++: Support for handling both IPv4 and IPv6 added.
Also added support for binding IPv4 sockets.
(Trac #1238, git 86a4ce45115dab4d3978c36dd2dbe07edcac02ac)
340. [build] jelte
Fixed several linker issues related to recent gcc versions, botan
and gtest.
(Trac #1442, git 91fb141bfb3aadfdf96f13e157a26636f6e9f9e3)
339. [bug] jinmei
libxfr, used by b10-auth to share TCP sockets with b10-xfrout,
incorrectly propagated ASIO specific exceptions to the application
if the given file name was too long. This could lead to
unexpected shut down of b10-auth.
(Trac #1387, git a5e9d9176e9c60ef20c0f5ef59eeb6838ed47ab2)
338. [bug] jinmei
b10-xfrin didn't check SOA serials of SOA and IXFR responses,
which resulted in unnecessary transfer or unexpected IXFR
timeouts (these issues were not overlooked but deferred to be
fixed until #1278 was completed). Validation on responses to SOA
queries were tightened, too.
(Trac #1299, git 6ff03bb9d631023175df99248e8cc0cda586c30a)
337. [func] tomek
libdhcp++: Support for DHCPv4 option that can store a single
address or a list of IPv4 addresses added. Support for END option
added.
(Trac #1350, git cc20ff993da1ddb1c6e8a98370438b45a2be9e0a)
336. [func] jelte
libdns++ (and its python wrapper) now includes a class Serial, for
SOA SERIAL comparison and addition. Operations on instances of this
class follow the specification from RFC 1982.
Rdata::SOA::getSerial() now returns values of this type (and not
uint32_t).
(Trac #1278, git 2ae72d76c74f61a67590722c73ebbf631388acbd)
335. [bug]* jelte
The DataSourceClientContainer class that dynamically loads
datasource backend libraries no longer provides just a .so file name
to its call to dlopen(), but passes it an absolute path. This means
that it is no longer an system implementation detail that depends on
[DY]LD_LIBRARY_PATH which file is chosen, should there be multiple
options (for instance, when test-running a new build while a
different version is installed).
These loadable libraries are also no longer installed in the default
library path, but in a subdirectory of the libexec directory of the
target ($prefix/libexec/[version]/backends).
This also removes the need to handle b10-xfin and b10-xfrout as
'special' hardcoded components, and they are now started as regular
components as dictated by the configuration of the boss process.
(Trac #1292, git 83ce13c2d85068a1bec015361e4ef8c35590a5d0)
334. [bug] jinmei
b10-xfrout could potentially create an overflow response message
(exceeding the 64KB max) or could create unnecessarily small
messages. The former was actually unlikely to happen due to the
effect of name compression, and the latter was marginal and at least
shouldn't cause an interoperability problem, but these were still
potential problems and were fixed.
(Trac #1389, git 3fdce88046bdad392bd89ea656ec4ac3c858ca2f)
333. [bug] dvv
Solaris needs "-z now" to force non-lazy binding and prevent
g++ static initialization code from deadlocking.
(Trac #1439, git c789138250b33b6b08262425a08a2a0469d90433)
332. [bug] vorner
C++ exceptions in the isc.dns.Rdata wrapper are now converted
to python ones instead of just aborting the interpretter.
(Trac #1407, git 5b64e839be2906b8950f5b1e42a3fadd72fca033)
bind10-devel-20111128 released on November 28, 2011
331. [bug] shane
Fixed a bug in data source library where a zone with more labels
than an out-of-bailiwick name server would cause an exception to
be raised.
(Trac #1430, git 81f62344db074bc5eea3aaf3682122fdec6451ad)
330. [bug] jelte
Fixed a bug in b10-auth where it would sometimes fail because it
tried to check for queued msgq messages before the session was
fully running.
(git c35d0dde3e835fc5f0a78fcfcc8b76c74bc727ca)
329. [doc] vorner, jreed
Document the bind10 run control configuration in guide and
manual page.
(Trac #1341, git c1171699a2b501321ab54207ad26e5da2b092d63)
328. [func] jelte
b10-auth now passes IXFR requests on to b10-xfrout, and no longer
......@@ -21,7 +156,7 @@
always respond to IXFR requests according to RFC1995).
(Trac #1371 and #1372, git 80c131f5b0763753d199b0fb9b51f10990bcd92b)
326. [build]* jinmei
326. [build]* jinmei
Added a check script for the SQLite3 schema version. It will be
run at the beginning of 'make install', and if it detects an old
version of schema, installation will stop. You'll then need to
......@@ -75,29 +210,33 @@
319. [func] naokikambe
b10-stats-httpd was updated. In addition of the access to all
statistics items of all modules, the specified item or the items of the
specified module name can be accessed. For example, the URI requested
by using the feature is showed as "/bind10/statistics/xml/Auth" or
statistics items of all modules, the specified item or the items
of the specified module name can be accessed. For example, the
URI requested by using the feature is showed as
"/bind10/statistics/xml/Auth" or
"/bind10/statistics/xml/Auth/queries.tcp". The list of all possible
module names and all possible item names can be showed in the root
document, whose URI is "/bind10/statistics/xml". This change is not
only for the XML documents but also is for the XSD and XSL documents.
module names and all possible item names can be showed in the
root document, whose URI is "/bind10/statistics/xml". This change
is not only for the XML documents but also is for the XSD and
XSL documents.
(Trac #917, git b34bf286c064d44746ec0b79e38a6177d01e6956)
318. [func] stephen
Add C++ API for accessing zone difference information in database-based
data sources.
318. [func] stephen
Add C++ API for accessing zone difference information in
database-based data sources.
(Trac #1330, git 78770f52c7f1e7268d99e8bfa8c61e889813bb33)
317. [func] vorner
datasrc: the getUpdater method of DataSourceClient supports an optional
'journaling' parameter to indicate the generated updater to store diffs.
The database based derived class implements this extension.
317. [func] vorner
datasrc: the getUpdater method of DataSourceClient supports an
optional 'journaling' parameter to indicate the generated updater
to store diffs. The database based derived class implements this
extension.
(Trac #1331, git 713160c9bed3d991a00b2ea5e7e3e7714d79625d)
316. [func]* vorner
The configuration of what parts of the system run is more flexible now.
Everything that should run must have an entry in Boss/components.
The configuration of what parts of the system run is more
flexible now. Everything that should run must have an
entry in Boss/components.
(Trac #213, git 08e1873a3593b4fa06754654d22d99771aa388a6)
315. [func] tomek
......
......@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.59])
AC_INIT(bind10-devel, 20111021, bind10-dev@isc.org)
AC_INIT(bind10-devel, 20111129, bind10-dev@isc.org)
AC_CONFIG_SRCDIR(README)
AM_INIT_AUTOMAKE
AC_CONFIG_HEADERS([config.h])
......@@ -96,6 +96,8 @@ case "$host" in
# Solaris requires special definitions to get some standard libraries
# (e.g. getopt(3)) available with common used header files.
CPPFLAGS="$CPPFLAGS -D_XPG4_2 -D__EXTENSIONS__"
# "now" binding is necessary to prevent deadlocks in C++ static initialization code
LDFLAGS="$LDFLAGS -z now"
;;
*-apple-darwin*)
# libtool doesn't work perfectly with Darwin: libtool embeds the
......@@ -508,23 +510,33 @@ else
fi
fi
BOTAN_LDFLAGS=`${BOTAN_CONFIG} --libs`
BOTAN_LIBS=`${BOTAN_CONFIG} --libs`
BOTAN_INCLUDES=`${BOTAN_CONFIG} --cflags`
# We expect botan-config --libs to contain -L<path_to_libbotan>, but
# this is not always the case. As a heuristics workaround we add
# -L`botan-config --prefix/lib` in this case. Same for BOTAN_INCLUDES
# (but using include instead of lib) below.
# -L`botan-config --prefix/lib` in this case (if not present already).
# Same for BOTAN_INCLUDES (but using include instead of lib) below.
if [ $BOTAN_CONFIG --prefix >/dev/null 2>&1 ] ; then
echo ${BOTAN_LDFLAGS} | grep -- -L > /dev/null || \
BOTAN_LDFLAGS="-L`${BOTAN_CONFIG} --prefix`/lib ${BOTAN_LDFLAGS}"
echo ${BOTAN_LIBS} | grep -- -L > /dev/null || \
BOTAN_LIBS="-L`${BOTAN_CONFIG} --prefix`/lib ${BOTAN_LIBS}"
echo ${BOTAN_INCLUDES} | grep -- -I > /dev/null || \
BOTAN_INCLUDES="-I`${BOTAN_CONFIG} --prefix`/include ${BOTAN_INCLUDES}"
fi
# botan-config script (and the way we call pkg-config) returns -L and -l
# as one string, but we need them in separate values
BOTAN_LDFLAGS=
BOTAN_NEWLIBS=
for flag in ${BOTAN_LIBS}; do
BOTAN_LDFLAGS="${BOTAN_LDFLAGS} `echo $flag | sed -ne '/^\(\-L\)/p'`"
BOTAN_LIBS="${BOTAN_LIBS} `echo $flag | sed -ne '/^\(\-l\)/p'`"
done
# See python_rpath for some info on why we do this
if test $rpath_available = yes; then
BOTAN_RPATH=
for flag in ${BOTAN_LDFLAGS}; do
for flag in ${BOTAN_LIBS}; do
BOTAN_RPATH="${BOTAN_RPATH} `echo $flag | sed -ne 's/^\(\-L\)/-R/p'`"
done
AC_SUBST(BOTAN_RPATH)
......@@ -540,13 +552,13 @@ AC_SUBST(BOTAN_RPATH)
fi
AC_SUBST(BOTAN_LDFLAGS)
AC_SUBST(BOTAN_LIBS)
AC_SUBST(BOTAN_INCLUDES)
CPPFLAGS_SAVED=$CPPFLAGS
CPPFLAGS="$BOTAN_INCLUDES $CPPFLAGS"
LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$BOTAN_LDFLAGS $LDFLAGS"
LIBS_SAVED="$LIBS"
LIBS="$LIBS $BOTAN_LIBS"
AC_CHECK_HEADERS([botan/botan.h],,AC_MSG_ERROR([Missing required header files.]))
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([#include <botan/botan.h>
......@@ -561,7 +573,7 @@ AC_LINK_IFELSE(
AC_MSG_ERROR([Needs Botan library 1.8 or higher])]
)
CPPFLAGS=$CPPFLAGS_SAVED
LDFLAGS=$LDFLAGS_SAVED
LIBS=$LIBS_SAVED
# Check for log4cplus
log4cplus_path="yes"
......@@ -573,7 +585,7 @@ if test "${log4cplus_path}" = "no" ; then
AC_MSG_ERROR([Need log4cplus])
elif test "${log4cplus_path}" != "yes" ; then
LOG4CPLUS_INCLUDES="-I${log4cplus_path}/include"
LOG4CPLUS_LDFLAGS="-L${log4cplus_path}/lib"
LOG4CPLUS_LIBS="-L${log4cplus_path}/lib"
else
# If not specified, try some common paths.
log4cplusdirs="/usr/local /usr/pkg /opt /opt/local"
......@@ -581,21 +593,21 @@ else
do
if test -f $d/include/log4cplus/logger.h; then
LOG4CPLUS_INCLUDES="-I$d/include"
LOG4CPLUS_LDFLAGS="-L$d/lib"
LOG4CPLUS_LIBS="-L$d/lib"
break
fi
done
fi
LOG4CPLUS_LDFLAGS="$LOG4CPLUS_LDFLAGS -llog4cplus $MULTITHREADING_FLAG"
LOG4CPLUS_LIBS="$LOG4CPLUS_LIBS -llog4cplus $MULTITHREADING_FLAG"
AC_SUBST(LOG4CPLUS_LDFLAGS)
AC_SUBST(LOG4CPLUS_LIBS)
AC_SUBST(LOG4CPLUS_INCLUDES)
CPPFLAGS_SAVED=$CPPFLAGS
CPPFLAGS="$LOG4CPLUS_INCLUDES $CPPFLAGS"
LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$LOG4CPLUS_LDFLAGS $LDFLAGS"
LIBS_SAVED="$LIBS"
LIBS="$LOG4CPLUS_LIBS $LIBS"
AC_CHECK_HEADERS([log4cplus/logger.h],,AC_MSG_ERROR([Missing required header files.]))
AC_LINK_IFELSE(
......@@ -610,7 +622,7 @@ AC_LINK_IFELSE(
)
CPPFLAGS=$CPPFLAGS_SAVED
LDFLAGS=$LDFLAGS_SAVED
LIBS=$LIBS_SAVED
#
# Configure Boost header path
......@@ -703,6 +715,13 @@ else
AM_CONDITIONAL(NEED_LIBBOOST_THREAD, test "${use_boost_threads}" = "yes")
fi
# I can't get some of the #include <asio.hpp> right without this
# TODO: find the real cause of asio/boost wanting pthreads
# (this currently only occurs for src/lib/cc/session_unittests)
PTHREAD_LDFLAGS=
AC_CHECK_LIB(pthread, pthread_create,[ PTHREAD_LDFLAGS=-lpthread ], [])
AC_SUBST(PTHREAD_LDFLAGS)
AC_SUBST(MULTITHREADING_FLAG)
#
# Check availability of gtest, which will be used for unit tests.
......@@ -739,6 +758,48 @@ then
GTEST_LDFLAGS="-L$dir/lib"
GTEST_LDADD="-lgtest"
GTEST_FOUND="true"
# There is no gtest-config script on this
# system, which is supposed to inform us
# whether we need pthreads as well (a
# gtest compile-time option). So we still
# need to test that manually.
CPPFLAGS_SAVED="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $GTEST_INCLUDES"
LDFLAGS_SAVED="$LDFLAGS"
LDFLAGS="$LDFLAGS $GTEST_LDFLAGS"
LIBS_SAVED=$LIBS
LIBS="$LIBS $GTEST_LDADD"
AC_MSG_CHECKING([Checking whether gtest tests need pthreads])
# First try to compile without pthreads
AC_TRY_LINK([
#include <gtest/gtest.h>
],[
int i = 0;
char* c = NULL;
::testing::InitGoogleTest(&i, &c);
return (0);
],
[ AC_MSG_RESULT(no) ],
[
LIBS="$SAVED_LIBS $GTEST_LDADD $PTHREAD_LDFLAGS"
# Now try to compile with pthreads
AC_TRY_LINK([
#include <gtest/gtest.h>
],[
int i = 0;
char* c = NULL;
::testing::InitGoogleTest(&i, &c);
return (0);
],
[ AC_MSG_RESULT(yes)
GTEST_LDADD="$GTEST_LDADD $PTHREAD_LDFLAGS"
],
# Apparently we can't compile it at all
[ AC_MSG_ERROR(unable to compile with gtest) ])
])
CPPFLAGS=$CPPFLAGS_SAVED
LDFLAGS=$LDFLAGS_SAVED
LIBS=$LIBS_SAVED
break
fi
done
......@@ -765,15 +826,6 @@ if test "x$HAVE_PKG_CONFIG" = "xno" ; then
fi
PKG_CHECK_MODULES(SQLITE, sqlite3 >= 3.3.9, enable_features="$enable_features SQLite3")
# I can't get some of the #include <asio.hpp> right without this
# TODO: find the real cause of asio/boost wanting pthreads
# (this currently only occurs for src/lib/cc/session_unittests)
PTHREAD_LDFLAGS=
AC_CHECK_LIB(pthread, pthread_create,[ PTHREAD_LDFLAGS=-lpthread ], [])
AC_SUBST(PTHREAD_LDFLAGS)
AC_SUBST(MULTITHREADING_FLAG)
#
# ASIO: we extensively use it as the C++ event management module.
#
......@@ -868,6 +920,8 @@ AC_CONFIG_FILES([Makefile
src/bin/auth/Makefile
src/bin/auth/tests/Makefile
src/bin/auth/benchmarks/Makefile
src/bin/ddns/Makefile
src/bin/ddns/tests/Makefile
src/bin/dhcp6/Makefile
src/bin/dhcp6/tests/Makefile
src/bin/dhcp4/Makefile
......@@ -942,6 +996,7 @@ AC_CONFIG_FILES([Makefile
src/lib/datasrc/tests/Makefile
src/lib/datasrc/tests/testdata/Makefile
src/lib/xfr/Makefile
src/lib/xfr/tests/Makefile
src/lib/log/Makefile
src/lib/log/compiler/Makefile
src/lib/log/tests/Makefile
......@@ -963,6 +1018,8 @@ AC_CONFIG_FILES([Makefile
src/lib/util/tests/Makefile
src/lib/acl/Makefile
src/lib/acl/tests/Makefile
src/lib/statistics/Makefile
src/lib/statistics/tests/Makefile
tests/Makefile
tests/system/Makefile
tests/tools/Makefile
......@@ -977,6 +1034,7 @@ AC_OUTPUT([doc/version.ent
src/bin/cmdctl/run_b10-cmdctl.sh
src/bin/cmdctl/tests/cmdctl_test
src/bin/cmdctl/cmdctl.spec.pre
src/bin/ddns/ddns.py
src/bin/xfrin/tests/xfrin_test
src/bin/xfrin/xfrin.py
src/bin/xfrin/run_b10-xfrin.sh
......@@ -1023,6 +1081,7 @@ AC_OUTPUT([doc/version.ent
src/lib/python/bind10_config.py
src/lib/cc/session_config.h.pre
src/lib/cc/tests/session_unittests_config.h
src/lib/datasrc/datasrc_config.h.pre
src/lib/log/tests/console_test.sh
src/lib/log/tests/destination_test.sh
src/lib/log/tests/init_logger_test.sh
......@@ -1118,8 +1177,9 @@ dnl includes too
Boost: ${BOOST_INCLUDES}
Botan: ${BOTAN_INCLUDES}
${BOTAN_LDFLAGS}
${BOTAN_LIBS}
Log4cplus: ${LOG4CPLUS_INCLUDES}
${LOG4CPLUS_LDFLAGS}
${LOG4CPLUS_LIBS}
SQLite: $SQLITE_CFLAGS
$SQLITE_LIBS
......
This diff is collapsed.
......@@ -2,7 +2,7 @@
Administrator Reference for BIND 10
This is the reference guide for BIND 10 version 20110809.
This is the reference guide for BIND 10 version 20111021.
Copyright (c) 2010-2011 Internet Systems Consortium, Inc.
......@@ -12,7 +12,7 @@ Administrator Reference for BIND 10
Consortium (ISC). It includes DNS libraries and modular components for
controlling authoritative and recursive DNS servers.
This is the reference guide for BIND 10 version 20110809. The most
This is the reference guide for BIND 10 version 20111021. The most
up-to-date version of this document (in PDF, HTML, and plain text
formats), along with other documents for BIND 10, can be found at
http://bind10.isc.org/docs.
......@@ -55,6 +55,8 @@ Administrator Reference for BIND 10
Starting BIND 10
Configuration of started processes
4. Command channel
5. Configuration manager
......@@ -105,6 +107,10 @@ Administrator Reference for BIND 10
Logging Message Format
List of Tables
3.1.
Chapter 1. Introduction
Table of Contents
......@@ -124,7 +130,7 @@ Chapter 1. Introduction
Note
This guide covers the experimental prototype of BIND 10 version 20110809.
This guide covers the experimental prototype of BIND 10 version 20111021.
Note
......@@ -427,24 +433,28 @@ Chapter 3. Starting BIND10 with bind10
Starting BIND 10
Configuration of started processes
BIND 10 provides the bind10 command which starts up the required
processes. bind10 will also restart processes that exit unexpectedly. This
is the only command needed to start the BIND 10 system.
processes. bind10 will also restart some processes that exit unexpectedly.
This is the only command needed to start the BIND 10 system.
After starting the b10-msgq communications channel, bind10 connects to it,
runs the configuration manager, and reads its own configuration. Then it
starts the other modules.
The b10-msgq and b10-cfgmgr services make up the core. The b10-msgq daemon
provides the communication channel between every part of the system. The
b10-cfgmgr daemon is always needed by every module, if only to send
information about themselves somewhere, but more importantly to ask about
their own settings, and about other modules. The bind10 master process
will also start up b10-cmdctl for admins to communicate with the system,
b10-auth for authoritative DNS service or b10-resolver for recursive name
service, b10-stats for statistics collection, b10-xfrin for inbound DNS
zone transfers, b10-xfrout for outbound DNS zone transfers, and
b10-zonemgr for secondary service.
The b10-sockcreator, b10-msgq and b10-cfgmgr services make up the core.
The b10-msgq daemon provides the communication channel between every part
of the system. The b10-cfgmgr daemon is always needed by every module, if
only to send information about themselves somewhere, but more importantly
to ask about their own settings, and about other modules. The
b10-sockcreator will allocate sockets for the rest of the system.
In its default configuration, the bind10 master process will also start up
b10-cmdctl for admins to communicate with the system, b10-auth for
authoritative DNS service, b10-stats for statistics collection, b10-xfrin
for inbound DNS zone transfers, b10-xfrout for outbound DNS zone
transfers, and b10-zonemgr for secondary service.
Starting BIND 10
......@@ -457,6 +467,110 @@ Starting BIND 10
names for the Python-based daemons will be renamed to better identify them
instead of just "python". This is not needed on some operating systems.
Configuration of started processes
The processes to be started can be configured, with the exception of the
b10-sockcreator, b10-msgq and b10-cfgmgr.
The configuration is in the Boss/components section. Each element
represents one component, which is an abstraction of a process (currently
there's also one component which doesn't represent a process). If you
didn't want to transfer out at all (your server is a slave only), you
would just remove the corresponding component from the set, like this and
the process would be stopped immediately (and not started on the next
startup):
> config remove Boss/components b10-xfrout
> config commit
To add a process to the set, let's say the resolver (which not started by
default), you would do this:
> config add Boss/components b10-resolver
> config set Boss/components/b10-resolver/special resolver
> config set Boss/components/b10-resolver/kind needed
> config set Boss/components/b10-resolver/priority 10
> config commit
Now, what it means. We add an entry called b10-resolver. It is both a name
used to reference this component in the configuration and the name of the
process to start. Then we set some parameters on how to start it.
The special one is for components that need some kind of special care
during startup or shutdown. Unless specified, the component is started in
usual way. This is the list of components that need to be started in a
special way, with the value of special used for them:
Table 3.1.
+------------------------------------------------------------------------+
| Component | Special | Description |
|--------------+----------+----------------------------------------------|
| b10-auth | auth | Authoritative server |
|--------------+----------+----------------------------------------------|
| b10-resolver | resolver | The resolver |
|--------------+----------+----------------------------------------------|
| b10-cmdctl | cmdctl | The command control (remote control |
| | | interface) |
|--------------+----------+----------------------------------------------|
| setuid | setuid | Virtual component, see below |
+------------------------------------------------------------------------+
The kind specifies how a failure of the component should be handled. If it
is set to "dispensable" (the default unless you set something else), it
will get started again if it fails. If it is set to "needed" and it fails
at startup, the whole bind10 shuts down and exits with error exit code.
But if it fails some time later, it is just started again. If you set it
to "core", you indicate that the system is not usable without the
component and if such component fails, the system shuts down no matter
when the failure happened. This is the behaviour of the core components
(the ones you can't turn off), but you can declare any other components as
core as well if you wish (but you can turn these off, they just can't
fail).
The priority defines order in which the components should start. The ones
with higher number are started sooner than the ones with lower ones. If
you don't set it, 0 (zero) is used as the priority.
There are other parameters we didn't use in our example. One of them is
"address". It is the address used by the component on the b10-msgq message
bus. The special components already know their address, but the usual ones
don't. The address is by convention the thing after b10-, with the first
letter capital (eg. b10-stats would have "Stats" as its address).
The last one is process. It is the name of the process to be started. It
defaults to the name of the component if not set, but you can use this to
override it.
Note
This system allows you to start the same component multiple times (by
including it in the configuration with different names, but the same
process setting). However, the rest of the system doesn't expect such
situation, so it would probably not do what you want. Such support is yet
to be implemented.
Note
The configuration is quite powerful, but that includes a lot of space for
mistakes. You could turn off the b10-cmdctl, but then you couldn't change
it back the usual way, as it would require it to be running (you would
have to find and edit the configuration directly). Also, some modules
might have dependencies -- b10-stats-httpd need b10-stats, b10-xfrout
needs the b10-auth to be running, etc.
In short, you should think twice before disabling something here.
Now, to the mysterious setuid virtual component. If you use the -u option
to start the bind10 as root, but change the user later, we need to start
the b10-auth or b10-resolver as root (until the socket creator is
finished). So we need to specify the time when the switch from root do the
given user happens and that's what the setuid component is for. The switch
is done at the time the setuid component would be started, if it was a
process. The default configuration contains the setuid component with
priority 5, b10-auth has 10 to be started before the switch and everything
else is without priority, so it is started after the switch.
Chapter 4. Command channel
The BIND 10 components use the b10-msgq message routing daemon to
......@@ -739,15 +853,55 @@ Trigger an Incoming Zone Transfer Manually
Chapter 10. Outbound Zone Transfers
The b10-xfrout process is started by bind10. When the b10-auth
authoritative DNS server receives an AXFR request, b10-xfrout sends the