lwres_nooprequest_render

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
LWRES_NOOP(3)							LWRES_NOOP(3)



NAME
       lwres_nooprequest_render,   lwres_noopresponse_render,	lwres_noopre-
       quest_parse,    lwres_noopresponse_parse,     lwres_noopresponse_free,
       lwres_nooprequest_free - lightweight resolver no-op message handling

SYNOPSIS
       #include <lwres/lwres.h>

       lwres_result_t lwres_nooprequest_render(lwres_context_t *ctx,
       lwres_nooprequest_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);

       lwres_result_t lwres_noopresponse_render(lwres_context_t *ctx,
       lwres_noopresponse_t *req, lwres_lwpacket_t *pkt, lwres_buffer_t *b);

       lwres_result_t lwres_nooprequest_parse(lwres_context_t *ctx,
       lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_nooprequest_t
       **structp);

       lwres_result_t lwres_noopresponse_parse(lwres_context_t *ctx,
       lwres_buffer_t *b, lwres_lwpacket_t *pkt, lwres_noopresponse_t
       **structp);

       void lwres_noopresponse_free(lwres_context_t *ctx, lwres_noopre-
       sponse_t **structp);

       void lwres_nooprequest_free(lwres_context_t *ctx, lwres_nooprequest_t
       **structp);


DESCRIPTION
       These  are  low-level  routines	for  creating and parsing lightweight
       resolver no-op request and response messages.

       The no-op message is analogous to a ping packet: a packet is  sent  to
       the resolver daemon and is simply echoed back.  The opcode is intended
       to allow a client to determine if the server is operational or not.

       There are four main functions for the no-op opcode.  One render	func-
       tion converts a no-op request structure — lwres_nooprequest_t — to the
       lighweight resolver’s canonical format.	It is complemented by a parse
       function	 that  converts	 a packet in this canonical format to a no-op
       request	structure.   Another  render  function	converts  the	no-op
       response	 structure  —  lwres_noopresponse_t  to the canonical format.
       This is complemented by a parse function which converts	a  packet  in
       canonical format to a no-op response structure.

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

       #define LWRES_OPCODE_NOOP       0x00000000U

       typedef struct {
	       lwres_uint16_t  datalength;
	       unsigned char   *data;
       } lwres_nooprequest_t;

       typedef struct {
	       lwres_uint16_t  datalength;
	       unsigned char   *data;
       } lwres_noopresponse_t;

       Although the structures have  different	types,	they  are  identical.
       This  is because the no-op opcode simply echos whatever data was sent:
       the response is therefore identical to the request.

       lwres_nooprequest_render() uses resolver context ctx to convert	no-op
       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_noopre-
       sponse_render() performs the same task, except  it  converts  a	no-op
       response	 structure lwres_noopresponse_t to the lightweight resolver’s
       canonical format.

       lwres_nooprequest_parse() uses context ctx to convert the contents  of
       packet pkt to a lwres_nooprequest_t structure. Buffer b provides space
       to be used for storing this structure. When the function succeeds, the
       resulting  lwres_nooprequest_t  is  made	 available  through *structp.
       lwres_noopresponse_parse() offers the same semantics as	lwres_noopre-
       quest_parse() except it yields a lwres_noopresponse_t structure.

       lwres_noopresponse_free()  and  lwres_nooprequest_free()	 release  the
       memory in resolver context ctx that was allocated to the lwres_noopre-
       sponse_t or lwres_nooprequest_t structures referenced via structp.

RETURN VALUES
       The  no-op  opcode functions lwres_nooprequest_render(), lwres_noopre-
       sponse_render()	  lwres_nooprequest_parse()	and	lwres_noopre-
       sponse_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 accom-
       modate the packet header or the lwres_nooprequest_t and	lwres_noopre-
       sponse_t	  structures.	lwres_nooprequest_parse()  and	lwres_noopre-
       sponse_parse() will return LWRES_R_UNEXPECTEDEND 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 ear-
       lier query.

SEE ALSO
       lwres_packet(3)



BIND9				 Jun 30, 2000			LWRES_NOOP(3)