Blame lib/lwres/man/lwres_gnba.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_gnba</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_gnbarequest_render</refname>
Packit 5ce601
    <refname>lwres_gnbaresponse_render</refname>
Packit 5ce601
    <refname>lwres_gnbarequest_parse</refname>
Packit 5ce601
    <refname>lwres_gnbaresponse_parse</refname>
Packit 5ce601
    <refname>lwres_gnbaresponse_free</refname>
Packit 5ce601
    <refname>lwres_gnbarequest_free</refname>
Packit 5ce601
    <refpurpose>lightweight resolver getnamebyaddress message handling</refpurpose>
Packit 5ce601
  </refnamediv>
Packit 5ce601
Packit 5ce601
  <refsynopsisdiv>
Packit 5ce601
Packit 5ce601
    <funcsynopsis>
Packit 5ce601
<funcsynopsisinfo>
Packit 5ce601
#include <lwres/lwres.h>
Packit 5ce601
</funcsynopsisinfo>
Packit 5ce601
Packit 5ce601
<funcprototype>
Packit 5ce601
        <funcdef>
Packit 5ce601
lwres_result_t
Packit 5ce601
<function>lwres_gnbarequest_render</function>
Packit 5ce601
</funcdef>
Packit 5ce601
        <paramdef>lwres_context_t *<parameter>ctx</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_gnbarequest_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
Packit 5ce601
<funcprototype>
Packit 5ce601
        <funcdef>
Packit 5ce601
lwres_result_t
Packit 5ce601
<function>lwres_gnbaresponse_render</function>
Packit 5ce601
</funcdef>
Packit 5ce601
        <paramdef>lwres_context_t *<parameter>ctx</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_gnbaresponse_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_gnbarequest_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_gnbarequest_t **<parameter>structp</parameter></paramdef>
Packit 5ce601
        </funcprototype>
Packit 5ce601
<funcprototype>
Packit 5ce601
        <funcdef>
Packit 5ce601
lwres_result_t
Packit 5ce601
<function>lwres_gnbaresponse_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_gnbaresponse_t **<parameter>structp</parameter></paramdef>
Packit 5ce601
        </funcprototype>
Packit 5ce601
Packit 5ce601
<funcprototype>
Packit 5ce601
        <funcdef>
Packit 5ce601
void
Packit 5ce601
<function>lwres_gnbaresponse_free</function>
Packit 5ce601
</funcdef>
Packit 5ce601
        <paramdef>lwres_context_t *<parameter>ctx</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_gnbaresponse_t **<parameter>structp</parameter></paramdef>
Packit 5ce601
        </funcprototype>
Packit 5ce601
<funcprototype>
Packit 5ce601
        <funcdef>
Packit 5ce601
void
Packit 5ce601
<function>lwres_gnbarequest_free</function></funcdef>
Packit 5ce601
        <paramdef>lwres_context_t *<parameter>ctx</parameter></paramdef>
Packit 5ce601
        <paramdef>lwres_gnbarequest_t **<parameter>structp</parameter></paramdef>
Packit 5ce601
      </funcprototype>
Packit 5ce601
</funcsynopsis>
Packit 5ce601
Packit 5ce601
  </refsynopsisdiv>
Packit 5ce601
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 address-to-name lookup request and
Packit 5ce601
      response messages.
Packit 5ce601
    </para>
Packit 5ce601
    <para>
Packit 5ce601
      There are four main functions for the getnamebyaddr opcode.
Packit 5ce601
      One render function converts a getnamebyaddr request structure —
Packit 5ce601
      <type>lwres_gnbarequest_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 getnamebyaddr request structure.
Packit 5ce601
      Another render function converts the getnamebyaddr response structure
Packit 5ce601
Packit 5ce601
      <type>lwres_gnbaresponse_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 getnamebyaddr 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_GETNAMEBYADDR      0x00010002U
Packit 5ce601
</programlisting>
Packit 5ce601
    </para>
Packit 5ce601
    <para><programlisting>
Packit 5ce601
typedef struct {
Packit 5ce601
        uint32_t  flags;
Packit 5ce601
        lwres_addr_t    addr;
Packit 5ce601
} lwres_gnbarequest_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
        char           *realname;
Packit 5ce601
        char          **aliases;
Packit 5ce601
        uint16_t  realnamelen;
Packit 5ce601
        uint16_t *aliaslen;
Packit 5ce601
        void           *base;
Packit 5ce601
        size_t          baselen;
Packit 5ce601
} lwres_gnbaresponse_t;
Packit 5ce601
</programlisting>
Packit 5ce601
    </para>
Packit 5ce601
Packit 5ce601
    <para><function>lwres_gnbarequest_render()</function>
Packit 5ce601
      uses resolver context <varname>ctx</varname> to convert
Packit 5ce601
      getnamebyaddr request structure <varname>req</varname> to
Packit 5ce601
      canonical format.  The packet header structure
Packit 5ce601
      <varname>pkt</varname> is initialised and transferred to buffer
Packit 5ce601
      <varname>b</varname>.  The contents of <varname>*req</varname>
Packit 5ce601
      are then appended to the buffer in canonical format.
Packit 5ce601
      <function>lwres_gnbaresponse_render()</function> performs the
Packit 5ce601
      same task, except it converts a getnamebyaddr response structure
Packit 5ce601
      <type>lwres_gnbaresponse_t</type> to the lightweight resolver's
Packit 5ce601
      canonical format.
Packit 5ce601
    </para>
Packit 5ce601
Packit 5ce601
    <para><function>lwres_gnbarequest_parse()</function>
Packit 5ce601
      uses context <varname>ctx</varname> to convert the contents of
Packit 5ce601
      packet <varname>pkt</varname> to a
Packit 5ce601
      <type>lwres_gnbarequest_t</type> structure.  Buffer
Packit 5ce601
      <varname>b</varname> provides space to be used for storing this
Packit 5ce601
      structure.  When the function succeeds, the resulting
Packit 5ce601
      <type>lwres_gnbarequest_t</type> is made available through
Packit 5ce601
      <varname>*structp</varname>.
Packit 5ce601
      <function>lwres_gnbaresponse_parse()</function> offers the same
Packit 5ce601
      semantics as <function>lwres_gnbarequest_parse()</function>
Packit 5ce601
      except it yields a <type>lwres_gnbaresponse_t</type> structure.
Packit 5ce601
    </para>
Packit 5ce601
Packit 5ce601
    <para><function>lwres_gnbaresponse_free()</function>
Packit 5ce601
      and <function>lwres_gnbarequest_free()</function> release the
Packit 5ce601
      memory in resolver context <varname>ctx</varname> that was
Packit 5ce601
      allocated to the <type>lwres_gnbaresponse_t</type> or
Packit 5ce601
      <type>lwres_gnbarequest_t</type> structures referenced via
Packit 5ce601
      <varname>structp</varname>.  Any memory associated with
Packit 5ce601
      ancillary buffers and strings for those structures is also
Packit 5ce601
      discarded.
Packit 5ce601
    </para>
Packit 5ce601
  </refsection>
Packit 5ce601
Packit 5ce601
  <refsection><info><title>RETURN VALUES</title></info>
Packit 5ce601
Packit 5ce601
    <para>
Packit 5ce601
      The getnamebyaddr opcode functions
Packit 5ce601
      <function>lwres_gnbarequest_render()</function>,
Packit 5ce601
      <function>lwres_gnbaresponse_render()</function>
Packit 5ce601
      <function>lwres_gnbarequest_parse()</function>
Packit 5ce601
      and
Packit 5ce601
      <function>lwres_gnbaresponse_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
      <varname>b</varname>
Packit 5ce601
      is too small to accommodate the packet header or the
Packit 5ce601
      <type>lwres_gnbarequest_t</type>
Packit 5ce601
      and
Packit 5ce601
      <type>lwres_gnbaresponse_t</type>
Packit 5ce601
      structures.
Packit 5ce601
      <function>lwres_gnbarequest_parse()</function>
Packit 5ce601
      and
Packit 5ce601
      <function>lwres_gnbaresponse_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>