Blame lib/lwres/man/lwres_gabn.docbook

Packit 5ce601
Packit 5ce601
]>
Packit 5ce601
Packit 5ce601
 - Copyright (C) Internet Systems Consortium, Inc. ("ISC")
Packit 5ce601
 -
Packit 5ce601
 - This Source Code Form is subject to the terms of the Mozilla Public
Packit 5ce601
 - License, v. 2.0. If a copy of the MPL was not distributed with this
Packit Service 704ed8
 - file, you can obtain one at https://mozilla.org/MPL/2.0/.
Packit 5ce601
 -
Packit 5ce601
 - See the COPYRIGHT file distributed with this work for additional
Packit 5ce601
 - information regarding copyright ownership.
Packit 5ce601
-->
Packit 5ce601
Packit 5ce601
Packit Service 704ed8
<refentry xmlns="http://docbook.org/ns/docbook" version="5.0">
Packit 5ce601
  <info>
Packit 5ce601
    <date>2007-06-18</date>
Packit 5ce601
  </info>
Packit 5ce601
  <refentryinfo>
Packit 5ce601
    <corpname>ISC</corpname>
Packit 5ce601
    <corpauthor>Internet Systems Consortium, Inc.</corpauthor>
Packit 5ce601
  </refentryinfo>
Packit 5ce601
Packit 5ce601
  <refmeta>
Packit 5ce601
    <refentrytitle>lwres_gabn</refentrytitle>
Packit 5ce601
    <manvolnum>3</manvolnum>
Packit Service d3afd5
    <refmiscinfo>BIND9</refmiscinfo>
Packit 5ce601
  </refmeta>
Packit 5ce601
Packit 5ce601
  <docinfo>
Packit 5ce601
    <copyright>
Packit 5ce601
      <year>2000</year>
Packit 5ce601
      <year>2001</year>
Packit 5ce601
      <year>2004</year>
Packit 5ce601
      <year>2005</year>
Packit 5ce601
      <year>2007</year>
Packit 5ce601
      <year>2014</year>
Packit 5ce601
      <year>2015</year>
Packit 5ce601
      <year>2016</year>
Packit 5ce601
      <year>2018</year>
Packit 5ce601
      <year>2019</year>
Packit 5ce601
      <year>2020</year>
Packit 5ce601
      <holder>Internet Systems Consortium, Inc. ("ISC")</holder>
Packit 5ce601
    </copyright>
Packit 5ce601
  </docinfo>
Packit 5ce601
Packit 5ce601
  <refnamediv>
Packit 5ce601
    <refname>lwres_gabnrequest_render</refname>
Packit 5ce601
    <refname>lwres_gabnresponse_render</refname>
Packit 5ce601
    <refname>lwres_gabnrequest_parse</refname>
Packit 5ce601
    <refname>lwres_gabnresponse_parse</refname>
Packit 5ce601
    <refname>lwres_gabnresponse_free</refname>
Packit 5ce601
    <refname>lwres_gabnrequest_free</refname>
Packit 5ce601
    <refpurpose>lightweight resolver getaddrbyname message handling</refpurpose>
Packit 5ce601
  </refnamediv>
Packit 5ce601
  <refsynopsisdiv>
Packit 5ce601
    <funcsynopsis>
Packit 5ce601
<funcsynopsisinfo>#include <lwres/lwres.h></funcsynopsisinfo>
Packit 5ce601
<funcprototype>
Packit 5ce601
        <funcdef>
Packit 5ce601
lwres_result_t
Packit 5ce601
<function>lwres_gabnrequest_render</function></funcdef>
Packit 5ce601
        <paramdef>lwres_context_t *<parameter>ctx</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_gabnrequest_t *<parameter>req</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_lwpacket_t *<parameter>pkt</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
Packit 5ce601
        </funcprototype>
Packit 5ce601
<funcprototype>
Packit 5ce601
        <funcdef>
Packit 5ce601
lwres_result_t
Packit 5ce601
<function>lwres_gabnresponse_render</function></funcdef>
Packit 5ce601
        <paramdef>lwres_context_t *<parameter>ctx</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_gabnresponse_t *<parameter>req</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_lwpacket_t *<parameter>pkt</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
Packit 5ce601
        </funcprototype>
Packit 5ce601
<funcprototype>
Packit 5ce601
        <funcdef>
Packit 5ce601
lwres_result_t
Packit 5ce601
<function>lwres_gabnrequest_parse</function></funcdef>
Packit 5ce601
        <paramdef>lwres_context_t *<parameter>ctx</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_lwpacket_t *<parameter>pkt</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_gabnrequest_t **<parameter>structp</parameter></paramdef>
Packit 5ce601
        </funcprototype>
Packit 5ce601
<funcprototype>
Packit 5ce601
        <funcdef>
Packit 5ce601
lwres_result_t
Packit 5ce601
<function>lwres_gabnresponse_parse</function></funcdef>
Packit 5ce601
        <paramdef>lwres_context_t *<parameter>ctx</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_buffer_t *<parameter>b</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_lwpacket_t *<parameter>pkt</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_gabnresponse_t **<parameter>structp</parameter></paramdef>
Packit 5ce601
        </funcprototype>
Packit 5ce601
<funcprototype>
Packit 5ce601
        <funcdef>
Packit 5ce601
void
Packit 5ce601
<function>lwres_gabnresponse_free</function></funcdef>
Packit 5ce601
        <paramdef>lwres_context_t *<parameter>ctx</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_gabnresponse_t **<parameter>structp</parameter></paramdef>
Packit 5ce601
        </funcprototype>
Packit 5ce601
<funcprototype>
Packit 5ce601
        <funcdef>
Packit 5ce601
void
Packit 5ce601
<function>lwres_gabnrequest_free</function></funcdef>
Packit 5ce601
        <paramdef>lwres_context_t *<parameter>ctx</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_gabnrequest_t **<parameter>structp</parameter></paramdef>
Packit 5ce601
      </funcprototype>
Packit 5ce601
</funcsynopsis>
Packit 5ce601
  </refsynopsisdiv>
Packit 5ce601
  <refsection><info><title>DESCRIPTION</title></info>
Packit 5ce601
Packit 5ce601
    <para>
Packit 5ce601
      These are low-level routines for creating and parsing
Packit 5ce601
      lightweight resolver name-to-address lookup request and
Packit 5ce601
      response messages.
Packit 5ce601
    </para>
Packit 5ce601
    <para>
Packit 5ce601
      There are four main functions for the getaddrbyname opcode.
Packit 5ce601
      One render function converts a getaddrbyname request structure —
Packit 5ce601
      <type>lwres_gabnrequest_t</type> —
Packit 5ce601
      to the lightweight resolver's canonical format.
Packit 5ce601
      It is complemented by a parse function that converts a packet in this
Packit 5ce601
      canonical format to a getaddrbyname request structure.
Packit 5ce601
      Another render function converts the getaddrbyname response structure
Packit 5ce601
      — <type>lwres_gabnresponse_t</type> —
Packit 5ce601
      to the canonical format.
Packit 5ce601
      This is complemented by a parse function which converts a packet in
Packit 5ce601
      canonical format to a getaddrbyname response structure.
Packit 5ce601
    </para>
Packit 5ce601
    <para>
Packit 5ce601
      These structures are defined in
Packit 5ce601
      <filename><lwres/lwres.h></filename>.
Packit 5ce601
      They are shown below.
Packit 5ce601
    </para>
Packit 5ce601
    <para><programlisting>
Packit 5ce601
#define LWRES_OPCODE_GETADDRSBYNAME     0x00010001U
Packit 5ce601
</programlisting>
Packit 5ce601
    </para>
Packit 5ce601
    <para><programlisting>
Packit 5ce601
typedef struct lwres_addr lwres_addr_t;
Packit 5ce601
typedef LWRES_LIST(lwres_addr_t) lwres_addrlist_t;
Packit 5ce601
</programlisting>
Packit 5ce601
    </para>
Packit 5ce601
    <para><programlisting>
Packit 5ce601
typedef struct {
Packit 5ce601
        uint32_t  flags;
Packit 5ce601
        uint32_t  addrtypes;
Packit 5ce601
        uint16_t  namelen;
Packit 5ce601
        char           *name;
Packit 5ce601
} lwres_gabnrequest_t;
Packit 5ce601
</programlisting>
Packit 5ce601
    </para>
Packit 5ce601
    <para><programlisting>
Packit 5ce601
typedef struct {
Packit 5ce601
        uint32_t          flags;
Packit 5ce601
        uint16_t          naliases;
Packit 5ce601
        uint16_t          naddrs;
Packit 5ce601
        char                   *realname;
Packit 5ce601
        char                  **aliases;
Packit 5ce601
        uint16_t          realnamelen;
Packit 5ce601
        uint16_t         *aliaslen;
Packit 5ce601
        lwres_addrlist_t        addrs;
Packit 5ce601
        void                   *base;
Packit 5ce601
        size_t                  baselen;
Packit 5ce601
} lwres_gabnresponse_t;
Packit 5ce601
</programlisting>
Packit 5ce601
    </para>
Packit 5ce601
Packit 5ce601
    <para><function>lwres_gabnrequest_render()</function>
Packit 5ce601
      uses resolver context <parameter>ctx</parameter> to convert
Packit 5ce601
      getaddrbyname request structure <parameter>req</parameter> to
Packit 5ce601
      canonical format.  The packet header structure
Packit 5ce601
      <parameter>pkt</parameter> is initialised and transferred to
Packit 5ce601
      buffer <parameter>b</parameter>.
Packit 5ce601
Packit 5ce601
      The contents of <parameter>*req</parameter> are then appended to
Packit 5ce601
      the buffer in canonical format.
Packit 5ce601
      <function>lwres_gabnresponse_render()</function> performs the
Packit 5ce601
      same task, except it converts a getaddrbyname response structure
Packit 5ce601
      <type>lwres_gabnresponse_t</type> to the lightweight resolver's
Packit 5ce601
      canonical format.
Packit 5ce601
    </para>
Packit 5ce601
Packit 5ce601
    <para><function>lwres_gabnrequest_parse()</function>
Packit 5ce601
      uses context <parameter>ctx</parameter> to convert the contents
Packit 5ce601
      of packet <parameter>pkt</parameter> to a
Packit 5ce601
      <type>lwres_gabnrequest_t</type> structure.  Buffer
Packit 5ce601
      <parameter>b</parameter> provides space to be used for storing
Packit 5ce601
      this structure.  When the function succeeds, the resulting
Packit 5ce601
      <type>lwres_gabnrequest_t</type> is made available through
Packit 5ce601
      <parameter>*structp</parameter>.
Packit 5ce601
Packit 5ce601
      <function>lwres_gabnresponse_parse()</function> offers the same
Packit 5ce601
      semantics as <function>lwres_gabnrequest_parse()</function>
Packit 5ce601
      except it yields a <type>lwres_gabnresponse_t</type> structure.
Packit 5ce601
    </para>
Packit 5ce601
Packit 5ce601
    <para><function>lwres_gabnresponse_free()</function>
Packit 5ce601
      and <function>lwres_gabnrequest_free()</function> release the
Packit 5ce601
      memory in resolver context <parameter>ctx</parameter> that was
Packit 5ce601
      allocated to the <type>lwres_gabnresponse_t</type> or
Packit 5ce601
      <type>lwres_gabnrequest_t</type> structures referenced via
Packit 5ce601
      <parameter>structp</parameter>.
Packit 5ce601
Packit 5ce601
      Any memory associated with ancillary buffers and strings for
Packit 5ce601
      those structures is also discarded.
Packit 5ce601
    </para>
Packit 5ce601
  </refsection>
Packit 5ce601
  <refsection><info><title>RETURN VALUES</title></info>
Packit 5ce601
Packit 5ce601
    <para>
Packit 5ce601
      The getaddrbyname opcode functions
Packit 5ce601
      <function>lwres_gabnrequest_render()</function>,
Packit 5ce601
      <function>lwres_gabnresponse_render()</function>
Packit 5ce601
      <function>lwres_gabnrequest_parse()</function>
Packit 5ce601
      and
Packit 5ce601
      <function>lwres_gabnresponse_parse()</function>
Packit 5ce601
      all return
Packit 5ce601
      <errorcode>LWRES_R_SUCCESS</errorcode>
Packit 5ce601
      on success.
Packit 5ce601
      They return
Packit 5ce601
      <errorcode>LWRES_R_NOMEMORY</errorcode>
Packit 5ce601
      if memory allocation fails.
Packit 5ce601
      <errorcode>LWRES_R_UNEXPECTEDEND</errorcode>
Packit 5ce601
      is returned if the available space in the buffer
Packit 5ce601
      <parameter>b</parameter>
Packit 5ce601
      is too small to accommodate the packet header or the
Packit 5ce601
      <type>lwres_gabnrequest_t</type>
Packit 5ce601
      and
Packit 5ce601
      <type>lwres_gabnresponse_t</type>
Packit 5ce601
      structures.
Packit 5ce601
      <function>lwres_gabnrequest_parse()</function>
Packit 5ce601
      and
Packit 5ce601
      <function>lwres_gabnresponse_parse()</function>
Packit 5ce601
      will return
Packit 5ce601
      <errorcode>LWRES_R_UNEXPECTEDEND</errorcode>
Packit 5ce601
      if the buffer is not empty after decoding the received packet.
Packit 5ce601
      These functions will return
Packit 5ce601
      <errorcode>LWRES_R_FAILURE</errorcode>
Packit 5ce601
      if
Packit 5ce601
      <varname remap="structfield">pktflags</varname>
Packit 5ce601
      in the packet header structure
Packit 5ce601
      <type>lwres_lwpacket_t</type>
Packit 5ce601
      indicate that the packet is not a response to an earlier query.
Packit 5ce601
    </para>
Packit 5ce601
  </refsection>
Packit 5ce601
  <refsection><info><title>SEE ALSO</title></info>
Packit 5ce601
Packit 5ce601
    <para><citerefentry>
Packit 5ce601
        <refentrytitle>lwres_packet</refentrytitle><manvolnum>3</manvolnum>
Packit 5ce601
      </citerefentry>
Packit 5ce601
    </para>
Packit 5ce601
  </refsection>
Packit 5ce601
</refentry>