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

FreeBSD Manual Pages


home | help

       lwres_context_create, lwres_context_destroy, lwres_context_nextserial,
       lwres_context_initserial, lwres_context_freemem,
       lwres_context_allocmem, lwres_context_sendrecv -	lightweight resolver
       context management

       #include	<lwres/lwres.h>

       lwres_result_t lwres_context_create(lwres_context_t **contextp,
					   void	*arg,
					   lwres_malloc_t malloc_function,
					   lwres_free_t	free_function);

       lwres_result_t lwres_context_destroy(lwres_context_t **contextp);

       void lwres_context_initserial(lwres_context_t *ctx, uint32_t serial);

       uint32_t	lwres_context_nextserial(lwres_context_t *ctx);

       void lwres_context_freemem(lwres_context_t *ctx,	void *mem,
				  size_t len);

       void lwres_context_allocmem(lwres_context_t *ctx, size_t	len);

       void * lwres_context_sendrecv(lwres_context_t *ctx, void	*sendbase,
				     int sendlen, void *recvbase, int recvlen,
				     int *recvd_len);

       lwres_context_create() creates a	lwres_context_t	structure for use in
       lightweight resolver operations.	It holds a socket and other data
       needed for communicating	with a resolver	daemon.	The new
       lwres_context_t is returned through contextp, a pointer to a
       lwres_context_t pointer.	This lwres_context_t pointer must initially be
       NULL, and is modified to	point to the newly created lwres_context_t.

       When the	lightweight resolver needs to perform dynamic memory
       allocation, it will call	malloc_function	to allocate memory and
       free_function to	free it. If malloc_function and	free_function are
       NULL, memory is allocated using malloc(3). and free(3). It is not
       permitted to have a NULL	malloc_function	and a non-NULL free_function
       or vice versa.  arg is passed as	the first parameter to the memory
       allocation functions. If	malloc_function	and free_function are NULL,
       arg is unused and should	be passed as NULL.

       Once memory for the structure has been allocated, it is initialized
       using lwres_conf_init(3)	and returned via *contextp.

       lwres_context_destroy() destroys	a lwres_context_t, closing its socket.
       contextp	is a pointer to	a pointer to the context that is to be
       destroyed. The pointer will be set to NULL when the context has been

       The context holds a serial number that is used to identify resolver
       request packets and associate responses with the	corresponding
       requests. This serial number is controlled using
       lwres_context_initserial() and lwres_context_nextserial().
       lwres_context_initserial() sets the serial number for context *ctx to
       serial.	lwres_context_nextserial() increments the serial number	and
       returns the previous value.

       Memory for a lightweight	resolver context is allocated and freed	using
       lwres_context_allocmem()	and lwres_context_freemem(). These use
       whatever	allocations were defined when the context was created with
       lwres_context_create().	lwres_context_allocmem() allocates len bytes
       of memory and if	successful returns a pointer to	the allocated storage.
       lwres_context_freemem() frees len bytes of space	starting at location

       lwres_context_sendrecv()	performs I/O for the context ctx. Data are
       read and	written	from the context's socket. It writes data from
       sendbase	-- typically a lightweight resolver query packet -- and	waits
       for a reply which is copied to the receive buffer at recvbase. The
       number of bytes that were written to this receive buffer	is returned in

       lwres_context_create() returns LWRES_R_NOMEMORY if memory for the
       struct lwres_context could not be allocated, LWRES_R_SUCCESS otherwise.

       Successful calls	to the memory allocator	lwres_context_allocmem()
       return a	pointer	to the start of	the allocated space. It	returns	NULL
       if memory could not be allocated.

       LWRES_R_SUCCESS is returned when	lwres_context_sendrecv() completes
       successfully.  LWRES_R_IOERROR is returned if an	I/O error occurs and
       LWRES_R_TIMEOUT is returned if lwres_context_sendrecv() times out
       waiting for a response.

       lwres_conf_init(3), malloc(3), free(3).

       Internet	Systems	Consortium, Inc.

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

ISC				  2007-06-18		      LWRES_CONTEXT(3)


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

home | help