DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

lwres_string_parse(3)




LWRES_RESUTIL(3)              BIND9              LWRES_RESUTIL(3)


NAME

     lwres_string_parse, lwres_addr_parse, lwres_getaddrsbyname,
     lwres_getnamebyaddr - lightweight resolver utility functions


SYNOPSIS

     #include <lwres/lwres.h>

     lwres_result_t lwres_string_parse(lwres_buffer_t *b,
                                       char **c,
                                       lwres_uint16_t *len

     lwres_result_t lwres_addr_parse(lwres_buffer_t *b,
                                     lwres_addr_t *addr);

     lwres_result_t lwres_getaddrsbyname(lwres_context_t *ctx,
                                         const char *name,
                                         lwres_uint32_t addrtypes

     lwres_result_t lwres_getnamebyaddr(lwres_context_t *ctx,
                                        lwres_uint32_t addrtype,
                                        lwres_uint16_t addrlen


DESCRIPTION

     lwres_string_parse() retrieves a DNS-encoded string starting
     the current pointer of lightweight resolver buffer b: i.e.
     b->current. When the function returns, the address of the
     first byte of the encoded string is returned via *c and the
     length of that string is given by *len. The buffer's current
     pointer is advanced to point at the character following the
     string length, the encoded string, and the trailing NULL
     character.

     lwres_addr_parse() extracts an address from the buffer b.
     The buffer's current pointer b->current is presumed to point
     at an encoded address: the address preceded by a 32-bit
     protocol family identifier and a 16-bit length field. The
     encoded address is copied to addr->address and addr->length
     indicates the size in bytes of the address that was copied.
     b->current is advanced to point at the next byte of
     available data in the buffer following the encoded address.

     lwres_getaddrsbyname() and lwres_getnamebyaddr() use the
     lwres_gnbaresponse_t structure defined below:

         typedef struct {
                 lwres_uint32_t          flags;
                 lwres_uint16_t          naliases;
                 lwres_uint16_t          naddrs;
                 char                   *realname;
                 char                  **aliases;
                 lwres_uint16_t          realnamelen;
                 lwres_uint16_t         *aliaslen;

ISC                  Last change: 2007-06-18                    1

LWRES_RESUTIL(3)              BIND9              LWRES_RESUTIL(3)

                 lwres_addrlist_t        addrs;
                 void                   *base;
                 size_t                  baselen;
         } lwres_gabnresponse_t;

     The contents of this structure are not manipulated directly
     but they are controlled through the lwres_gabn(3) functions.

     The lightweight resolver uses lwres_getaddrsbyname() to
     perform forward lookups. Hostname name is looked up using
     the resolver context ctx for memory allocation.  addrtypes
     is a bitmask indicating which type of addresses are to be
     looked up. Current values for this bitmask are
     LWRES_ADDRTYPE_V4 for IPv4 addresses and LWRES_ADDRTYPE_V6
     for IPv6 addresses. Results of the lookup are returned in
     *structp.

     lwres_getnamebyaddr() performs reverse lookups. Resolver
     context ctx is used for memory allocation. The address type
     is indicated by addrtype:  LWRES_ADDRTYPE_V4 or
     LWRES_ADDRTYPE_V6. The address to be looked up is given by
     addr and its length is addrlen bytes. The result of the
     function call is made available through *structp.


RETURN VALUES

     Successful calls to lwres_string_parse() and
     lwres_addr_parse() return LWRES_R_SUCCESS.  Both functions
     return LWRES_R_FAILURE if the buffer is corrupt or
     LWRES_R_UNEXPECTEDEND if the buffer has less space than
     expected for the components of the encoded string or
     address.

     lwres_getaddrsbyname() returns LWRES_R_SUCCESS on success
     and it returns LWRES_R_NOTFOUND if the hostname name could
     not be found.

     LWRES_R_SUCCESS is returned by a successful call to
     lwres_getnamebyaddr().

     Both lwres_getaddrsbyname() and lwres_getnamebyaddr() return
     LWRES_R_NOMEMORY when memory allocation requests fail and
     LWRES_R_UNEXPECTEDEND if the buffers used for sending
     queries and receiving replies are too small.


SEE ALSO

     lwres_buffer(3), lwres_gabn(3).


AUTHOR

     Internet Systems Consortium, Inc.


COPYRIGHT

     Copyright 8c9 2004, 2005, 2007, 2014-2016 Internet Systems

ISC                  Last change: 2007-06-18                    2

LWRES_RESUTIL(3)              BIND9              LWRES_RESUTIL(3)

     Consortium, Inc. ("ISC")
     Copyright 8c9 2000, 2001 Internet Software Consortium.

ISC                  Last change: 2007-06-18                    3


Man(1) output converted with man2html