LWRES_GETRRSETBYNAME(3)

NAME
lwres_getrrsetbyname, lwres_freerrset - retrieve DNS records

SYNOPSIS
#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 */
    };

DESCRIPTION

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 rrsetinfo structure. 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().

RETURN VALUES
lwres_getrrsetbyname() returns zero on success or an error code if an error occurs. The defined error codes are ERRSET_NOMEMORY (memory could not be allocated), ERRSET_INVAL (a parameter is invalid) and ERRSET_FAIL (other failure).

SEE ALSO
lwres(3).