lwres_getrrsetbyname.html   [plain text]


<!--
 - Copyright (C) 2000, 2001  Internet Software Consortium.
 - 
 - Permission to use, copy, modify, and distribute this software for any
 - purpose with or without fee is hereby granted, provided that the above
 - copyright notice and this permission notice appear in all copies.
 - 
 - THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
 - DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
 - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
 - INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
 - INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
 - FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
 - NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
 - WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-->
<HTML
><HEAD
><TITLE
>lwres_getrrsetbyname</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.73
"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><H1
><A
NAME="AEN1"
>lwres_getrrsetbyname</A
></H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN8"
></A
><H2
>Name</H2
>lwres_getrrsetbyname, lwres_freerrset&nbsp;--&nbsp;retrieve DNS records</DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN12"
></A
><H2
>Synopsis</H2
><DIV
CLASS="FUNCSYNOPSIS"
><A
NAME="AEN13"
></A
><P
></P
><PRE
CLASS="FUNCSYNOPSISINFO"
>#include &lt;lwres/netdb.h&gt;</PRE
><P
><CODE
><CODE
CLASS="FUNCDEF"
>int
lwres_getrrsetbyname</CODE
>(const char *hostname, unsigned int rdclass, unsigned int rdtype, unsigned int flags, struct rrsetinfo **res);</CODE
></P
><P
><CODE
><CODE
CLASS="FUNCDEF"
>void
lwres_freerrset</CODE
>(struct rrsetinfo *rrset);</CODE
></P
><P
></P
></DIV
><P
>The following structures are used:
<PRE
CLASS="PROGRAMLISTING"
>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 */
};</PRE
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN29"
></A
><H2
>DESCRIPTION</H2
><P
><TT
CLASS="FUNCTION"
>lwres_getrrsetbyname()</TT
>
gets a set of resource records associated with a
<TT
CLASS="PARAMETER"
><I
>hostname</I
></TT
>,

<TT
CLASS="PARAMETER"
><I
>class</I
></TT
>,

and
<TT
CLASS="PARAMETER"
><I
>type</I
></TT
>.

<TT
CLASS="PARAMETER"
><I
>hostname</I
></TT
>
is
a pointer a to null-terminated string.  The
<TT
CLASS="PARAMETER"
><I
>flags</I
></TT
>
field is currently unused and must be zero.</P
><P
>After a successful call to
<TT
CLASS="FUNCTION"
>lwres_getrrsetbyname()</TT
>,

<TT
CLASS="PARAMETER"
><I
>*res</I
></TT
>
is a pointer to an
<SPAN
CLASS="TYPE"
>rrsetinfo</SPAN
>
structure, containing a list of one or more
<SPAN
CLASS="TYPE"
>rdatainfo</SPAN
>
structures containing resource records and potentially another list of
<SPAN
CLASS="TYPE"
>rdatainfo</SPAN
>
structures containing SIG resource records
associated with those records.
The members
<TT
CLASS="CONSTANT"
>rri_rdclass</TT
>
and
<TT
CLASS="CONSTANT"
>rri_rdtype</TT
>
are copied from the parameters.
<TT
CLASS="CONSTANT"
>rri_ttl</TT
>
and
<TT
CLASS="CONSTANT"
>rri_name</TT
>
are properties of the obtained rrset.
The resource records contained in
<TT
CLASS="CONSTANT"
>rri_rdatas</TT
>
and
<TT
CLASS="CONSTANT"
>rri_sigs</TT
>
are in uncompressed DNS wire format.
Properties of the rdataset are represented in the
<TT
CLASS="CONSTANT"
>rri_flags</TT
>
bitfield.  If the RRSET_VALIDATED bit is set, the data has been DNSSEC
validated and the signatures verified.  </P
><P
>All of the information returned by
<TT
CLASS="FUNCTION"
>lwres_getrrsetbyname()</TT
>
is dynamically allocated: the
<TT
CLASS="CONSTANT"
>rrsetinfo</TT
>
and
<TT
CLASS="CONSTANT"
>rdatainfo</TT
>
structures,
and the canonical host name strings pointed to by the
<TT
CLASS="CONSTANT"
>rrsetinfo</TT
>structure.

Memory allocated for the dynamically allocated structures created by
a successful call to
<TT
CLASS="FUNCTION"
>lwres_getrrsetbyname()</TT
>
is released by
<TT
CLASS="FUNCTION"
>lwres_freerrset()</TT
>.

<TT
CLASS="PARAMETER"
><I
>rrset</I
></TT
>
is a pointer to a
<SPAN
CLASS="TYPE"
>struct rrset</SPAN
>
created by a call to
<TT
CLASS="FUNCTION"
>lwres_getrrsetbyname()</TT
>.&#13;</P
><P
></P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN62"
></A
><H2
>RETURN VALUES</H2
><P
><TT
CLASS="FUNCTION"
>lwres_getrrsetbyname()</TT
>
returns zero on success, and one of the following error
codes if an error occurred:
<P
></P
><DIV
CLASS="VARIABLELIST"
><DL
><DT
><TT
CLASS="CONSTANT"
>ERRSET_NONAME</TT
></DT
><DD
><P
>the name does not exist</P
></DD
><DT
><TT
CLASS="CONSTANT"
>ERRSET_NODATA</TT
></DT
><DD
><P
>the name exists, but does not have data of the desired type</P
></DD
><DT
><TT
CLASS="CONSTANT"
>ERRSET_NOMEMORY</TT
></DT
><DD
><P
>memory could not be allocated</P
></DD
><DT
><TT
CLASS="CONSTANT"
>ERRSET_INVAL</TT
></DT
><DD
><P
>a parameter is invalid</P
></DD
><DT
><TT
CLASS="CONSTANT"
>ERRSET_FAIL</TT
></DT
><DD
><P
>other failure</P
></DD
><DT
><TT
CLASS="CONSTANT"
></TT
></DT
><DD
><P
></P
></DD
></DL
></DIV
>&#13;</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN97"
></A
><H2
>SEE ALSO</H2
><P
><SPAN
CLASS="CITEREFENTRY"
><SPAN
CLASS="REFENTRYTITLE"
>lwres</SPAN
>(3)</SPAN
>.</P
></DIV
></BODY
></HTML
>