DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

lwres_nooprequest_render(3)




LWRES_NOOP(3)                 BIND9                 LWRES_NOOP(3)


NAME

     lwres_nooprequest_render, lwres_noopresponse_render,
     lwres_nooprequest_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_result_t
                                              lwres_noopresponse_render(lwres_context_t *ctx,
                                              lwres_noopresponse_t *req,
                                              lwres_lwpacket_t *pkt

     lwres_result_t lwres_nooprequest_parse(lwres_context_t *ctx,
                                            lwres_buffer_t *b,
                                            lwres_lwpacket_t *pkt

     lwres_result_t
                                             lwres_noopresponse_parse(lwres_context_t *ctx,
                                             lwres_buffer_t *b,
                                             lwres_lwpacket_t *pkt

     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 function converts a no-op request structure -
     lwres_nooprequest_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 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

ISC                  Last change: 2007-06-18                    1

LWRES_NOOP(3)                 BIND9                 LWRES_NOOP(3)

     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_noopresponse_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_nooprequest_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_noopresponse_t or lwres_nooprequest_t
     structures referenced via structp.


RETURN VALUES

     The no-op opcode functions lwres_nooprequest_render(),
     lwres_noopresponse_render()lwres_nooprequest_parse() and
     lwres_noopresponse_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

ISC                  Last change: 2007-06-18                    2

LWRES_NOOP(3)                 BIND9                 LWRES_NOOP(3)

     header or the lwres_nooprequest_t and lwres_noopresponse_t
     structures.  lwres_nooprequest_parse() and
     lwres_noopresponse_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 earlier
     query.


SEE ALSO

     lwres_packet(3)


AUTHOR

     Internet Systems Consortium, Inc.


COPYRIGHT

     Copyright 8c9 2004, 2005, 2007, 2014-2016 Internet Systems
     Consortium, Inc. ("ISC")
     Copyright 8c9 2000, 2001 Internet Software Consortium.

ISC                  Last change: 2007-06-18                    3


Man(1) output converted with man2html