ABCDEFGHIJKLMNOPQRSTUVWXYZ

lwres_context_sendrecv

LWRES_CONTEXT(3)                                              LWRES_CONTEXT(3)



NAME
       lwres_context_create,  lwres_context_destroy, lwres_context_nextserial,
       lwres_context_initserial,       lwres_context_freemem,       lwres_con-
       text_allocmem,  lwres_context_sendrecv  -  lightweight resolver context
       management

SYNOPSIS
       #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, lwres_uint32_t
       serial);

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

DESCRIPTION
       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_con-
       text_t  is  returned  throught 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 alloca-
       tion, 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 .Xr 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
       destroyed.

       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_initse-
       rial() and lwres_context_nextserial().  lwres_context_initserial() sets
       the serial number for context *ctx  to  serial.   lwres_context_nextse-
       rial() 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  what-
       ever  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
       mem.

       lwres_context_sendrecv()  performs  I/O  for the context ctx.  Data are
       read and written from the context's socket.  It writes data from  send-
       base  ¿ 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
       *recvd_len.

RETURN VALUES
       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 wait-
       ing for a response.

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



BIND9                            Jun 30, 2000                 LWRES_CONTEXT(3)