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_noopresponse_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 {
       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 mem-
       ory  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)