lwres_gnbaresponse_render

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
LWRES_GNBA(3)							LWRES_GNBA(3)



NAME
       lwres_gnbarequest_render,   lwres_gnbaresponse_render,	lwres_gnbare-
       quest_parse,    lwres_gnbaresponse_parse,     lwres_gnbaresponse_free,
       lwres_gnbarequest_free - lightweight resolver getnamebyaddress message
       handling

SYNOPSIS
       #include <lwres/lwres.h>

       lwres_result_t lwres_gnbarequest_render(lwres_context_t *ctx,
       lwres_gnbarequest_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);

       lwres_result_t lwres_gnbaresponse_render(lwres_context_t *ctx,
       lwres_gnbaresponse_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);

       lwres_result_t lwres_gnbarequest_parse(lwres_context_t *ctx,
       lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_gnbarequest_t
       **structp);

       lwres_result_t lwres_gnbaresponse_parse(lwres_context_t *ctx,
       lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_gnbaresponse_t
       **structp);

       void lwres_gnbaresponse_free(lwres_context_t *ctx, lwres_gnbare-
       sponse_t **structp);

       void lwres_gnbarequest_free(lwres_context_t *ctx, lwres_gnbarequest_t
       **structp);


DESCRIPTION
       These are low-level routines  for  creating  and	 parsing  lightweight
       resolver address-to-name lookup request and response messages.

       There  are four main functions for the getnamebyaddr opcode.  One ren-
       der  function   converts	  a   getnamebyaddr   request	structure   —
       lwres_gnbarequest_t  — to the lightweight resolver’s canonical format.
       It is complemented by a parse function that converts a packet in	 this
       canonical format to a getnamebyaddr request structure.  Another render
       function converts the getnamebyaddr response structure — lwres_gnbare-
       sponse_t	 to  the  canonical  format.  This is complemented by a parse
       function which converts a packet in canonical  format  to  a  getname-
       byaddr response structure.

       These  structures are defined in lwres/lwres.h.	They are shown below.

       #define LWRES_OPCODE_GETNAMEBYADDR      0x00010002U

       typedef struct {
	       lwres_uint32_t  flags;
	       lwres_addr_t    addr;
       } lwres_gnbarequest_t;

       typedef struct {
	       lwres_uint32_t  flags;
	       lwres_uint16_t  naliases;
	       char	      *realname;
	       char	     **aliases;
	       lwres_uint16_t  realnamelen;
	       lwres_uint16_t *aliaslen;
	       void	      *base;
	       size_t	       baselen;
       } lwres_gnbaresponse_t;


       lwres_gnbarequest_render() uses resolver context ctx to	convert	 get-
       namebyaddr  request  structure  req  to	canonical format.  The packet
       header structure pkt is initialised and transferred to buffer b.	  The
       contents	 of *req are then appended to the buffer in canonical format.
       lwres_gnbaresponse_render() performs the same task, except it converts
       a   getnamebyaddr   response  structure	lwres_gnbaresponse_t  to  the
       lightweight resolver’s canonical format.

       lwres_gnbarequest_parse() uses context ctx to convert the contents  of
       packet  pkt  to	a  lwres_gnbarequest_t	structure.  Buffer b provides
       space to be used for storing this structure.  When the  function	 suc-
       ceeds,  the  resulting  lwres_gnbarequest_t  is made available through
       *structp.  lwres_gnbaresponse_parse() offers  the  same	semantics  as
       lwres_gnbarequest_parse()  except  it  yields  a	 lwres_gnbaresponse_t
       structure.

       lwres_gnbaresponse_free()  and  lwres_gnbarequest_free()	 release  the
       memory in resolver context ctx that was allocated to the lwres_gnbare-
       sponse_t or lwres_gnbarequest_t	structures  referenced	via  structp.
       Any  memory  associated	with  ancillary buffers and strings for those
       structures is also discarded.

RETURN VALUES
       The   getnamebyaddr   opcode   functions	  lwres_gnbarequest_render(),
       lwres_gnbaresponse_render()	  lwres_gnbarequest_parse()	  and
       lwres_gnbaresponse_parse()  all	return	LWRES_R_SUCCESS	 on  success.
       They    return	 LWRES_R_NOMEMORY   if	 memory	  allocation   fails.
       LWRES_R_UNEXPECTEDEND is returned if the available space in the buffer
       b  is  too small to accommodate the packet header or the lwres_gnbare-
       quest_t	 and	lwres_gnbaresponse_t	structures.	lwres_gnbare-
       quest_parse() and lwres_gnbaresponse_parse() will return LWRES_R_UNEX-
       PECTEDEND if the buffer is  not	empty  after  decoding	the  received
       packet.	 These	functions  will return LWRES_R_FAILURE if pktflags in
       the packet header structure lwres_lwpacket_t indicate that the  packet
       is not a response to an earlier query.

SEE ALSO
       lwres_packet(3).



BIND9				 Jun 30, 2000			LWRES_GNBA(3)