Commit 9a4f1e5f authored by Jeremy C. Reed's avatar Jeremy C. Reed
Browse files

Rename the resolver and change some terminology.

This is trac470.
No changelog entry -- this modifies previous changelog entries.
(Never was released with old name.)


git-svn-id: svn://bind10.isc.org/svn/bind10/trunk@4165 e5f2f494-b856-4b98-b285-d166d9295462
parents 8dfd1b02 06cfe323
......@@ -62,21 +62,21 @@
(Trac #202, svn r3967)
135. [func] each
Add b10-recurse. This is an example recursive server that
Add b10-resolver. This is an example recursive server that
currently does forwarding only and no caching.
(Trac #327, svn r3903)
134. [func] vorner
b10-recurse supports timeouts and retries in forwarder mode.
b10-resolver supports timeouts and retries in forwarder mode.
(Trac #401, svn r3660)
133. [func] vorner
New temporary logging function available in isc::log. It is used by
b10-recurse.
b10-resolver.
(Trac #393, r3602)
132. [func] vorner
The b10-recurse is configured through config manager.
The b10-resolver is configured through config manager.
It has "listen_on" and "forward_addresses" options.
(Trac #389, r3448)
......@@ -139,7 +139,7 @@ bind10-devel-20101201 released on December 01, 2010
122. [func] stephen
src/bin/bind10: Added configuration options to Boss to determine
whether to start the authoritative server, recursive server (or
both). A dummy recursor has been provided for test purposes.
both). A dummy program has been provided for test purposes.
(Trac #412, svn r3676)
121. [func] jinmei
......
......@@ -15,7 +15,7 @@ five year plan are described here:
This release includes the bind10 master process, b10-msgq message
bus, b10-auth authoritative DNS server (with SQLite3 backend),
b10-recurse forwarding DNS server, b10-cmdctl remote control daemon,
b10-resolver forwarding DNS server, b10-cmdctl remote control daemon,
b10-cfgmgr configuration manager, b10-xfrin AXFR inbound service,
b10-xfrout outgoing AXFR service, b10-zonemgr secondary manager,
b10-stats statistics collection and reporting daemon, and a new
......
......@@ -577,8 +577,8 @@ AC_CONFIG_FILES([Makefile
src/bin/auth/Makefile
src/bin/auth/tests/Makefile
src/bin/auth/benchmarks/Makefile
src/bin/recurse/Makefile
src/bin/recurse/tests/Makefile
src/bin/resolver/Makefile
src/bin/resolver/tests/Makefile
src/bin/xfrin/Makefile
src/bin/xfrin/tests/Makefile
src/bin/xfrout/Makefile
......@@ -652,8 +652,8 @@ AC_OUTPUT([src/bin/cfgmgr/b10-cfgmgr.py
src/bin/xfrout/xfrout.spec.pre
src/bin/xfrout/tests/xfrout_test
src/bin/xfrout/run_b10-xfrout.sh
src/bin/recurse/recurse.spec.pre
src/bin/recurse/spec_config.h.pre
src/bin/resolver/resolver.spec.pre
src/bin/resolver/spec_config.h.pre
src/bin/zonemgr/zonemgr.py
src/bin/zonemgr/zonemgr.spec.pre
src/bin/zonemgr/tests/zonemgr_test
......@@ -696,7 +696,7 @@ AC_OUTPUT([src/bin/cfgmgr/b10-cfgmgr.py
chmod +x src/bin/cmdctl/run_b10-cmdctl.sh
chmod +x src/bin/xfrin/run_b10-xfrin.sh
chmod +x src/bin/xfrout/run_b10-xfrout.sh
chmod +x src/bin/recurse/run_b10-recurse.sh
chmod +x src/bin/resolver/run_b10-resolver.sh
chmod +x src/bin/zonemgr/run_b10-zonemgr.sh
chmod +x src/bin/stats/tests/stats_test
chmod +x src/bin/stats/run_b10-stats.sh
......
SUBDIRS = bind10 bindctl cfgmgr loadzone msgq host cmdctl auth xfrin xfrout \
usermgr zonemgr stats tests recurse
usermgr zonemgr stats tests resolver
check-recursive: all-recursive
......@@ -185,7 +185,7 @@ public:
/// control commands and configuration updates.
void setConfigSession(isc::config::ModuleCCSession* config_session);
/// \brief Assign an ASIO IO Service queue to this Recursor object
/// \brief Assign an ASIO IO Service queue to this Resolver object
void setIOService(asiolink::IOService& ios) { io_service_ = &ios; }
/// \brief Return this object's ASIO IO Service queue
......
......@@ -208,13 +208,13 @@ class BoB:
self.dns_port = dns_port
self.forward = forward
if forward:
self.recursive = True
self.resolver = True
else:
self.recursive = False
self.resolver = False
self.cc_session = None
self.ccs = None
self.cfg_start_auth = True
self.cfg_start_recurse = False
self.cfg_start_resolver = False
self.curproc = None
self.dead_processes = {}
self.msgq_socket_file = msgq_socket_file
......@@ -278,13 +278,13 @@ class BoB:
config_data = self.ccs.get_full_config()
self.cfg_start_auth = config_data.get("start_auth")
self.cfg_start_recurse = config_data.get("start_recurse")
self.cfg_start_resolver = config_data.get("start_resolver")
if self.verbose:
sys.stdout.write("[bind10] - start_auth: %s\n" %
str(self.cfg_start_auth))
sys.stdout.write("[bind10] - start_recurse: %s\n" %
str(self.cfg_start_recurse))
sys.stdout.write("[bind10] - start_resolver: %s\n" %
str(self.cfg_start_resolver))
def log_starting(self, process, port = None, address = None):
"""
......@@ -423,13 +423,13 @@ class BoB:
Start the Authoritative server
"""
# XXX: this must be read from the configuration manager in the future
if self.recursive:
dns_prog = 'b10-recurse'
if self.resolver:
dns_prog = 'b10-resolver'
else:
dns_prog = 'b10-auth'
dnsargs = [dns_prog]
if not self.recursive:
# The recursive uses configuration manager for these
if not self.resolver:
# The resolver uses configuration manager for these
dnsargs += ['-p', str(self.dns_port)]
if self.address:
dnsargs += ['-a', str(self.address)]
......@@ -444,22 +444,22 @@ class BoB:
self.start_process("b10-auth", dnsargs, c_channel_env,
self.dns_port, self.address)
def start_recurse(self, c_channel_env):
def start_resolver(self, c_channel_env):
"""
Start the Resolver. At present, all these arguments and switches
are pure speculation. As with the auth daemon, they should be
read from the configuration database.
"""
self.curproc = "b10-recurse"
self.curproc = "b10-resolver"
# XXX: this must be read from the configuration manager in the future
resargs = ['b10-recurse']
resargs = ['b10-resolver']
if self.uid:
resargs += ['-u', str(self.uid)]
if self.verbose:
resargs += ['-v']
# ... and start
self.start_process("b10-recurse", resargs, c_channel_env)
self.start_process("b10-resolver", resargs, c_channel_env)
def start_xfrout(self, c_channel_env):
self.start_simple("b10-xfrout", c_channel_env)
......@@ -496,8 +496,8 @@ class BoB:
self.start_auth(c_channel_env)
# ... and resolver (if selected):
if self.cfg_start_recurse:
self.start_recurse(c_channel_env)
if self.cfg_start_resolver:
self.start_resolver(c_channel_env)
# Everything after the main components can run as non-root.
# TODO: this is only temporary - once the privileged socket creator is
......@@ -557,7 +557,7 @@ class BoB:
self.cc_session.group_sendmsg(cmd, 'Cmdctl', 'Cmdctl')
self.cc_session.group_sendmsg(cmd, "ConfigManager", "ConfigManager")
self.cc_session.group_sendmsg(cmd, "Auth", "Auth")
self.cc_session.group_sendmsg(cmd, "Recurse", "Recurse")
self.cc_session.group_sendmsg(cmd, "Resolver", "Resolver")
self.cc_session.group_sendmsg(cmd, "Xfrout", "Xfrout")
self.cc_session.group_sendmsg(cmd, "Xfrin", "Xfrin")
self.cc_session.group_sendmsg(cmd, "Zonemgr", "Zonemgr")
......
......@@ -10,7 +10,7 @@
"item_default": true
},
{
"item_name": "start_recurse",
"item_name": "start_resolver",
"item_type": "boolean",
"item_optional": false,
"item_default": false
......
......@@ -20,7 +20,7 @@ export PYTHON_EXEC
BIND10_PATH=@abs_top_builddir@/src/bin/bind10
PATH=@abs_top_builddir@/src/bin/msgq:@abs_top_builddir@/src/bin/auth:@abs_top_builddir@/src/bin/recurse:@abs_top_builddir@/src/bin/cfgmgr:@abs_top_builddir@/src/bin/cmdctl:@abs_top_builddir@/src/bin/stats:@abs_top_builddir@/src/bin/xfrin:@abs_top_builddir@/src/bin/xfrout:@abs_top_builddir@/src/bin/zonemgr:$PATH
PATH=@abs_top_builddir@/src/bin/msgq:@abs_top_builddir@/src/bin/auth:@abs_top_builddir@/src/bin/resolver:@abs_top_builddir@/src/bin/cfgmgr:@abs_top_builddir@/src/bin/cmdctl:@abs_top_builddir@/src/bin/stats:@abs_top_builddir@/src/bin/xfrin:@abs_top_builddir@/src/bin/xfrout:@abs_top_builddir@/src/bin/zonemgr:$PATH
export PATH
PYTHONPATH=@abs_top_builddir@/src/lib/python:@abs_top_builddir@/src/lib/dns/python/.libs:@abs_top_builddir@/src/lib/xfr/.libs:@abs_top_builddir@/src/lib/log/.libs
......
......@@ -89,7 +89,7 @@ class TestBoB(unittest.TestCase):
self.assertEqual(bob.username, None)
self.assertEqual(bob.nocache, False)
self.assertEqual(bob.cfg_start_auth, True)
self.assertEqual(bob.cfg_start_recurse, False)
self.assertEqual(bob.cfg_start_resolver, False)
def test_init_alternate_socket(self):
bob = BoB("alt_socket_file")
......@@ -106,7 +106,7 @@ class TestBoB(unittest.TestCase):
self.assertEqual(bob.username, None)
self.assertEqual(bob.nocache, False)
self.assertEqual(bob.cfg_start_auth, True)
self.assertEqual(bob.cfg_start_recurse, False)
self.assertEqual(bob.cfg_start_resolver, False)
def test_init_alternate_dns_port(self):
bob = BoB(None, 9999)
......@@ -123,7 +123,7 @@ class TestBoB(unittest.TestCase):
self.assertEqual(bob.username, None)
self.assertEqual(bob.nocache, False)
self.assertEqual(bob.cfg_start_auth, True)
self.assertEqual(bob.cfg_start_recurse, False)
self.assertEqual(bob.cfg_start_resolver, False)
def test_init_alternate_address(self):
bob = BoB(None, 1234, IPAddr('127.127.127.127'))
......@@ -140,7 +140,7 @@ class TestBoB(unittest.TestCase):
self.assertEqual(bob.username, None)
self.assertEqual(bob.nocache, False)
self.assertEqual(bob.cfg_start_auth, True)
self.assertEqual(bob.cfg_start_recurse, False)
self.assertEqual(bob.cfg_start_resolver, False)
# Class for testing the Bob.start_all_processes() method call.
#
......@@ -157,7 +157,7 @@ class StartAllProcessesBob(BoB):
self.cfgmgr = False
self.ccsession = False
self.auth = False
self.recurse = False
self.resolver = False
self.xfrout = False
self.xfrin = False
self.zonemgr = False
......@@ -180,8 +180,8 @@ class StartAllProcessesBob(BoB):
def start_auth(self, c_channel_env):
self.auth = True
def start_recurse(self, c_channel_env):
self.recurse = True
def start_resolver(self, c_channel_env):
self.resolver = True
def start_xfrout(self, c_channel_env):
self.xfrout = True
......@@ -206,14 +206,14 @@ class TestStartAllProcessesBob(unittest.TestCase):
self.assertEqual(bob.cfgmgr, False)
self.assertEqual(bob.ccsession, False)
self.assertEqual(bob.auth, False)
self.assertEqual(bob.recurse, False)
self.assertEqual(bob.resolver, False)
self.assertEqual(bob.xfrout, False)
self.assertEqual(bob.xfrin, False)
self.assertEqual(bob.zonemgr, False)
self.assertEqual(bob.stats, False)
self.assertEqual(bob.cmdctl, False)
# Checks the processes started when starting neither auth nor recurse
# Checks the processes started when starting neither auth nor resolver
# is specified.
def test_start_none(self):
# Created Bob and ensure initialization correct
......@@ -223,7 +223,7 @@ class TestStartAllProcessesBob(unittest.TestCase):
# Start processes and check what was started
c_channel_env = {}
bob.cfg_start_auth = False
bob.cfg_start_recurse = False
bob.cfg_start_resolver = False
bob.start_all_processes(c_channel_env)
......@@ -231,7 +231,7 @@ class TestStartAllProcessesBob(unittest.TestCase):
self.assertEqual(bob.cfgmgr, True)
self.assertEqual(bob.ccsession, True)
self.assertEqual(bob.auth, False)
self.assertEqual(bob.recurse, False)
self.assertEqual(bob.resolver, False)
self.assertEqual(bob.xfrout, False)
self.assertEqual(bob.xfrin, False)
self.assertEqual(bob.zonemgr, False)
......@@ -247,7 +247,7 @@ class TestStartAllProcessesBob(unittest.TestCase):
# Start processes and check what was started
c_channel_env = {}
bob.cfg_start_auth = True
bob.cfg_start_recurse = False
bob.cfg_start_resolver = False
bob.start_all_processes(c_channel_env)
......@@ -255,15 +255,15 @@ class TestStartAllProcessesBob(unittest.TestCase):
self.assertEqual(bob.cfgmgr, True)
self.assertEqual(bob.ccsession, True)
self.assertEqual(bob.auth, True)
self.assertEqual(bob.recurse, False)
self.assertEqual(bob.resolver, False)
self.assertEqual(bob.xfrout, True)
self.assertEqual(bob.xfrin, True)
self.assertEqual(bob.zonemgr, True)
self.assertEqual(bob.stats, True)
self.assertEqual(bob.cmdctl, True)
# Checks the processes started when starting only the recurse process
def test_start_recurse(self):
# Checks the processes started when starting only the resolver process
def test_start_resolver(self):
# Created Bob and ensure initialization correct
bob = StartAllProcessesBob()
self.check_preconditions(bob)
......@@ -271,7 +271,7 @@ class TestStartAllProcessesBob(unittest.TestCase):
# Start processes and check what was started
c_channel_env = {}
bob.cfg_start_auth = False
bob.cfg_start_recurse = True
bob.cfg_start_resolver = True
bob.start_all_processes(c_channel_env)
......@@ -279,14 +279,14 @@ class TestStartAllProcessesBob(unittest.TestCase):
self.assertEqual(bob.cfgmgr, True)
self.assertEqual(bob.ccsession, True)
self.assertEqual(bob.auth, False)
self.assertEqual(bob.recurse, True)
self.assertEqual(bob.resolver, True)
self.assertEqual(bob.xfrout, False)
self.assertEqual(bob.xfrin, False)
self.assertEqual(bob.zonemgr, False)
self.assertEqual(bob.stats, True)
self.assertEqual(bob.cmdctl, True)
# Checks the processes started when starting both auth and recurse process
# Checks the processes started when starting both auth and resolver process
def test_start_both(self):
# Created Bob and ensure initialization correct
bob = StartAllProcessesBob()
......@@ -295,7 +295,7 @@ class TestStartAllProcessesBob(unittest.TestCase):
# Start processes and check what was started
c_channel_env = {}
bob.cfg_start_auth = True
bob.cfg_start_recurse = True
bob.cfg_start_resolver = True
bob.start_all_processes(c_channel_env)
......@@ -303,7 +303,7 @@ class TestStartAllProcessesBob(unittest.TestCase):
self.assertEqual(bob.cfgmgr, True)
self.assertEqual(bob.ccsession, True)
self.assertEqual(bob.auth, True)
self.assertEqual(bob.recurse, True)
self.assertEqual(bob.resolver, True)
self.assertEqual(bob.xfrout, True)
self.assertEqual(bob.xfrin, True)
self.assertEqual(bob.zonemgr, True)
......
SUBDIRS = . tests
AM_CPPFLAGS = -I$(top_srcdir)/src/lib -I$(top_builddir)/src/lib
AM_CPPFLAGS += -I$(top_srcdir)/src/bin -I$(top_builddir)/src/bin
AM_CPPFLAGS += -I$(top_srcdir)/src/lib/dns -I$(top_builddir)/src/lib/dns
AM_CPPFLAGS += -I$(top_srcdir)/src/lib/cc -I$(top_builddir)/src/lib/cc
AM_CPPFLAGS += -I$(top_srcdir)/src/lib/asiolink
AM_CPPFLAGS += -I$(top_builddir)/src/lib/asiolink
AM_CPPFLAGS += $(BOOST_INCLUDES)
AM_CXXFLAGS = $(B10_CXXFLAGS)
if USE_STATIC_LINK
AM_LDFLAGS = -static
endif
pkglibexecdir = $(libexecdir)/@PACKAGE@
CLEANFILES = *.gcno *.gcda resolver.spec spec_config.h
man_MANS = b10-resolver.8
EXTRA_DIST = $(man_MANS) b10-resolver.xml
if ENABLE_MAN
b10-resolver.8: b10-resolver.xml
xsltproc --novalid --xinclude --nonet -o $@ http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $(srcdir)/b10-resolver.xml
endif
resolver.spec: resolver.spec.pre
$(SED) -e "s|@@LOCALSTATEDIR@@|$(localstatedir)|" resolver.spec.pre >$@
spec_config.h: spec_config.h.pre
$(SED) -e "s|@@LOCALSTATEDIR@@|$(localstatedir)|" spec_config.h.pre >$@
BUILT_SOURCES = spec_config.h
pkglibexec_PROGRAMS = b10-resolver
b10_resolver_SOURCES = resolver.cc resolver.h
b10_resolver_SOURCES += $(top_builddir)/src/bin/auth/change_user.h
b10_resolver_SOURCES += $(top_builddir)/src/bin/auth/common.h
b10_resolver_SOURCES += main.cc
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/exceptions/libexceptions.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/bin/auth/change_user.o
b10_resolver_LDFLAGS = -pthread
# TODO: config.h.in is wrong because doesn't honor pkgdatadir
# and can't use @datadir@ because doesn't expand default ${prefix}
b10_resolverdir = $(DESTDIR)$(pkgdatadir)
b10_resolver_DATA = resolver.spec
'\" t
.\" Title: b10-resolver
.\" Author: [FIXME: author] [see http://docbook.sf.net/el/author]
.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
.\" Date: January 3, 2011
.\" Manual: BIND10
.\" Source: BIND10
.\" Language: English
.\"
.TH "B10\-RESOLVER" "8" "January 3, 2011" "BIND10" "BIND10"
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
b10-resolver \- Recursive DNS server
.SH "SYNOPSIS"
.HP \w'\fBb10\-resolver\fR\ 'u
\fBb10\-resolver\fR [\fB\-u\ \fR\fB\fIusername\fR\fR] [\fB\-v\fR]
.SH "DESCRIPTION"
.PP
The
\fBb10\-resolver\fR
daemon provides the BIND 10 recursive DNS server\&. Normally it is started by the
\fBbind10\fR(8)
boss process\&.
.PP
This daemon communicates with other BIND 10 components over a
\fBb10-msgq\fR(8)
C\-Channel connection\&. If this connection is not established,
\fBb10\-resolver\fR
will exit\&.
.PP
It also receives its configurations from
\fBb10-cfgmgr\fR(8)\&. Currently no configuration commands are defined\&.
.if n \{\
.sp
.\}
.RS 4
.it 1 an-trap
.nr an-no-space-flag 1
.nr an-break-flag 1
.br
.ps +1
\fBNote\fR
.ps -1
.br
.PP
This prototype version only supports forwarding\&. Future versions will introduce full recursion, cache, lookup of local authoritative data (as in
\fBb10\-auth\fR), and DNSSEC validation\&.
.sp .5v
.RE
.SH "OPTIONS"
.PP
The arguments are as follows:
.PP
\fB\-u \fR\fB\fIusername\fR\fR
.RS 4
The user name of the
\fBb10\-resolver\fR
daemon\&. If specified, the daemon changes the process owner to the specified user\&. The
\fIusername\fR
must be either a valid numeric user ID or a valid user name\&. By default the daemon runs as the user who invokes it\&.
.RE
.PP
\fB\-v\fR
.RS 4
Enabled verbose mode\&. This enables diagnostic messages to STDERR\&.
.RE
.SH "FILES"
.PP
None\&.
.SH "SEE ALSO"
.PP
\fBb10-cfgmgr\fR(8),
\fBb10-cmdctl\fR(8),
\fBb10-msgq\fR(8),
\fBbind10\fR(8),
BIND 10 Guide\&.
.SH "HISTORY"
.PP
The
\fBb10\-resolver\fR
daemon was first coded in September 2010\&.
.SH "COPYRIGHT"
.br
Copyright \(co 2010 Internet Systems Consortium, Inc. ("ISC")
.br
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
[<!ENTITY mdash "&#8212;">]>
<!--
- Copyright (C) 2010 Internet Systems Consortium, Inc. ("ISC")
-
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted, provided that the above
- copyright notice and this permission notice appear in all copies.
-
- THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
- OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
-->
<!-- $Id$ -->
<refentry>
<refentryinfo>
<date>January 3, 2011</date>
</refentryinfo>
<refmeta>
<refentrytitle>b10-resolver</refentrytitle>
<manvolnum>8</manvolnum>
<refmiscinfo>BIND10</refmiscinfo>
</refmeta>
<refnamediv>
<refname>b10-resolver</refname>
<refpurpose>Recursive DNS server</refpurpose>
</refnamediv>
<docinfo>
<copyright>
<year>2010</year>
<holder>Internet Systems Consortium, Inc. ("ISC")</holder>
</copyright>
</docinfo>
<refsynopsisdiv>
<cmdsynopsis>
<command>b10-resolver</command>
<arg><option>-u <replaceable>username</replaceable></option></arg>
<arg><option>-v</option></arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>DESCRIPTION</title>
<para>The <command>b10-resolver</command> daemon provides the BIND 10
recursive DNS server. Normally it is started by the
<citerefentry><refentrytitle>bind10</refentrytitle><manvolnum>8</manvolnum></citerefentry>
boss process.
</para>
<para>
This daemon communicates with other BIND 10 components over a
<citerefentry><refentrytitle>b10-msgq</refentrytitle><manvolnum>8</manvolnum></citerefentry>
C-Channel connection. If this connection is not established,
<command>b10-resolver</command> will exit.
</para>
<para>
It also receives its configurations from
<citerefentry><refentrytitle>b10-cfgmgr</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
Currently no configuration commands are defined.
</para>
<note><para>
This prototype version only supports forwarding. Future versions
will introduce full recursion, cache, lookup of local authoritative
data (as in <command>b10-auth</command>), and DNSSEC validation.
</para></note>
</refsect1>
<refsect1>
<title>OPTIONS</title>
<para>The arguments are as follows:</para>
<variablelist>
<varlistentry>
<term><option>-u <replaceable>username</replaceable></option></term>
<listitem>
<para>
The user name of the <command>b10-resolver</command> daemon.
If specified, the daemon changes the process owner to the
specified user.
The <replaceable>username</replaceable> must be either a
valid numeric user ID or a valid user name.
By default the daemon runs as the user who invokes it.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><option>-v</option></term>
<listitem><para>
Enabled verbose mode. This enables diagnostic messages to
STDERR.
</para></listitem>
</varlistentry>