lwres_getrrsetbyname, lwres_freerrset — retrieve DNS records
#include <lwres/netdb.h>
| 
int
lwres_getrrsetbyname( | const char * | hostname, | 
| unsigned int | rdclass, | |
| unsigned int | rdtype, | |
| unsigned int | flags, | |
| struct rrsetinfo ** | res ); | 
| 
void
lwres_freerrset( | struct rrsetinfo * | rrset ); | 
The following structures are used:
struct  rdatainfo {
        unsigned int            rdi_length;     /* length of data */
        unsigned char           *rdi_data;      /* record data */
};
struct  rrsetinfo {
        unsigned int            rri_flags;      /* RRSET_VALIDATED... */
        unsigned int            rri_rdclass;    /* class number */
        unsigned int            rri_rdtype;     /* RR type number */
        unsigned int            rri_ttl;        /* time to live */
        unsigned int            rri_nrdatas;    /* size of rdatas array */
        unsigned int            rri_nsigs;      /* size of sigs array */
        char                    *rri_name;      /* canonical name */
        struct rdatainfo        *rri_rdatas;    /* individual records */
        struct rdatainfo        *rri_sigs;      /* individual signatures */
};
lwres_getrrsetbyname()
      gets a set of resource records associated with a
      hostname, class,
      and type.
      hostname is a pointer a to
      null-terminated string.  The flags field
      is currently unused and must be zero.
    
      After a successful call to
      lwres_getrrsetbyname(),
      *res is a pointer to an
      rrsetinfo structure, containing a list of one or
      more rdatainfo structures containing resource
      records and potentially another list of rdatainfo
      structures containing SIG resource records associated with those
      records.  The members rri_rdclass and
      rri_rdtype are copied from the parameters.
      rri_ttl and rri_name
      are properties of the obtained rrset.  The resource records
      contained in rri_rdatas and
      rri_sigs are in uncompressed DNS wire
      format.  Properties of the rdataset are represented in the
      rri_flags bitfield.  If the RRSET_VALIDATED
      bit is set, the data has been DNSSEC validated and the
      signatures verified.
    
      All of the information returned by
      lwres_getrrsetbyname() is dynamically
      allocated: the rrsetinfo and
      rdatainfo structures, and the canonical
      host name strings pointed to by the
      rrsetinfostructure.
      Memory allocated for the dynamically allocated structures
      created by a successful call to
      lwres_getrrsetbyname() is released by
      lwres_freerrset().
      rrset is a pointer to a struct
      rrset created by a call to
      lwres_getrrsetbyname().
    
lwres_getrrsetbyname()
      returns zero on success, and one of the following error codes if
      an error occurred:
      
ERRSET_NONAMEthe name does not exist
ERRSET_NODATAthe name exists, but does not have data of the desired type
ERRSET_NOMEMORYmemory could not be allocated
ERRSET_INVALa parameter is invalid
ERRSET_FAILother failure