Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help

       lwres_nooprequest_render, lwres_noopresponse_render,
       lwres_nooprequest_parse,	lwres_noopresponse_parse,
       lwres_noopresponse_free,	lwres_nooprequest_free - lightweight resolver
       no-op message handling

       #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);

       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 response structure.

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

	   #define LWRES_OPCODE_NOOP	   0x00000000U

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

	   typedef struct {
		   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

       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

       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	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.


       Internet	Systems	Consortium, Inc.

       Copyright (C) 2000, 2001, 2004, 2005, 2007, 2014-2016, 2018-2020
       Internet	Systems	Consortium, Inc. ("ISC")

ISC				  2007-06-18			 LWRES_NOOP(3)


Want to link to this manual page? Use this URL:

home | help