mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-01 23:25:38 +00:00
[master] fixed libdns doc
4791. [doc] Fixed outdated documentation about export libraries. [RT #46341]
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -1,3 +1,6 @@
|
|||||||
|
4791. [doc] Fixed outdated documentation about export libraries.
|
||||||
|
[RT #46341]
|
||||||
|
|
||||||
4790. [bug] nsupdate could trigger a require when sending a
|
4790. [bug] nsupdate could trigger a require when sending a
|
||||||
update to the second address of the server.
|
update to the second address of the server.
|
||||||
[RT #45731]
|
[RT #45731]
|
||||||
|
@@ -7,101 +7,89 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<!-- Converted by db4-upgrade version 1.0 -->
|
<!-- Converted by db4-upgrade version 1.0 -->
|
||||||
<section xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="bind9.library"><info><title>BIND 9 DNS Library Support</title></info>
|
<section xmlns:db="http://docbook.org/ns/docbook" version="5.0" xml:id="bind9.library">
|
||||||
|
<info>
|
||||||
<para>This version of BIND 9 "exports" its internal libraries so
|
<title>BIND 9 DNS Library Support</title>
|
||||||
|
</info>
|
||||||
|
<para>
|
||||||
|
This version of BIND 9 "exports" its internal libraries so
|
||||||
that they can be used by third-party applications more easily (we
|
that they can be used by third-party applications more easily (we
|
||||||
call them "export" libraries in this document). In addition to
|
call them "export" libraries in this document). Certain library
|
||||||
all major DNS-related APIs BIND 9 is currently using, the export
|
functions are altered from specific BIND-only behavior to more generic
|
||||||
libraries provide the following features:</para>
|
behavior when used by other applications; to enable this generic behavior,
|
||||||
<itemizedlist>
|
the calling program initializes the libraries by calling
|
||||||
<listitem>
|
<command>isc_lib_register()</command>.
|
||||||
<para>The newly created "DNS client" module. This is a higher
|
|
||||||
level API that provides an interface to name resolution,
|
|
||||||
single DNS transaction with a particular server, and dynamic
|
|
||||||
update. Regarding name resolution, it supports advanced
|
|
||||||
features such as DNSSEC validation and caching. This module
|
|
||||||
supports both synchronous and asynchronous mode.</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>The new "IRS" (Information Retrieval System) library.
|
|
||||||
It provides an interface to parse the traditional resolv.conf
|
|
||||||
file and more advanced, DNS-specific configuration file for
|
|
||||||
the rest of this package (see the description for the
|
|
||||||
dns.conf file below).</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>As part of the IRS library, newly implemented standard
|
|
||||||
address-name mapping functions, getaddrinfo() and
|
|
||||||
getnameinfo(), are provided. They use the DNSSEC-aware
|
|
||||||
validating resolver backend, and could use other advanced
|
|
||||||
features of the BIND 9 libraries such as caching. The
|
|
||||||
getaddrinfo() function resolves both A and AAAA RRs
|
|
||||||
concurrently (when the address family is unspecified).</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>An experimental framework to support other event
|
|
||||||
libraries than BIND 9's internal event task system.</para>
|
|
||||||
</listitem>
|
|
||||||
</itemizedlist>
|
|
||||||
<section><info><title>Prerequisite</title></info>
|
|
||||||
|
|
||||||
<para>GNU make is required to build the export libraries (other
|
|
||||||
part of BIND 9 can still be built with other types of make). In
|
|
||||||
the reminder of this document, "make" means GNU make. Note that
|
|
||||||
in some platforms you may need to invoke a different command name
|
|
||||||
than "make" (e.g. "gmake") to indicate it's GNU make.</para>
|
|
||||||
</section>
|
|
||||||
<section><info><title>Compilation</title></info>
|
|
||||||
|
|
||||||
<screen>
|
|
||||||
$ <userinput>./configure --enable-exportlib <replaceable>[other flags]</replaceable></userinput>
|
|
||||||
$ <userinput>make</userinput>
|
|
||||||
</screen>
|
|
||||||
<para>
|
|
||||||
This will create (in addition to usual BIND 9 programs) and a
|
|
||||||
separate set of libraries under the lib/export directory. For
|
|
||||||
example, <filename>lib/export/dns/libdns.a</filename> is the archive file of the
|
|
||||||
export version of the BIND 9 DNS library. Sample application
|
|
||||||
programs using the libraries will also be built under the
|
|
||||||
lib/export/samples directory (see below).</para>
|
|
||||||
</section>
|
|
||||||
<section><info><title>Installation</title></info>
|
|
||||||
|
|
||||||
<screen>
|
|
||||||
$ <userinput>cd lib/export</userinput>
|
|
||||||
$ <userinput>make install</userinput>
|
|
||||||
</screen>
|
|
||||||
<para>
|
|
||||||
This will install library object files under the directory
|
|
||||||
specified by the --with-export-libdir configure option (default:
|
|
||||||
EPREFIX/lib/bind9), and header files under the directory
|
|
||||||
specified by the --with-export-includedir configure option
|
|
||||||
(default: PREFIX/include/bind9).
|
|
||||||
Root privilege is normally required.
|
|
||||||
"<command>make install</command>" at the top directory will do the
|
|
||||||
same.
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
To see how to build your own
|
In addition to DNS-related APIs that are used within BIND 9, the
|
||||||
application after the installation, see
|
libraries provide the following features:
|
||||||
<filename>lib/export/samples/Makefile-postinstall.in</filename>.</para>
|
</para>
|
||||||
</section>
|
|
||||||
<section><info><title>Known Defects/Restrictions</title></info>
|
|
||||||
|
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem>
|
<listitem>
|
||||||
<!-- TODO: what about AIX? -->
|
<para>
|
||||||
<para>Currently, win32 is not supported for the export
|
The "DNS client" module. This is a higher level API that
|
||||||
library. (Normal BIND 9 application can be built as
|
provides an interface to name resolution, single DNS transaction
|
||||||
before).</para>
|
with a particular server, and dynamic update. Regarding name
|
||||||
|
resolution, it supports advanced features such as DNSSEC validation
|
||||||
|
and caching. This module supports both synchronous and asynchronous
|
||||||
|
mode.
|
||||||
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>The "fixed" RRset order is not (currently) supported in
|
<para>
|
||||||
the export library. If you want to use "fixed" RRset order
|
The "IRS" (Information Retrieval System) library. It provides an
|
||||||
for, e.g. <command>named</command> while still building the
|
interface to parse the traditional <filename>resolv.conf</filename>
|
||||||
export library even without the fixed order support, build
|
file and more advanced, DNS-specific configuration file for the
|
||||||
them separately:
|
rest of this package (see the description for the
|
||||||
|
<filename>dns.conf</filename> file below).
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
As part of the IRS library, the standard address-name
|
||||||
|
mapping functions, <command>getaddrinfo()</command> and
|
||||||
|
<command>getnameinfo()</command>, are provided. They use the
|
||||||
|
DNSSEC-aware validating resolver backend, and could use other
|
||||||
|
advanced features of the BIND 9 libraries such as caching. The
|
||||||
|
<command>getaddrinfo()</command> function resolves both A
|
||||||
|
and AAAA RRs concurrently when the address family is
|
||||||
|
unspecified.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
An experimental framework to support other event
|
||||||
|
libraries than BIND 9's internal event task system.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
<section>
|
||||||
|
<info>
|
||||||
|
<title>Installation</title>
|
||||||
|
</info>
|
||||||
|
<screen>
|
||||||
|
$ <userinput>make install</userinput>
|
||||||
|
</screen>
|
||||||
|
<para>
|
||||||
|
Normal installation of BIND will also install library object
|
||||||
|
and header files. Root privilege is normally required.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
To see how to build your own application after the installation, see
|
||||||
|
<filename>lib/samples/Makefile-postinstall.in</filename>.
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<info>
|
||||||
|
<title>Known Defects/Restrictions</title>
|
||||||
|
</info>
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The "fixed" RRset order is not (currently) supported in the export
|
||||||
|
library. If you want to use "fixed" RRset order for, e.g.
|
||||||
|
<command>named</command> while still building the export library
|
||||||
|
even without the fixed order support, build them separately:
|
||||||
<screen>
|
<screen>
|
||||||
$ <userinput>./configure --enable-fixed-rrset <replaceable>[other flags, but not --enable-exportlib]</replaceable></userinput>
|
$ <userinput>./configure --enable-fixed-rrset <replaceable>[other flags, but not --enable-exportlib]</replaceable></userinput>
|
||||||
$ <userinput>make</userinput>
|
$ <userinput>make</userinput>
|
||||||
@@ -112,57 +100,60 @@ $ <userinput>make</userinput>
|
|||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>The client module and the IRS library currently do not
|
<para>
|
||||||
support DNSSEC validation using DLV (the underlying modules
|
RFC 5011 is not supported in the validating stub resolver of the
|
||||||
can handle it, but there is no tunable interface to enable
|
export library. In fact, it is not clear whether it should: trust
|
||||||
the feature).</para>
|
anchors would be a system-wide configuration which would be managed
|
||||||
|
by an administrator, while the stub resolver will be used by
|
||||||
|
ordinary applications run by a normal user.
|
||||||
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>RFC 5011 is not supported in the validating stub
|
<para>
|
||||||
resolver of the export library. In fact, it is not clear
|
Not all common <filename>/etc/resolv.conf</filename> options are
|
||||||
whether it should: trust anchors would be a system-wide
|
supported in the IRS library. The only available options in this
|
||||||
configuration which would be managed by an administrator,
|
version are <command>debug</command> and <command>ndots</command>.
|
||||||
while the stub resolver will be used by ordinary applications
|
</para>
|
||||||
run by a normal user.</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
|
||||||
<para>Not all common <filename>/etc/resolv.conf</filename>
|
|
||||||
options are supported
|
|
||||||
in the IRS library. The only available options in this
|
|
||||||
version are "debug" and "ndots".</para>
|
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</section>
|
</section>
|
||||||
<section><info><title>The dns.conf File</title></info>
|
<section>
|
||||||
|
<info>
|
||||||
<para>The IRS library supports an "advanced" configuration file
|
<title>The dns.conf File</title>
|
||||||
related to the DNS library for configuration parameters that
|
</info>
|
||||||
would be beyond the capability of the
|
|
||||||
<filename>resolv.conf</filename> file.
|
|
||||||
Specifically, it is intended to provide DNSSEC related
|
|
||||||
configuration parameters. By default the path to this
|
|
||||||
configuration file is <filename>/etc/dns.conf</filename>.
|
|
||||||
This module is very
|
|
||||||
experimental and the configuration syntax or library interfaces
|
|
||||||
may change in future versions. Currently, only the
|
|
||||||
<command>trusted-keys</command>
|
|
||||||
statement is supported, whose syntax is the same as the same name
|
|
||||||
of statement for <filename>named.conf</filename>. (See
|
|
||||||
<xref linkend="trusted-keys"/> for details.)</para>
|
|
||||||
</section>
|
|
||||||
<section><info><title>Sample Applications</title></info>
|
|
||||||
|
|
||||||
<para>Some sample application programs using this API are
|
|
||||||
provided for reference. The following is a brief description of
|
|
||||||
these applications.
|
|
||||||
</para>
|
|
||||||
<section><info><title>sample: a simple stub resolver utility</title></info>
|
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
It sends a query of a given name (of a given optional RR type) to a
|
The IRS library supports an "advanced" configuration file related to
|
||||||
specified recursive server, and prints the result as a list of
|
the DNS library for configuration parameters that would be beyond the
|
||||||
RRs. It can also act as a validating stub resolver if a trust
|
capability of the <filename>resolv.conf</filename> file.
|
||||||
anchor is given via a set of command line options.</para>
|
Specifically, it is intended to provide DNSSEC related configuration
|
||||||
|
parameters. By default the path to this configuration file is
|
||||||
|
<filename>/etc/dns.conf</filename>. This module is very experimental
|
||||||
|
and the configuration syntax or library interfaces may change in
|
||||||
|
future versions. Currently, only the <command>trusted-keys</command>
|
||||||
|
statement is supported, whose syntax is the same as the same
|
||||||
|
statement in <filename>named.conf</filename>. (See
|
||||||
|
<xref linkend="trusted-keys"/> for details.)
|
||||||
|
</para>
|
||||||
|
</section>
|
||||||
|
<section>
|
||||||
|
<info>
|
||||||
|
<title>Sample Applications</title>
|
||||||
|
</info>
|
||||||
|
<para>
|
||||||
|
Some sample application programs using this API are provided for
|
||||||
|
reference. The following is a brief description of these
|
||||||
|
applications.
|
||||||
|
</para>
|
||||||
|
<section>
|
||||||
|
<info>
|
||||||
|
<title>sample: a simple stub resolver utility</title>
|
||||||
|
</info>
|
||||||
|
<para>
|
||||||
|
Sends a query of a given name (of a given optional RR type) to a
|
||||||
|
specified recursive server and prints the result as a list of RRs.
|
||||||
|
It can also act as a validating stub resolver if a trust anchor is
|
||||||
|
given via a set of command line options.
|
||||||
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Usage: sample [options] server_address hostname
|
Usage: sample [options] server_address hostname
|
||||||
</para>
|
</para>
|
||||||
@@ -171,60 +162,64 @@ $ <userinput>make</userinput>
|
|||||||
</para>
|
</para>
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-t RRtype</term>
|
||||||
-t RRtype
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
|
||||||
specify the RR type of the query. The default is the A RR.
|
specify the RR type of the query. The default is the A RR.
|
||||||
</para></listitem>
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>[-a algorithm] [-e] -k keyname -K keystring</term>
|
||||||
[-a algorithm] [-e] -k keyname -K keystring
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
|
||||||
specify a command-line DNS key to validate the answer. For
|
specify a command-line DNS key to validate the answer. For
|
||||||
example, to specify the following DNSKEY of example.com:
|
example, to specify the following DNSKEY of example.com:
|
||||||
<literallayout>
|
<literallayout>
|
||||||
example.com. 3600 IN DNSKEY 257 3 5 xxx
|
example.com. 3600 IN DNSKEY 257 3 5 xxx
|
||||||
</literallayout>
|
</literallayout>
|
||||||
specify the options as follows:
|
specify the options as follows:
|
||||||
<screen>
|
<screen>
|
||||||
<userinput>
|
<userinput>-e -k example.com -K "xxx"</userinput>
|
||||||
-e -k example.com -K "xxx"
|
</screen>
|
||||||
</userinput>
|
-e means that this key is a zone's "key signing key" (also known
|
||||||
</screen>
|
as "secure entry point").
|
||||||
-e means that this key is a zone's "key signing key" (as known
|
|
||||||
as "secure Entry point").
|
|
||||||
When -a is omitted rsasha1 will be used by default.
|
When -a is omitted rsasha1 will be used by default.
|
||||||
</para></listitem>
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-s domain:alt_server_address</term>
|
||||||
-s domain:alt_server_address
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
|
||||||
specify a separate recursive server address for the specific
|
specify a separate recursive server address for the specific
|
||||||
"domain". Example: -s example.com:2001:db8::1234
|
"domain". Example: -s example.com:2001:db8::1234
|
||||||
</para></listitem>
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>server_address</term>
|
<term>server_address</term>
|
||||||
<listitem><para>
|
<listitem>
|
||||||
|
<para>
|
||||||
an IP(v4/v6) address of the recursive server to which queries
|
an IP(v4/v6) address of the recursive server to which queries
|
||||||
are sent.
|
are sent.
|
||||||
</para></listitem>
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>hostname</term>
|
<term>hostname</term>
|
||||||
<listitem><para>
|
<listitem>
|
||||||
|
<para>
|
||||||
the domain name for the query
|
the domain name for the query
|
||||||
</para></listitem>
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</section>
|
</section>
|
||||||
<section><info><title>sample-async: a simple stub resolver, working asynchronously</title></info>
|
<section>
|
||||||
|
<info>
|
||||||
|
<title>sample-async: a simple stub resolver, working asynchronously</title>
|
||||||
|
</info>
|
||||||
<para>
|
<para>
|
||||||
Similar to "sample", but accepts a list
|
Similar to "sample", but accepts a list
|
||||||
of (query) domain names as a separate file and resolves the names
|
of (query) domain names as a separate file and resolves the names
|
||||||
@@ -236,49 +231,44 @@ $ <userinput>make</userinput>
|
|||||||
</para>
|
</para>
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-s server_address</term>
|
||||||
-s server_address
|
|
||||||
</term>
|
|
||||||
<listitem>
|
<listitem>
|
||||||
an IPv4 address of the recursive server to which queries are sent.
|
an IPv4 address of the recursive server to which queries are sent.
|
||||||
(IPv6 addresses are not supported in this implementation)
|
(IPv6 addresses are not supported in this implementation)
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-t RR_type</term>
|
||||||
-t RR_type
|
|
||||||
</term>
|
|
||||||
<listitem>
|
<listitem>
|
||||||
specify the RR type of the queries. The default is the A
|
specify the RR type of the queries. The default is the A
|
||||||
RR.
|
RR.
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>input_file</term>
|
||||||
input_file
|
|
||||||
</term>
|
|
||||||
<listitem>
|
<listitem>
|
||||||
a list of domain names to be resolved. each line
|
a list of domain names to be resolved. each line consists of a
|
||||||
consists of a single domain name. Example:
|
single domain name. Example:
|
||||||
<literallayout>
|
<literallayout>
|
||||||
www.example.com
|
www.example.com
|
||||||
mx.example.net
|
mx.example.net
|
||||||
ns.xxx.example
|
ns.xxx.example
|
||||||
</literallayout>
|
</literallayout>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</section>
|
</section>
|
||||||
<section><info><title>sample-request: a simple DNS transaction client</title></info>
|
<section>
|
||||||
|
<info>
|
||||||
|
<title>sample-request: a simple DNS transaction client</title>
|
||||||
|
</info>
|
||||||
<para>
|
<para>
|
||||||
It sends a query to a specified server, and
|
Sends a query to a specified server, and prints the response with
|
||||||
prints the response with minimal processing. It doesn't act as a
|
minimal processing. It doesn't act as a "stub resolver": it stops
|
||||||
"stub resolver": it stops the processing once it gets any
|
the processing once it gets any response from the server, whether
|
||||||
response from the server, whether it's a referral or an alias
|
it's a referral or an alias (CNAME or DNAME) that would require
|
||||||
(CNAME or DNAME) that would require further queries to get the
|
further queries to get the ultimate answer. In other words, this
|
||||||
ultimate answer. In other words, this utility acts as a very
|
utility acts as a very simplified <command>dig</command>.
|
||||||
simplified <command>dig</command>.
|
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Usage: sample-request [-t RRtype] server_address hostname
|
Usage: sample-request [-t RRtype] server_address hostname
|
||||||
@@ -288,31 +278,24 @@ $ <userinput>make</userinput>
|
|||||||
</para>
|
</para>
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-t RRtype</term>
|
||||||
-t RRtype
|
|
||||||
</term>
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
specify the RR type of
|
specify the RR type of the queries. The default is the A RR.
|
||||||
the queries. The default is the A RR.
|
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>server_address</term>
|
||||||
server_address
|
|
||||||
</term>
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
an IP(v4/v6)
|
an IP(v4/v6) address of the recursive server to which
|
||||||
address of the recursive server to which the query is sent.
|
the query is sent.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>hostname</term>
|
||||||
hostname
|
|
||||||
</term>
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
the domain name for the query
|
the domain name for the query
|
||||||
@@ -321,29 +304,35 @@ $ <userinput>make</userinput>
|
|||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</section>
|
</section>
|
||||||
<section><info><title>sample-gai: getaddrinfo() and getnameinfo() test code</title></info>
|
<section>
|
||||||
|
<info>
|
||||||
|
<title>sample-gai: getaddrinfo() and getnameinfo() test code</title>
|
||||||
|
</info>
|
||||||
<para>
|
<para>
|
||||||
This is a test program
|
This is a test program to check <command>getaddrinfo()</command> and
|
||||||
to check getaddrinfo() and getnameinfo() behavior. It takes a
|
<command>getnameinfo()</command> behavior. It takes a host name as an
|
||||||
host name as an argument, calls getaddrinfo() with the given host
|
argument, calls <command>getaddrinfo()</command> with the given host
|
||||||
name, and calls getnameinfo() with the resulting IP addresses
|
name, and calls <command>getnameinfo()</command> with the resulting
|
||||||
returned by getaddrinfo(). If the dns.conf file exists and
|
IP addresses returned by <command>getaddrinfo()</command>. If the
|
||||||
defines a trust anchor, the underlying resolver will act as a
|
dns.conf file exists and defines a trust anchor, the underlying
|
||||||
validating resolver, and getaddrinfo()/getnameinfo() will fail
|
resolver will act as a validating resolver, and
|
||||||
with an EAI_INSECUREDATA error when DNSSEC validation fails.
|
<command>getaddrinfo()</command>/<command>getnameinfo()</command>
|
||||||
|
will fail with an EAI_INSECUREDATA error when DNSSEC validation
|
||||||
|
fails.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Usage: sample-gai hostname
|
Usage: sample-gai hostname
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
<section><info><title>sample-update: a simple dynamic update client program</title></info>
|
<section>
|
||||||
|
<info>
|
||||||
|
<title>sample-update: a simple dynamic update client program</title>
|
||||||
|
</info>
|
||||||
<para>
|
<para>
|
||||||
It accepts a single update command as a
|
Accepts a single update command as a command-line argument, sends
|
||||||
command-line argument, sends an update request message to the
|
an update request message to the authoritative server, and shows
|
||||||
authoritative server, and shows the response from the server. In
|
the response from the server. In other words, this is a simplified
|
||||||
other words, this is a simplified <command>nsupdate</command>.
|
<command>nsupdate</command>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Usage: sample-update [options] (add|delete) "update data"
|
Usage: sample-update [options] (add|delete) "update data"
|
||||||
@@ -353,81 +342,81 @@ $ <userinput>make</userinput>
|
|||||||
</para>
|
</para>
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-a auth_server</term>
|
||||||
-a auth_server
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
|
||||||
An IP address of the authoritative server that has authority
|
An IP address of the authoritative server that has authority
|
||||||
for the zone containing the update name. This should normally
|
for the zone containing the update name. This should
|
||||||
be the primary authoritative server that accepts dynamic
|
normally be the primary authoritative server that accepts
|
||||||
updates. It can also be a secondary server that is configured
|
dynamic updates. It can also be a secondary server that is
|
||||||
to forward update requests to the primary server.
|
configured to forward update requests to the primary server.
|
||||||
</para></listitem>
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-k keyfile</term>
|
||||||
-k keyfile
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
A TSIG key file to secure the update transaction. The
|
||||||
A TSIG key file to secure the update transaction. The keyfile
|
keyfile format is the same as that for the nsupdate utility.
|
||||||
format is the same as that for the nsupdate utility.
|
</para>
|
||||||
</para></listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-p prerequisite</term>
|
||||||
-p prerequisite
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
|
||||||
A prerequisite for the update (only one prerequisite can be
|
A prerequisite for the update (only one prerequisite can be
|
||||||
specified). The prerequisite format is the same as that is
|
specified). The prerequisite format is the same as that is
|
||||||
accepted by the nsupdate utility.
|
accepted by the nsupdate utility.
|
||||||
</para></listitem>
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-r recursive_server</term>
|
||||||
-r recursive_server
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
|
||||||
An IP address of a recursive server that this utility will
|
An IP address of a recursive server that this utility will
|
||||||
use. A recursive server may be necessary to identify the
|
use. A recursive server may be necessary to identify the
|
||||||
authoritative server address to which the update request is
|
authoritative server address to which the update request is
|
||||||
sent.
|
sent.
|
||||||
</para></listitem>
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-z zonename</term>
|
||||||
-z zonename
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
|
||||||
The domain name of the zone that contains
|
The domain name of the zone that contains
|
||||||
</para></listitem>
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>(add|delete)</term>
|
||||||
(add|delete)
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
Specify the type of update operation. Either "add" or
|
||||||
Specify the type of update operation. Either "add" or "delete"
|
"delete" must be specified.
|
||||||
must be specified.
|
</para>
|
||||||
</para></listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>"update data"</term>
|
||||||
"update data"
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
Specify the data to be updated. A typical example of the
|
||||||
Specify the data to be updated. A typical example of the data
|
data would look like "name TTL RRtype RDATA".
|
||||||
would look like "name TTL RRtype RDATA".
|
</para>
|
||||||
</para></listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
<note>
|
||||||
<note><simpara>
|
<simpara>
|
||||||
In practice, either -a or -r must be specified. Others can
|
In practice, either -a or -r must be specified. Others can be
|
||||||
be optional; the underlying library routine tries to identify the
|
optional; the underlying library routine tries to identify the
|
||||||
appropriate server and the zone name for the update.
|
appropriate server and the zone name for the update.
|
||||||
</simpara></note>
|
</simpara>
|
||||||
|
</note>
|
||||||
<para>
|
<para>
|
||||||
Examples: assuming the primary authoritative server of the
|
Examples: assuming the primary authoritative server of the
|
||||||
dynamic.example.com zone has an IPv6 address 2001:db8::1234,
|
dynamic.example.com zone has an IPv6 address 2001:db8::1234,
|
||||||
@@ -448,13 +437,14 @@ $ <userinput>sample-update -a sample-update -k Kxxx.+nnn+mmmm.key delete "foo.dy
|
|||||||
removes all RRs for foo.dynamic.example.com using the given key.
|
removes all RRs for foo.dynamic.example.com using the given key.
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
<section><info><title>nsprobe: domain/name server checker in terms of RFC 4074</title></info>
|
<section>
|
||||||
|
<info>
|
||||||
|
<title>nsprobe: domain/name server checker in terms of RFC 4074</title>
|
||||||
|
</info>
|
||||||
<para>
|
<para>
|
||||||
It checks a set
|
Checks a set of domains to see the name servers of the domains
|
||||||
of domains to see the name servers of the domains behave
|
behave correctly in terms of RFC 4074. This is included in the set
|
||||||
correctly in terms of RFC 4074. This is included in the set of
|
of sample programs to show how the export library can be used in a
|
||||||
sample programs to show how the export library can be used in a
|
|
||||||
DNS-related application.
|
DNS-related application.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
@@ -463,61 +453,63 @@ $ <userinput>sample-update -a sample-update -k Kxxx.+nnn+mmmm.key delete "foo.dy
|
|||||||
<para>
|
<para>
|
||||||
Options
|
Options
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<variablelist>
|
<variablelist>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-d</term>
|
||||||
-d
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
Run in "debug" mode. With this option nsprobe will dump
|
||||||
run in the "debug" mode. with this option nsprobe will dump
|
|
||||||
every RRs it receives.
|
every RRs it receives.
|
||||||
</para></listitem>
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-v</term>
|
||||||
-v
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
Increase verbosity of other normal log messages. This can be
|
||||||
increase verbosity of other normal log messages. This can be
|
specified multiple times.
|
||||||
specified multiple times
|
</para>
|
||||||
</para></listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>-c cache_address</term>
|
||||||
-c cache_address
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
Specify an IP address of a recursive (caching) name server.
|
||||||
specify an IP address of a recursive (caching) name server.
|
nsprobe uses this server to get the NS RRset of each domain
|
||||||
nsprobe uses this server to get the NS RRset of each domain and
|
and the A and/or AAAA RRsets for the name servers. The
|
||||||
the A and/or AAAA RRsets for the name servers. The default
|
default value is 127.0.0.1.
|
||||||
value is 127.0.0.1.
|
</para>
|
||||||
</para></listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>
|
<term>input_file</term>
|
||||||
input_file
|
<listitem>
|
||||||
</term>
|
<para>
|
||||||
<listitem><para>
|
A file name containing a list of domain (zone) names to be
|
||||||
a file name containing a list of domain (zone) names to be
|
|
||||||
probed. when omitted the standard input will be used. Each
|
probed. when omitted the standard input will be used. Each
|
||||||
line of the input file specifies a single domain name such as
|
line of the input file specifies a single domain name such as
|
||||||
"example.com". In general this domain name must be the apex
|
"example.com". In general this domain name must be the apex
|
||||||
name of some DNS zone (unlike normal "host names" such as
|
name of some DNS zone (unlike normal "host names" such as
|
||||||
"www.example.com"). nsprobe first identifies the NS RRsets for
|
"www.example.com"). nsprobe first identifies the NS RRsets
|
||||||
the given domain name, and sends A and AAAA queries to these
|
for the given domain name, and sends A and AAAA queries to
|
||||||
servers for some "widely used" names under the zone;
|
these servers for some "widely used" names under the zone;
|
||||||
specifically, adding "www" and "ftp" to the zone name.
|
specifically, adding "www" and "ftp" to the zone name.
|
||||||
</para></listitem>
|
</para>
|
||||||
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
<section><info><title>Library References</title></info>
|
<section>
|
||||||
|
<info>
|
||||||
<para>As of this writing, there is no formal "manual" of the
|
<title>Library References</title>
|
||||||
libraries, except this document, header files (some of them
|
</info>
|
||||||
provide pretty detailed explanations), and sample application
|
<para>
|
||||||
programs.</para>
|
As of this writing, there is no formal "manual" for the libraries,
|
||||||
|
except this document, header files (some of which provide pretty
|
||||||
|
detailed explanations), and sample application programs.
|
||||||
|
</para>
|
||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
Reference in New Issue
Block a user