lwres_resutil.docbook revision 194e2dfffa6a167b8eef0ad11864026b423a1c30
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<!--
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews - Copyright (C) 2000, 2001, 2004, 2005, 2007, 2014-2016 Internet Systems Consortium, Inc. ("ISC")
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson -
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews - This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews - License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews - file, You can obtain one at http://mozilla.org/MPL/2.0/.
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson-->
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<!-- Converted by db4-upgrade version 1.0 -->
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt<refentry xmlns="http://docbook.org/ns/docbook" version="5.0">
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <info>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <date>2007-06-18</date>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </info>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refentryinfo>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <corpname>ISC</corpname>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <corpauthor>Internet Systems Consortium, Inc.</corpauthor>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </refentryinfo>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refmeta>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refentrytitle>lwres_resutil</refentrytitle>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <manvolnum>3</manvolnum>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refmiscinfo>BIND9</refmiscinfo>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </refmeta>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <docinfo>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <copyright>
194e2dfffa6a167b8eef0ad11864026b423a1c30Mark Andrews <year>2000</year>
194e2dfffa6a167b8eef0ad11864026b423a1c30Mark Andrews <year>2001</year>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <year>2004</year>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <year>2005</year>
c1a883f2e04d94e99c433b1f6cfd0c0338f4ed85Mark Andrews <year>2007</year>
938440694b33cd752e9e4b71a526368b4811c177Tinderbox User <year>2014</year>
19c7b1a0293498a3e36692c59646ed6e15ffc8d0Tinderbox User <year>2015</year>
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews <year>2016</year>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </copyright>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </docinfo>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refnamediv>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refname>lwres_string_parse</refname>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refname>lwres_addr_parse</refname>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refname>lwres_getaddrsbyname</refname>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refname>lwres_getnamebyaddr</refname>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refpurpose>lightweight resolver utility functions</refpurpose>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </refnamediv>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refsynopsisdiv>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <funcsynopsis>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcsynopsisinfo>#include &lt;lwres/lwres.h&gt;</funcsynopsisinfo>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcprototype>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonlwres_result_t
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_string_parse</function></funcdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>char **<parameter>c</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>lwres_uint16_t *<parameter>len</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcprototype>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonlwres_result_t
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_addr_parse</function></funcdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>lwres_addr_t *<parameter>addr</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcprototype>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonlwres_result_t
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_getaddrsbyname</function></funcdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>lwres_context_t *<parameter>ctx</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>const char *<parameter>name</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>lwres_uint32_t <parameter>addrtypes</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>lwres_gabnresponse_t **<parameter>structp</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<funcprototype>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <funcdef>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssonlwres_result_t
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson<function>lwres_getnamebyaddr</function></funcdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>lwres_context_t *<parameter>ctx</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>lwres_uint32_t <parameter>addrtype</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>lwres_uint16_t <parameter>addrlen</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>const unsigned char *<parameter>addr</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <paramdef>lwres_gnbaresponse_t **<parameter>structp</parameter></paramdef>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </funcprototype>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson</funcsynopsis>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </refsynopsisdiv>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <refsection><info><title>DESCRIPTION</title></info>
30eec077db2bdcb6f2a0dc388a3cdde2ede75ec1Mark Andrews
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <para><function>lwres_string_parse()</function>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein retrieves a DNS-encoded string starting the current pointer of
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein lightweight resolver buffer <parameter>b</parameter>: i.e.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <constant>b-&gt;current</constant>. When the function returns,
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein the address of the first byte of the encoded string is returned
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein via <parameter>*c</parameter> and the length of that string is
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein given by <parameter>*len</parameter>. The buffer's current
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein pointer is advanced to point at the character following the
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein string length, the encoded string, and the trailing
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <type>NULL</type> character.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <para><function>lwres_addr_parse()</function>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein extracts an address from the buffer <parameter>b</parameter>.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein The buffer's current pointer <constant>b-&gt;current</constant>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein is presumed to point at an encoded address: the address preceded
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein by a 32-bit protocol family identifier and a 16-bit length
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein field. The encoded address is copied to
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <constant>addr-&gt;address</constant> and
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <constant>addr-&gt;length</constant> indicates the size in bytes
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein of the address that was copied.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <constant>b-&gt;current</constant> is advanced to point at the
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein next byte of available data in the buffer following the encoded
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein address.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <para><function>lwres_getaddrsbyname()</function>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein and <function>lwres_getnamebyaddr()</function> use the
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <type>lwres_gnbaresponse_t</type> structure defined below:
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein<para><programlisting>
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafssontypedef struct {
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson lwres_uint32_t flags;
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson lwres_uint16_t naliases;
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson lwres_uint16_t naddrs;
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson char *realname;
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson char **aliases;
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson lwres_uint16_t realnamelen;
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson lwres_uint16_t *aliaslen;
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson lwres_addrlist_t addrs;
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson void *base;
8eea877894ea5bcf5cdd9ca124a8601ad421d753Andreas Gustafsson size_t baselen;
ddccd5811feff696ba460dabfb666ce61040f545Andreas Gustafsson} lwres_gabnresponse_t;
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein</programlisting></para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein The contents of this structure are not manipulated directly but
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein they are controlled through the
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <citerefentry>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refentrytitle>lwres_gabn</refentrytitle><manvolnum>3</manvolnum>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </citerefentry>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein functions.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein The lightweight resolver uses
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <function>lwres_getaddrsbyname()</function> to perform
821350367e2c7313c02eb275e8e05d5193b47cfdJeremy C. Reed forward lookups.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein Hostname <parameter>name</parameter> is looked up using the
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein resolver
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein context <parameter>ctx</parameter> for memory allocation.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <parameter>addrtypes</parameter> is a bitmask indicating
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein which type of
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein addresses are to be looked up. Current values for this bitmask are
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <type>LWRES_ADDRTYPE_V4</type> for IPv4 addresses and
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <type>LWRES_ADDRTYPE_V6</type> for IPv6 addresses. Results of the
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein lookup are returned in <parameter>*structp</parameter>.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <para><function>lwres_getnamebyaddr()</function>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein performs reverse lookups. Resolver context
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <parameter>ctx</parameter> is used for memory allocation. The
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein address type is indicated by <parameter>addrtype</parameter>:
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <type>LWRES_ADDRTYPE_V4</type> or
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <type>LWRES_ADDRTYPE_V6</type>. The address to be looked up is
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein given by <parameter>addr</parameter> and its length is
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <parameter>addrlen</parameter> bytes. The result of the
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein function call is made available through
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <parameter>*structp</parameter>.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </para>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </refsection>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <refsection><info><title>RETURN VALUES</title></info>
30eec077db2bdcb6f2a0dc388a3cdde2ede75ec1Mark Andrews
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein Successful calls to
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <function>lwres_string_parse()</function>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein and
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <function>lwres_addr_parse()</function>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein return
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <errorcode>LWRES_R_SUCCESS.</errorcode>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein Both functions return
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <errorcode>LWRES_R_FAILURE</errorcode>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein if the buffer is corrupt or
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <errorcode>LWRES_R_UNEXPECTEDEND</errorcode>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein if the buffer has less space than expected for the components of the
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein encoded string or address.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <para><function>lwres_getaddrsbyname()</function>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein returns <errorcode>LWRES_R_SUCCESS</errorcode> on success and it
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein returns <errorcode>LWRES_R_NOTFOUND</errorcode> if the hostname
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <parameter>name</parameter> could not be found.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <para><errorcode>LWRES_R_SUCCESS</errorcode>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein is returned by a successful call to
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <function>lwres_getnamebyaddr()</function>.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein Both
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <function>lwres_getaddrsbyname()</function>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein and
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <function>lwres_getnamebyaddr()</function>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein return
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <errorcode>LWRES_R_NOMEMORY</errorcode>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein when memory allocation requests fail and
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <errorcode>LWRES_R_UNEXPECTEDEND</errorcode>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein if the buffers used for sending queries and receiving replies are too
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein small.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </refsection>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt <refsection><info><title>SEE ALSO</title></info>
30eec077db2bdcb6f2a0dc388a3cdde2ede75ec1Mark Andrews
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <para><citerefentry>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refentrytitle>lwres_buffer</refentrytitle><manvolnum>3</manvolnum>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </citerefentry>,
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <citerefentry>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein <refentrytitle>lwres_gabn</refentrytitle><manvolnum>3</manvolnum>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </citerefentry>.
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein </para>
268a4475065fe6a8cd7cc707820982cf5e98f430Rob Austein
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt </refsection>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt</refentry>