Blame lib/lwres/man/lwres_gabn.3

Packit Service ae04f2
.\" Copyright (C) 2000, 2001, 2004, 2005, 2007, 2014-2016, 2018-2020 Internet Systems Consortium, Inc. ("ISC")
Packit Service ae04f2
.\" 
Packit Service ae04f2
.\" This Source Code Form is subject to the terms of the Mozilla Public
Packit Service ae04f2
.\" License, v. 2.0. If a copy of the MPL was not distributed with this
Packit Service ae04f2
.\" file, You can obtain one at http://mozilla.org/MPL/2.0/.
Packit Service ae04f2
.\"
Packit Service ae04f2
.hy 0
Packit Service ae04f2
.ad l
Packit Service ae04f2
'\" t
Packit Service ae04f2
.\"     Title: lwres_gabn
Packit Service ae04f2
.\"    Author: 
Packit Service ae04f2
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
Packit Service ae04f2
.\"      Date: 2007-06-18
Packit Service ae04f2
.\"    Manual: BIND9
Packit Service ae04f2
.\"    Source: ISC
Packit Service ae04f2
.\"  Language: English
Packit Service ae04f2
.\"
Packit Service ae04f2
.TH "LWRES_GABN" "3" "2007\-06\-18" "ISC" "BIND9"
Packit Service ae04f2
.\" -----------------------------------------------------------------
Packit Service ae04f2
.\" * Define some portability stuff
Packit Service ae04f2
.\" -----------------------------------------------------------------
Packit Service ae04f2
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit Service ae04f2
.\" http://bugs.debian.org/507673
Packit Service ae04f2
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
Packit Service ae04f2
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Packit Service ae04f2
.ie \n(.g .ds Aq \(aq
Packit Service ae04f2
.el       .ds Aq '
Packit Service ae04f2
.\" -----------------------------------------------------------------
Packit Service ae04f2
.\" * set default formatting
Packit Service ae04f2
.\" -----------------------------------------------------------------
Packit Service ae04f2
.\" disable hyphenation
Packit Service ae04f2
.nh
Packit Service ae04f2
.\" disable justification (adjust text to left margin only)
Packit Service ae04f2
.ad l
Packit Service ae04f2
.\" -----------------------------------------------------------------
Packit Service ae04f2
.\" * MAIN CONTENT STARTS HERE *
Packit Service ae04f2
.\" -----------------------------------------------------------------
Packit Service ae04f2
.SH "NAME"
Packit Service ae04f2
lwres_gabnrequest_render, lwres_gabnresponse_render, lwres_gabnrequest_parse, lwres_gabnresponse_parse, lwres_gabnresponse_free, lwres_gabnrequest_free \- lightweight resolver getaddrbyname message handling
Packit Service ae04f2
.SH "SYNOPSIS"
Packit Service ae04f2
.sp
Packit Service ae04f2
.ft B
Packit Service ae04f2
.nf
Packit Service ae04f2
#include <lwres/lwres\&.h>
Packit Service ae04f2
.fi
Packit Service ae04f2
.ft
Packit Service ae04f2
.HP \w'lwres_result_t\ lwres_gabnrequest_render('u
Packit Service ae04f2
.BI "lwres_result_t lwres_gabnrequest_render(lwres_context_t\ *" "ctx" ", lwres_gabnrequest_t\ *" "req" ", lwres_lwpacket_t\ *" "pkt" ", lwres_buffer_t\ *" "b" ");"
Packit Service ae04f2
.HP \w'lwres_result_t\ lwres_gabnresponse_render('u
Packit Service ae04f2
.BI "lwres_result_t lwres_gabnresponse_render(lwres_context_t\ *" "ctx" ", lwres_gabnresponse_t\ *" "req" ", lwres_lwpacket_t\ *" "pkt" ", lwres_buffer_t\ *" "b" ");"
Packit Service ae04f2
.HP \w'lwres_result_t\ lwres_gabnrequest_parse('u
Packit Service ae04f2
.BI "lwres_result_t lwres_gabnrequest_parse(lwres_context_t\ *" "ctx" ", lwres_buffer_t\ *" "b" ", lwres_lwpacket_t\ *" "pkt" ", lwres_gabnrequest_t\ **" "structp" ");"
Packit Service ae04f2
.HP \w'lwres_result_t\ lwres_gabnresponse_parse('u
Packit Service ae04f2
.BI "lwres_result_t lwres_gabnresponse_parse(lwres_context_t\ *" "ctx" ", lwres_buffer_t\ *" "b" ", lwres_lwpacket_t\ *" "pkt" ", lwres_gabnresponse_t\ **" "structp" ");"
Packit Service ae04f2
.HP \w'void\ lwres_gabnresponse_free('u
Packit Service ae04f2
.BI "void lwres_gabnresponse_free(lwres_context_t\ *" "ctx" ", lwres_gabnresponse_t\ **" "structp" ");"
Packit Service ae04f2
.HP \w'void\ lwres_gabnrequest_free('u
Packit Service ae04f2
.BI "void lwres_gabnrequest_free(lwres_context_t\ *" "ctx" ", lwres_gabnrequest_t\ **" "structp" ");"
Packit Service ae04f2
.SH "DESCRIPTION"
Packit Service ae04f2
.PP
Packit Service ae04f2
These are low\-level routines for creating and parsing lightweight resolver name\-to\-address lookup request and response messages\&.
Packit Service ae04f2
.PP
Packit Service ae04f2
There are four main functions for the getaddrbyname opcode\&. One render function converts a getaddrbyname request structure \(em
Packit Service ae04f2
\fBlwres_gabnrequest_t\fR
Packit Service ae04f2
\(em to the lightweight resolver\*(Aqs canonical format\&. It is complemented by a parse function that converts a packet in this canonical format to a getaddrbyname request structure\&. Another render function converts the getaddrbyname response structure \(em
Packit Service ae04f2
\fBlwres_gabnresponse_t\fR
Packit Service ae04f2
\(em to the canonical format\&. This is complemented by a parse function which converts a packet in canonical format to a getaddrbyname response structure\&.
Packit Service ae04f2
.PP
Packit Service ae04f2
These structures are defined in
Packit Service ae04f2
<lwres/lwres\&.h>\&. They are shown below\&.
Packit Service ae04f2
.PP
Packit Service ae04f2
.if n \{\
Packit Service ae04f2
.RS 4
Packit Service ae04f2
.\}
Packit Service ae04f2
.nf
Packit Service ae04f2
#define LWRES_OPCODE_GETADDRSBYNAME     0x00010001U
Packit Service ae04f2
.fi
Packit Service ae04f2
.if n \{\
Packit Service ae04f2
.RE
Packit Service ae04f2
.\}
Packit Service ae04f2
.PP
Packit Service ae04f2
.if n \{\
Packit Service ae04f2
.RS 4
Packit Service ae04f2
.\}
Packit Service ae04f2
.nf
Packit Service ae04f2
typedef struct lwres_addr lwres_addr_t;
Packit Service ae04f2
typedef LWRES_LIST(lwres_addr_t) lwres_addrlist_t;
Packit Service ae04f2
.fi
Packit Service ae04f2
.if n \{\
Packit Service ae04f2
.RE
Packit Service ae04f2
.\}
Packit Service ae04f2
.PP
Packit Service ae04f2
.if n \{\
Packit Service ae04f2
.RS 4
Packit Service ae04f2
.\}
Packit Service ae04f2
.nf
Packit Service ae04f2
typedef struct {
Packit Service ae04f2
        uint32_t  flags;
Packit Service ae04f2
        uint32_t  addrtypes;
Packit Service ae04f2
        uint16_t  namelen;
Packit Service ae04f2
        char           *name;
Packit Service ae04f2
} lwres_gabnrequest_t;
Packit Service ae04f2
.fi
Packit Service ae04f2
.if n \{\
Packit Service ae04f2
.RE
Packit Service ae04f2
.\}
Packit Service ae04f2
.PP
Packit Service ae04f2
.if n \{\
Packit Service ae04f2
.RS 4
Packit Service ae04f2
.\}
Packit Service ae04f2
.nf
Packit Service ae04f2
typedef struct {
Packit Service ae04f2
        uint32_t          flags;
Packit Service ae04f2
        uint16_t          naliases;
Packit Service ae04f2
        uint16_t          naddrs;
Packit Service ae04f2
        char                   *realname;
Packit Service ae04f2
        char                  **aliases;
Packit Service ae04f2
        uint16_t          realnamelen;
Packit Service ae04f2
        uint16_t         *aliaslen;
Packit Service ae04f2
        lwres_addrlist_t        addrs;
Packit Service ae04f2
        void                   *base;
Packit Service ae04f2
        size_t                  baselen;
Packit Service ae04f2
} lwres_gabnresponse_t;
Packit Service ae04f2
.fi
Packit Service ae04f2
.if n \{\
Packit Service ae04f2
.RE
Packit Service ae04f2
.\}
Packit Service ae04f2
.PP
Packit Service ae04f2
\fBlwres_gabnrequest_render()\fR
Packit Service ae04f2
uses resolver context
Packit Service ae04f2
\fIctx\fR
Packit Service ae04f2
to convert getaddrbyname request structure
Packit Service ae04f2
\fIreq\fR
Packit Service ae04f2
to canonical format\&. The packet header structure
Packit Service ae04f2
\fIpkt\fR
Packit Service ae04f2
is initialised and transferred to buffer
Packit Service ae04f2
\fIb\fR\&. The contents of
Packit Service ae04f2
\fI*req\fR
Packit Service ae04f2
are then appended to the buffer in canonical format\&.
Packit Service ae04f2
\fBlwres_gabnresponse_render()\fR
Packit Service ae04f2
performs the same task, except it converts a getaddrbyname response structure
Packit Service ae04f2
\fBlwres_gabnresponse_t\fR
Packit Service ae04f2
to the lightweight resolver\*(Aqs canonical format\&.
Packit Service ae04f2
.PP
Packit Service ae04f2
\fBlwres_gabnrequest_parse()\fR
Packit Service ae04f2
uses context
Packit Service ae04f2
\fIctx\fR
Packit Service ae04f2
to convert the contents of packet
Packit Service ae04f2
\fIpkt\fR
Packit Service ae04f2
to a
Packit Service ae04f2
\fBlwres_gabnrequest_t\fR
Packit Service ae04f2
structure\&. Buffer
Packit Service ae04f2
\fIb\fR
Packit Service ae04f2
provides space to be used for storing this structure\&. When the function succeeds, the resulting
Packit Service ae04f2
\fBlwres_gabnrequest_t\fR
Packit Service ae04f2
is made available through
Packit Service ae04f2
\fI*structp\fR\&.
Packit Service ae04f2
\fBlwres_gabnresponse_parse()\fR
Packit Service ae04f2
offers the same semantics as
Packit Service ae04f2
\fBlwres_gabnrequest_parse()\fR
Packit Service ae04f2
except it yields a
Packit Service ae04f2
\fBlwres_gabnresponse_t\fR
Packit Service ae04f2
structure\&.
Packit Service ae04f2
.PP
Packit Service ae04f2
\fBlwres_gabnresponse_free()\fR
Packit Service ae04f2
and
Packit Service ae04f2
\fBlwres_gabnrequest_free()\fR
Packit Service ae04f2
release the memory in resolver context
Packit Service ae04f2
\fIctx\fR
Packit Service ae04f2
that was allocated to the
Packit Service ae04f2
\fBlwres_gabnresponse_t\fR
Packit Service ae04f2
or
Packit Service ae04f2
\fBlwres_gabnrequest_t\fR
Packit Service ae04f2
structures referenced via
Packit Service ae04f2
\fIstructp\fR\&. Any memory associated with ancillary buffers and strings for those structures is also discarded\&.
Packit Service ae04f2
.SH "RETURN VALUES"
Packit Service ae04f2
.PP
Packit Service ae04f2
The getaddrbyname opcode functions
Packit Service ae04f2
\fBlwres_gabnrequest_render()\fR,
Packit Service ae04f2
\fBlwres_gabnresponse_render()\fR\fBlwres_gabnrequest_parse()\fR
Packit Service ae04f2
and
Packit Service ae04f2
\fBlwres_gabnresponse_parse()\fR
Packit Service ae04f2
all return
Packit Service ae04f2
\fBLWRES_R_SUCCESS\fR
Packit Service ae04f2
on success\&. They return
Packit Service ae04f2
\fBLWRES_R_NOMEMORY\fR
Packit Service ae04f2
if memory allocation fails\&.
Packit Service ae04f2
\fBLWRES_R_UNEXPECTEDEND\fR
Packit Service ae04f2
is returned if the available space in the buffer
Packit Service ae04f2
\fIb\fR
Packit Service ae04f2
is too small to accommodate the packet header or the
Packit Service ae04f2
\fBlwres_gabnrequest_t\fR
Packit Service ae04f2
and
Packit Service ae04f2
\fBlwres_gabnresponse_t\fR
Packit Service ae04f2
structures\&.
Packit Service ae04f2
\fBlwres_gabnrequest_parse()\fR
Packit Service ae04f2
and
Packit Service ae04f2
\fBlwres_gabnresponse_parse()\fR
Packit Service ae04f2
will return
Packit Service ae04f2
\fBLWRES_R_UNEXPECTEDEND\fR
Packit Service ae04f2
if the buffer is not empty after decoding the received packet\&. These functions will return
Packit Service ae04f2
\fBLWRES_R_FAILURE\fR
Packit Service ae04f2
if
Packit Service ae04f2
\fIpktflags\fR
Packit Service ae04f2
in the packet header structure
Packit Service ae04f2
\fBlwres_lwpacket_t\fR
Packit Service ae04f2
indicate that the packet is not a response to an earlier query\&.
Packit Service ae04f2
.SH "SEE ALSO"
Packit Service ae04f2
.PP
Packit Service ae04f2
\fBlwres_packet\fR(3)
Packit Service ae04f2
.SH "AUTHOR"
Packit Service ae04f2
.PP
Packit Service ae04f2
\fBInternet Systems Consortium, Inc\&.\fR
Packit Service ae04f2
.SH "COPYRIGHT"
Packit Service ae04f2
.br
Packit Service ae04f2
Copyright \(co 2000, 2001, 2004, 2005, 2007, 2014-2016, 2018-2020 Internet Systems Consortium, Inc. ("ISC")
Packit Service ae04f2
.br