ABCDEFGHIJKLMNOPQRSTUVWXYZ

lwres_nooprequest_free

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_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 com-
       plemented by a parse function which converts a packet in canonical for-
       mat 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 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)