ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/libspf/docs/API/doxygen/html/dns_8c.html
Revision: 1.1
Committed: Tue Nov 13 00:51:24 2007 UTC (18 years, 11 months ago) by root
Content type: text/html
Branch: MAIN
CVS Tags: HEAD
Log Message:
initial import of libspf-1.0.0-p5 from freebsd ports

File Contents

# User Rev Content
1 root 1.1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2     <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3     <title>libSPF v1.0: dns.c File Reference</title>
4     <link href="doxygen.css" rel="stylesheet" type="text/css">
5     </head><body>
6     <!-- Generated by Doxygen 1.3.8 -->
7     <div class="qindex"> <form class="search" action="search.php" method="get">
8     <a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <span class="search"><u>S</u>earch&nbsp;for&nbsp;<input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
9     <h1>dns.c File Reference</h1>DNS Functions. <a href="#_details">More...</a>
10     <p>
11     <code>#include "<a class="el" href="spf_8h-source.html">spf.h</a>"</code><br>
12     <code>#include "<a class="el" href="util_8h-source.html">util.h</a>"</code><br>
13     <code>#include "<a class="el" href="dns_8h-source.html">dns.h</a>"</code><br>
14     <code>#include "../../config.h"</code><br>
15    
16     <p>
17     Include dependency graph for dns.c:<p><center><img src="dns_8c__incl.png" border="0" usemap="#dns.c_map" alt="Include dependency graph"></center>
18     <map name="dns.c_map">
19     <area href="spf_8h.html" shape="rect" coords="7,86,44,105" alt="">
20     <area href="util_8h.html" shape="rect" coords="119,86,156,105" alt="">
21     <area href="dns_8h.html" shape="rect" coords="180,86,223,105" alt="">
22     </map>
23    
24     <p>
25     <a href="dns_8c-source.html">Go to the source code of this file.</a><table border=0 cellpadding=0 cellspacing=0>
26     <tr><td></td></tr>
27     <tr><td colspan=2><br><h2>Functions</h2></td></tr>
28     <tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dns_8c.html#a1">DNS_query</a> (<a class="el" href="structpeer__info__s.html">peer_info_t</a> *p, const char *s, const int T_TYPE, const char *mta)</td></tr>
29    
30     <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Execute a DNS query. <a href="#a1"></a><br></td></tr>
31     <tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dns_8c.html#a2">DNS_txt_answer</a> (int16_t ancount, const u_char *msg_ptr, const u_char *eom_ptr, u_char *rd_ptr, char *buf, int *ttl)</td></tr>
32    
33     <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Process a DNS message of type T_TXT. <a href="#a2"></a><br></td></tr>
34     <tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dns_8c.html#a3">DNS_mx_answer</a> (int16_t ancount, const u_char *msg_ptr, const u_char *eom_ptr, u_char *rd_ptr, char *buf, int *ttl)</td></tr>
35    
36     <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Process a DNS message of type T_MX. <a href="#a3"></a><br></td></tr>
37     <tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="spf_8h.html#a35">SPF_BOOL</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dns_8c.html#a4">DNS_ptr_answer</a> (<a class="el" href="structpeer__info__s.html">peer_info_t</a> *p, int16_t ancount, const u_char *msg_ptr, const u_char *eom_ptr, u_char *rd_ptr, char *buf, const char *mta, int *ttl)</td></tr>
38    
39     <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Process a DNS message of type T_PTR. <a href="#a4"></a><br></td></tr>
40     <tr><td class="memItemLeft" nowrap align=right valign=top>char *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dns_8c.html#a5">DNS_cname_answer</a> (int16_t ancount, const u_char *msg_ptr, const u_char *eom_ptr, u_char *rd_ptr, char *buf, int *ttl)</td></tr>
41    
42     <tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Process a DNS message of type T_MX. <a href="#a5"></a><br></td></tr>
43     <tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="spf_8h.html#a35">SPF_BOOL</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dns_8c.html#a6">DNS_check_client_reverse</a> (<a class="el" href="structpeer__info__s.html">peer_info_t</a> *p)</td></tr>
44    
45     <tr><td colspan=2><br><h2>Variables</h2></td></tr>
46     <tr><td class="memItemLeft" nowrap align=right valign=top>void *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dns_8c.html#a0">dns_mutex</a></td></tr>
47    
48     </table>
49     <hr><a name="_details"></a><h2>Detailed Description</h2>
50     DNS Functions.
51     <p>
52     <a class="el" href="dns_8c.html">dns.c</a> contains functions relating to the execution and processing of DNS queries. Each particular DNS record type has a unique function that is designed to process such a response.
53     <p>
54     Definition in file <a class="el" href="dns_8c-source.html">dns.c</a>.<hr><h2>Function Documentation</h2>
55     <a class="anchor" name="a6" doxytag="dns.c::DNS_check_client_reverse" ></a><p>
56     <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
57     <tr>
58     <td class="mdRow">
59     <table cellpadding="0" cellspacing="0" border="0">
60     <tr>
61     <td class="md" nowrap valign="top"> <a class="el" href="spf_8h.html#a35">SPF_BOOL</a> DNS_check_client_reverse </td>
62     <td class="md" valign="top">(&nbsp;</td>
63     <td class="md" nowrap valign="top"><a class="el" href="structpeer__info__s.html">peer_info_t</a> *&nbsp;</td>
64     <td class="mdname1" valign="top" nowrap> <em>p</em> </td>
65     <td class="md" valign="top">&nbsp;)&nbsp;</td>
66     <td class="md" nowrap></td>
67     </tr>
68     </table>
69     </td>
70     </tr>
71     </table>
72     <table cellspacing=5 cellpadding=0 border=0>
73     <tr>
74     <td>
75     &nbsp;
76     </td>
77     <td>
78    
79     <p>
80     Definition at line <a class="el" href="dns_8c-source.html#l00975">975</a> of file <a class="el" href="dns_8c-source.html">dns.c</a>.
81     <p>
82     References <a class="el" href="spf_8h.html#a46">peer_info_t</a>, <a class="el" href="spf_8h-source.html#l00351">peer_info_s::r_ip</a>, <a class="el" href="spf_8h-source.html#l00352">peer_info_s::r_vhname</a>, <a class="el" href="spf_8h.html#a35">SPF_BOOL</a>, <a class="el" href="spf_8h.html#a87a49">SPF_FALSE</a>, <a class="el" href="dns_8h-source.html#l00089">SPF_MAXCDNAME</a>, <a class="el" href="dns_8h-source.html#l00088">SPF_MAXDNAME</a>, <a class="el" href="dns_8h-source.html#l00087">SPF_PACKETSZ</a>, <a class="el" href="spf_8h.html#a87a50">SPF_TRUE</a>, <a class="el" href="util_8c-source.html#l01843">UTIL_rev_addr()</a>, <a class="el" href="util_8c-source.html#l02100">UTIL_validate_hostname()</a>, <a class="el" href="util_8h-source.html#l00154">xepprintf</a>, <a class="el" href="util_8h-source.html#l00150">xeprintf</a>, <a class="el" href="util_8h-source.html#l00127">xfree</a>, <a class="el" href="util_8h-source.html#l00146">xpprintf</a>, <a class="el" href="util_8h-source.html#l00129">xstrndup</a>, and <a class="el" href="util_8h-source.html#l00142">xvprintf</a>.
83     <p>
84     Referenced by <a class="el" href="macro_8c-source.html#l00301">MACRO_process()</a>.
85     <p>
86     Here is the call graph for this function:<p><center><img src="dns_8c_a6_cgraph.png" border="0" usemap="#dns_8c_a6_cgraph_map" alt=""></center>
87     <map name="dns_8c_a6_cgraph_map">
88     <area href="util_8h.html#a50" shape="rect" coords="271,5,372,23" alt="">
89     <area href="util_8h.html#a54" shape="rect" coords="243,47,400,66" alt="">
90     <area href="util_8h.html#a47" shape="rect" coords="451,26,571,45" alt="">
91     <area href="util_8h.html#a52" shape="rect" coords="460,69,561,87" alt="">
92     <area href="util_8h.html#a35" shape="rect" coords="620,26,700,45" alt="">
93     </map>
94     </td>
95     </tr>
96     </table>
97     <a class="anchor" name="a5" doxytag="dns.c::DNS_cname_answer" ></a><p>
98     <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
99     <tr>
100     <td class="mdRow">
101     <table cellpadding="0" cellspacing="0" border="0">
102     <tr>
103     <td class="md" nowrap valign="top"> char * DNS_cname_answer </td>
104     <td class="md" valign="top">(&nbsp;</td>
105     <td class="md" nowrap valign="top">int16_t&nbsp;</td>
106     <td class="mdname" nowrap> <em>ancount</em>, </td>
107     </tr>
108     <tr>
109     <td class="md" nowrap align="right"></td>
110     <td></td>
111     <td class="md" nowrap>const u_char *&nbsp;</td>
112     <td class="mdname" nowrap> <em>msg_ptr</em>, </td>
113     </tr>
114     <tr>
115     <td class="md" nowrap align="right"></td>
116     <td></td>
117     <td class="md" nowrap>const u_char *&nbsp;</td>
118     <td class="mdname" nowrap> <em>eom_ptr</em>, </td>
119     </tr>
120     <tr>
121     <td class="md" nowrap align="right"></td>
122     <td></td>
123     <td class="md" nowrap>u_char *&nbsp;</td>
124     <td class="mdname" nowrap> <em>rd_ptr</em>, </td>
125     </tr>
126     <tr>
127     <td class="md" nowrap align="right"></td>
128     <td></td>
129     <td class="md" nowrap>char *&nbsp;</td>
130     <td class="mdname" nowrap> <em>buf</em>, </td>
131     </tr>
132     <tr>
133     <td class="md" nowrap align="right"></td>
134     <td></td>
135     <td class="md" nowrap>int *&nbsp;</td>
136     <td class="mdname" nowrap> <em>ttl</em></td>
137     </tr>
138     <tr>
139     <td></td>
140     <td class="md">)&nbsp;</td>
141     <td class="md" colspan="2"></td>
142     </tr>
143     </table>
144     </td>
145     </tr>
146     </table>
147     <table cellspacing=5 cellpadding=0 border=0>
148     <tr>
149     <td>
150     &nbsp;
151     </td>
152     <td>
153    
154     <p>
155     Process a DNS message of type T_MX.
156     <p>
157     <dl compact><dt><b>Parameters:</b></dt><dd>
158     <table border="0" cellspacing="2" cellpadding="0">
159     <tr><td></td><td valign=top><em>ancount</em>&nbsp;</td><td>Answer count </td></tr>
160     <tr><td></td><td valign=top><em>msg_ptr</em>&nbsp;</td><td>DNS message </td></tr>
161     <tr><td></td><td valign=top><em>eom_ptr</em>&nbsp;</td><td>Pointer to the end of the DNS message </td></tr>
162     <tr><td></td><td valign=top><em>rd_ptr</em>&nbsp;</td><td>Pointer to a position in the DNS message </td></tr>
163     <tr><td></td><td valign=top><em>buf</em>&nbsp;</td><td>Utiltiy buffer </td></tr>
164     <tr><td></td><td valign=top><em>ttl</em>&nbsp;</td><td>Time To Live value of the DNS message </td></tr>
165     </table>
166     </dl>
167     Author: Teddy &lt;<a href="mailto:teddy@teddy.ch">teddy@teddy.ch</a>&gt;<br>
168     <p>
169     Date: 29/04/04<br>
170     Date: 02/20/04 - Added cache by Travis Anderson &lt;<a href="mailto:tanderson@codeshare.ca">tanderson@codeshare.ca</a>&gt;<br>
171     <p>
172     Desc:<br>
173     SPF_PACKETSZ bytes are allocated and then filled with chars. This buffer is then used in a TXT DNS query using data from the passed peer_info_t structure. Upon success this buffer is re-cast as a char * and then a pointer to this memory is returned. Upon failure a NULL pointer is returned. Definition at line <a class="el" href="dns_8c-source.html#l00866">866</a> of file <a class="el" href="dns_8c-source.html">dns.c</a>.
174     <p>
175     References <a class="el" href="main_8c-source.html#l00059">h_errno</a>, <a class="el" href="dns_8h-source.html#l00089">SPF_MAXCDNAME</a>, <a class="el" href="util_8h-source.html#l00154">xepprintf</a>, <a class="el" href="util_8h-source.html#l00125">xmalloc</a>, <a class="el" href="util_8h-source.html#l00146">xpprintf</a>, <a class="el" href="util_8h-source.html#l00126">xrealloc</a>, and <a class="el" href="util_8h-source.html#l00142">xvprintf</a>.
176     <p>
177     Referenced by <a class="el" href="dns_8c-source.html#l00217">DNS_query()</a>. </td>
178     </tr>
179     </table>
180     <a class="anchor" name="a3" doxytag="dns.c::DNS_mx_answer" ></a><p>
181     <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
182     <tr>
183     <td class="mdRow">
184     <table cellpadding="0" cellspacing="0" border="0">
185     <tr>
186     <td class="md" nowrap valign="top"> char * DNS_mx_answer </td>
187     <td class="md" valign="top">(&nbsp;</td>
188     <td class="md" nowrap valign="top">int16_t&nbsp;</td>
189     <td class="mdname" nowrap> <em>ancount</em>, </td>
190     </tr>
191     <tr>
192     <td class="md" nowrap align="right"></td>
193     <td></td>
194     <td class="md" nowrap>const u_char *&nbsp;</td>
195     <td class="mdname" nowrap> <em>msg_ptr</em>, </td>
196     </tr>
197     <tr>
198     <td class="md" nowrap align="right"></td>
199     <td></td>
200     <td class="md" nowrap>const u_char *&nbsp;</td>
201     <td class="mdname" nowrap> <em>eom_ptr</em>, </td>
202     </tr>
203     <tr>
204     <td class="md" nowrap align="right"></td>
205     <td></td>
206     <td class="md" nowrap>u_char *&nbsp;</td>
207     <td class="mdname" nowrap> <em>rd_ptr</em>, </td>
208     </tr>
209     <tr>
210     <td class="md" nowrap align="right"></td>
211     <td></td>
212     <td class="md" nowrap>char *&nbsp;</td>
213     <td class="mdname" nowrap> <em>buf</em>, </td>
214     </tr>
215     <tr>
216     <td class="md" nowrap align="right"></td>
217     <td></td>
218     <td class="md" nowrap>int *&nbsp;</td>
219     <td class="mdname" nowrap> <em>ttl</em></td>
220     </tr>
221     <tr>
222     <td></td>
223     <td class="md">)&nbsp;</td>
224     <td class="md" colspan="2"></td>
225     </tr>
226     </table>
227     </td>
228     </tr>
229     </table>
230     <table cellspacing=5 cellpadding=0 border=0>
231     <tr>
232     <td>
233     &nbsp;
234     </td>
235     <td>
236    
237     <p>
238     Process a DNS message of type T_MX.
239     <p>
240     <dl compact><dt><b>Parameters:</b></dt><dd>
241     <table border="0" cellspacing="2" cellpadding="0">
242     <tr><td></td><td valign=top><em>ancount</em>&nbsp;</td><td>Answer count </td></tr>
243     <tr><td></td><td valign=top><em>msg_ptr</em>&nbsp;</td><td>DNS message </td></tr>
244     <tr><td></td><td valign=top><em>eom_ptr</em>&nbsp;</td><td>Pointer to the end of the DNS message </td></tr>
245     <tr><td></td><td valign=top><em>rd_ptr</em>&nbsp;</td><td>Pointer to a position in the DNS message </td></tr>
246     <tr><td></td><td valign=top><em>buf</em>&nbsp;</td><td>Utiltiy buffer </td></tr>
247     <tr><td></td><td valign=top><em>ttl</em>&nbsp;</td><td>Time To Live value of the DNS message </td></tr>
248     </table>
249     </dl>
250     Author: James Couzens &lt;<a href="mailto:jcouzens@codeshare.ca">jcouzens@codeshare.ca</a>&gt;<br>
251     <p>
252     Date: 01/02/04<br>
253     Date: 02/20/04 - Added cache by Travis Anderson &lt;<a href="mailto:tanderson@codeshare.ca">tanderson@codeshare.ca</a>&gt;<br>
254     <p>
255     Desc: SPF_PACKETSZ bytes are allocated and then filled with chars. This buffer is then used in an MX DNS query using data from the passed peer_info_t structure. Upon success this buffer is re-cast as a char * and then a pointer to this memory is returned. Upon failure a NULL pointer is returned. Definition at line <a class="el" href="dns_8c-source.html#l00611">611</a> of file <a class="el" href="dns_8c-source.html">dns.c</a>.
256     <p>
257     References <a class="el" href="main_8c-source.html#l00059">h_errno</a>, <a class="el" href="dns_8h-source.html#l00089">SPF_MAXCDNAME</a>, <a class="el" href="util_8h-source.html#l00125">xmalloc</a>, <a class="el" href="util_8h-source.html#l00138">xprintf</a>, <a class="el" href="util_8h-source.html#l00126">xrealloc</a>, and <a class="el" href="util_8h-source.html#l00142">xvprintf</a>.
258     <p>
259     Referenced by <a class="el" href="dns_8c-source.html#l00217">DNS_query()</a>. </td>
260     </tr>
261     </table>
262     <a class="anchor" name="a4" doxytag="dns.c::DNS_ptr_answer" ></a><p>
263     <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
264     <tr>
265     <td class="mdRow">
266     <table cellpadding="0" cellspacing="0" border="0">
267     <tr>
268     <td class="md" nowrap valign="top"> <a class="el" href="spf_8h.html#a35">SPF_BOOL</a> DNS_ptr_answer </td>
269     <td class="md" valign="top">(&nbsp;</td>
270     <td class="md" nowrap valign="top"><a class="el" href="structpeer__info__s.html">peer_info_t</a> *&nbsp;</td>
271     <td class="mdname" nowrap> <em>p</em>, </td>
272     </tr>
273     <tr>
274     <td class="md" nowrap align="right"></td>
275     <td></td>
276     <td class="md" nowrap>int16_t&nbsp;</td>
277     <td class="mdname" nowrap> <em>ancount</em>, </td>
278     </tr>
279     <tr>
280     <td class="md" nowrap align="right"></td>
281     <td></td>
282     <td class="md" nowrap>const u_char *&nbsp;</td>
283     <td class="mdname" nowrap> <em>msg_ptr</em>, </td>
284     </tr>
285     <tr>
286     <td class="md" nowrap align="right"></td>
287     <td></td>
288     <td class="md" nowrap>const u_char *&nbsp;</td>
289     <td class="mdname" nowrap> <em>eom_ptr</em>, </td>
290     </tr>
291     <tr>
292     <td class="md" nowrap align="right"></td>
293     <td></td>
294     <td class="md" nowrap>u_char *&nbsp;</td>
295     <td class="mdname" nowrap> <em>rd_ptr</em>, </td>
296     </tr>
297     <tr>
298     <td class="md" nowrap align="right"></td>
299     <td></td>
300     <td class="md" nowrap>char *&nbsp;</td>
301     <td class="mdname" nowrap> <em>buf</em>, </td>
302     </tr>
303     <tr>
304     <td class="md" nowrap align="right"></td>
305     <td></td>
306     <td class="md" nowrap>const char *&nbsp;</td>
307     <td class="mdname" nowrap> <em>mta</em>, </td>
308     </tr>
309     <tr>
310     <td class="md" nowrap align="right"></td>
311     <td></td>
312     <td class="md" nowrap>int *&nbsp;</td>
313     <td class="mdname" nowrap> <em>ttl</em></td>
314     </tr>
315     <tr>
316     <td></td>
317     <td class="md">)&nbsp;</td>
318     <td class="md" colspan="2"></td>
319     </tr>
320     </table>
321     </td>
322     </tr>
323     </table>
324     <table cellspacing=5 cellpadding=0 border=0>
325     <tr>
326     <td>
327     &nbsp;
328     </td>
329     <td>
330    
331     <p>
332     Process a DNS message of type T_PTR.
333     <p>
334     <dl compact><dt><b>Parameters:</b></dt><dd>
335     <table border="0" cellspacing="2" cellpadding="0">
336     <tr><td></td><td valign=top><em>p</em>&nbsp;</td><td>Global information structure containing client information </td></tr>
337     <tr><td></td><td valign=top><em>ancount</em>&nbsp;</td><td>Answer count </td></tr>
338     <tr><td></td><td valign=top><em>msg_ptr</em>&nbsp;</td><td>DNS message </td></tr>
339     <tr><td></td><td valign=top><em>eom_ptr</em>&nbsp;</td><td>Pointer to the end of the DNS message </td></tr>
340     <tr><td></td><td valign=top><em>rd_ptr</em>&nbsp;</td><td>Pointer to a position in the DNS message </td></tr>
341     <tr><td></td><td valign=top><em>buf</em>&nbsp;</td><td>Utiltiy buffer </td></tr>
342     <tr><td></td><td valign=top><em>mta</em>&nbsp;</td><td>IP address of the authoritative MX </td></tr>
343     <tr><td></td><td valign=top><em>ttl</em>&nbsp;</td><td>Time To Live value of the DNS message </td></tr>
344     </table>
345     </dl>
346     Author: James Couzens &lt;<a href="mailto:jcouzens@codeshare.ca">jcouzens@codeshare.ca</a>&gt;<br>
347     <p>
348     Date: 01/02/04<br>
349     Date: 02/20/04 - Added cache by Travis Anderson &lt;<a href="mailto:tanderson@codeshare.ca">tanderson@codeshare.ca</a>&gt;<br>
350     <p>
351     Desc: A reverse lookup on an IP address leads to a lookup per returned PTR answer to see if the returned answer matches. The forward lookups are handled by a separate function which calls gethostbyname. Upon a single successful match of a forward lookup with a reverse lookup, returns SPF_TRUE. Returns SPF_FALSE upon failure. Definition at line <a class="el" href="dns_8c-source.html#l00716">716</a> of file <a class="el" href="dns_8c-source.html">dns.c</a>.
352     <p>
353     References <a class="el" href="main_8c-source.html#l00059">h_errno</a>, <a class="el" href="spf_8h.html#a46">peer_info_t</a>, <a class="el" href="spf_8h.html#a35">SPF_BOOL</a>, <a class="el" href="spf_8h.html#a87a49">SPF_FALSE</a>, <a class="el" href="dns_8h-source.html#l00089">SPF_MAXCDNAME</a>, <a class="el" href="spf_8h.html#a87a50">SPF_TRUE</a>, <a class="el" href="util_8c-source.html#l02100">UTIL_validate_hostname()</a>, <a class="el" href="util_8h-source.html#l00154">xepprintf</a>, and <a class="el" href="util_8h-source.html#l00142">xvprintf</a>.
354     <p>
355     Referenced by <a class="el" href="dns_8c-source.html#l00217">DNS_query()</a>.
356     <p>
357     Here is the call graph for this function:<p><center><img src="dns_8c_a4_cgraph.png" border="0" usemap="#dns_8c_a4_cgraph_map" alt=""></center>
358     <map name="dns_8c_a4_cgraph_map">
359     <area href="util_8h.html#a54" shape="rect" coords="181,26,339,45" alt="">
360     <area href="util_8h.html#a47" shape="rect" coords="389,5,509,24" alt="">
361     <area href="util_8h.html#a52" shape="rect" coords="399,48,500,66" alt="">
362     <area href="util_8h.html#a35" shape="rect" coords="559,5,639,24" alt="">
363     </map>
364     </td>
365     </tr>
366     </table>
367     <a class="anchor" name="a1" doxytag="dns.c::DNS_query" ></a><p>
368     <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
369     <tr>
370     <td class="mdRow">
371     <table cellpadding="0" cellspacing="0" border="0">
372     <tr>
373     <td class="md" nowrap valign="top"> char * DNS_query </td>
374     <td class="md" valign="top">(&nbsp;</td>
375     <td class="md" nowrap valign="top"><a class="el" href="structpeer__info__s.html">peer_info_t</a> *&nbsp;</td>
376     <td class="mdname" nowrap> <em>p</em>, </td>
377     </tr>
378     <tr>
379     <td class="md" nowrap align="right"></td>
380     <td></td>
381     <td class="md" nowrap>const char *&nbsp;</td>
382     <td class="mdname" nowrap> <em>s</em>, </td>
383     </tr>
384     <tr>
385     <td class="md" nowrap align="right"></td>
386     <td></td>
387     <td class="md" nowrap>const int&nbsp;</td>
388     <td class="mdname" nowrap> <em>T_TYPE</em>, </td>
389     </tr>
390     <tr>
391     <td class="md" nowrap align="right"></td>
392     <td></td>
393     <td class="md" nowrap>const char *&nbsp;</td>
394     <td class="mdname" nowrap> <em>mta</em></td>
395     </tr>
396     <tr>
397     <td></td>
398     <td class="md">)&nbsp;</td>
399     <td class="md" colspan="2"></td>
400     </tr>
401     </table>
402     </td>
403     </tr>
404     </table>
405     <table cellspacing=5 cellpadding=0 border=0>
406     <tr>
407     <td>
408     &nbsp;
409     </td>
410     <td>
411    
412     <p>
413     Execute a DNS query.
414     <p>
415     <dl compact><dt><b>Parameters:</b></dt><dd>
416     <table border="0" cellspacing="2" cellpadding="0">
417     <tr><td></td><td valign=top><em>p</em>&nbsp;</td><td>Global information structure containing client information </td></tr>
418     <tr><td></td><td valign=top><em>s</em>&nbsp;</td><td>Domain name with which to perform the query against </td></tr>
419     <tr><td></td><td valign=top><em>T_TYPE</em>&nbsp;</td><td>Type of DNS record to lookup (eg: T_TXT, T_PTR, T_A, etc..) </td></tr>
420     <tr><td></td><td valign=top><em>mta</em>&nbsp;</td><td>Used by DNS_ptr_answer in validation of an SPF ptr mechanism </td></tr>
421     </table>
422     </dl>
423     Author: James Couzens &lt;<a href="mailto:jcouzens@codeshare.ca">jcouzens@codeshare.ca</a>&gt;<br>
424     Author: Travis Anderson &lt;<a href="mailto:tanderson@codeshare.ca">tanderson@codeshare.ca</a>&gt;<br>
425     <p>
426     Date: 12/10/03<br>
427     Date: 02/20/04 - Added cache by Travis Anderson &lt;<a href="mailto:tanderson@codeshare.ca">tanderson@codeshare.ca</a>&gt;<br>
428     <p>
429     Desc: Executes a DNS query of type T_TYPE and then calls the appropriate answer parsing function based on that type. Returns a pointer to allocated memory (a string of space delimited records). Upon failure returns NULL. Definition at line <a class="el" href="dns_8c-source.html#l00217">217</a> of file <a class="el" href="dns_8c-source.html">dns.c</a>.
430     <p>
431     References <a class="el" href="dns_8c-source.html#l00866">DNS_cname_answer()</a>, <a class="el" href="dns_8c-source.html#l00611">DNS_mx_answer()</a>, <a class="el" href="dns_8c-source.html#l00716">DNS_ptr_answer()</a>, <a class="el" href="dns_8c-source.html#l00419">DNS_txt_answer()</a>, <a class="el" href="spf_8h-source.html#l00359">peer_info_s::error</a>, <a class="el" href="main_8c-source.html#l00059">h_errno</a>, <a class="el" href="spf_8h.html#a46">peer_info_t</a>, <a class="el" href="spf_8h.html#a88a55">SPF_ERROR</a>, <a class="el" href="spf_8h.html#a87a49">SPF_FALSE</a>, <a class="el" href="spf_8h-source.html#l00085">SPF_MAX_ERROR</a>, <a class="el" href="dns_8h-source.html#l00088">SPF_MAXDNAME</a>, <a class="el" href="spf_8h.html#a88a52">SPF_NONE</a>, <a class="el" href="dns_8h-source.html#l00087">SPF_PACKETSZ</a>, <a class="el" href="spf_8h.html#a87a50">SPF_TRUE</a>, <a class="el" href="util_8c-source.html#l01309">UTIL_assoc_prefix()</a>, <a class="el" href="util_8h-source.html#l00154">xepprintf</a>, <a class="el" href="util_8h-source.html#l00138">xprintf</a>, and <a class="el" href="util_8h-source.html#l00142">xvprintf</a>.
432     <p>
433     Referenced by <a class="el" href="main_8c-source.html#l00721">SPF_parse_policy()</a>, <a class="el" href="main_8c-source.html#l00570">SPF_policy_main_rec()</a>, <a class="el" href="util_8c-source.html#l00914">UTIL_mx_cmp()</a>, <a class="el" href="util_8c-source.html#l01135">UTIL_ptr_cmp()</a>, and <a class="el" href="util_8c-source.html#l02038">UTIL_validate_ptr()</a>.
434     <p>
435     Here is the call graph for this function:<p><center><img src="dns_8c_a1_cgraph.png" border="0" usemap="#dns_8c_a1_cgraph_map" alt=""></center>
436     <map name="dns_8c_a1_cgraph_map">
437     <area href="dns_8h.html#a12" shape="rect" coords="149,5,288,24" alt="">
438     <area href="dns_8h.html#a10" shape="rect" coords="160,48,277,66" alt="">
439     <area href="dns_8h.html#a11" shape="rect" coords="163,90,275,109" alt="">
440     <area href="util_8h.html#a47" shape="rect" coords="547,134,667,153" alt="">
441     <area href="dns_8h.html#a9" shape="rect" coords="163,184,275,202" alt="">
442     <area href="util_8h.html#a54" shape="rect" coords="339,90,496,109" alt="">
443     <area href="util_8h.html#a52" shape="rect" coords="556,90,657,109" alt="">
444     <area href="util_8h.html#a35" shape="rect" coords="716,134,796,153" alt="">
445     </map>
446     </td>
447     </tr>
448     </table>
449     <a class="anchor" name="a2" doxytag="dns.c::DNS_txt_answer" ></a><p>
450     <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
451     <tr>
452     <td class="mdRow">
453     <table cellpadding="0" cellspacing="0" border="0">
454     <tr>
455     <td class="md" nowrap valign="top"> char * DNS_txt_answer </td>
456     <td class="md" valign="top">(&nbsp;</td>
457     <td class="md" nowrap valign="top">int16_t&nbsp;</td>
458     <td class="mdname" nowrap> <em>ancount</em>, </td>
459     </tr>
460     <tr>
461     <td class="md" nowrap align="right"></td>
462     <td></td>
463     <td class="md" nowrap>const u_char *&nbsp;</td>
464     <td class="mdname" nowrap> <em>msg_ptr</em>, </td>
465     </tr>
466     <tr>
467     <td class="md" nowrap align="right"></td>
468     <td></td>
469     <td class="md" nowrap>const u_char *&nbsp;</td>
470     <td class="mdname" nowrap> <em>eom_ptr</em>, </td>
471     </tr>
472     <tr>
473     <td class="md" nowrap align="right"></td>
474     <td></td>
475     <td class="md" nowrap>u_char *&nbsp;</td>
476     <td class="mdname" nowrap> <em>rd_ptr</em>, </td>
477     </tr>
478     <tr>
479     <td class="md" nowrap align="right"></td>
480     <td></td>
481     <td class="md" nowrap>char *&nbsp;</td>
482     <td class="mdname" nowrap> <em>buf</em>, </td>
483     </tr>
484     <tr>
485     <td class="md" nowrap align="right"></td>
486     <td></td>
487     <td class="md" nowrap>int *&nbsp;</td>
488     <td class="mdname" nowrap> <em>ttl</em></td>
489     </tr>
490     <tr>
491     <td></td>
492     <td class="md">)&nbsp;</td>
493     <td class="md" colspan="2"></td>
494     </tr>
495     </table>
496     </td>
497     </tr>
498     </table>
499     <table cellspacing=5 cellpadding=0 border=0>
500     <tr>
501     <td>
502     &nbsp;
503     </td>
504     <td>
505    
506     <p>
507     Process a DNS message of type T_TXT.
508     <p>
509     <dl compact><dt><b>Parameters:</b></dt><dd>
510     <table border="0" cellspacing="2" cellpadding="0">
511     <tr><td></td><td valign=top><em>ancount</em>&nbsp;</td><td>Answer count </td></tr>
512     <tr><td></td><td valign=top><em>msg_ptr</em>&nbsp;</td><td>DNS message </td></tr>
513     <tr><td></td><td valign=top><em>eom_ptr</em>&nbsp;</td><td>Pointer to the end of the DNS message </td></tr>
514     <tr><td></td><td valign=top><em>rd_ptr</em>&nbsp;</td><td>Pointer to a position in the DNS message </td></tr>
515     <tr><td></td><td valign=top><em>buf</em>&nbsp;</td><td>Utiltiy buffer </td></tr>
516     <tr><td></td><td valign=top><em>ttl</em>&nbsp;</td><td>Time To Live value of the DNS message </td></tr>
517     </table>
518     </dl>
519     Author: James Couzens &lt;<a href="mailto:jcouzens@codeshare.ca">jcouzens@codeshare.ca</a>&gt;<br>
520     <p>
521     Date: 01/02/04<br>
522     Date: 02/23/04 - Bugfix from Albert Weichselbraun &lt;<a href="mailto:albert@atnet.at">albert@atnet.at</a>&gt;<br>
523     Date: 02/20/04 - Added cache by Travis Anderson &lt;<a href="mailto:tanderson@codeshare.ca">tanderson@codeshare.ca</a>&gt;<br>
524     <p>
525     Desc: SPF_PACKETSZ bytes are allocated and then filled with chars. This buffer is then used in a TXT DNS query using data from the passed peer_info_t structure. Upon success this buffer is re-cast as a char * and then a pointer to this memory is returned. Upon failure a NULL pointer is returned. Definition at line <a class="el" href="dns_8c-source.html#l00419">419</a> of file <a class="el" href="dns_8c-source.html">dns.c</a>.
526     <p>
527     References <a class="el" href="main_8c-source.html#l00059">h_errno</a>, <a class="el" href="spf_8h-source.html#l00072">SPF_MAX_STR</a>, <a class="el" href="dns_8h-source.html#l00089">SPF_MAXCDNAME</a>, <a class="el" href="util_8h-source.html#l00154">xepprintf</a>, <a class="el" href="util_8h-source.html#l00127">xfree</a>, <a class="el" href="util_8h-source.html#l00125">xmalloc</a>, <a class="el" href="util_8h-source.html#l00146">xpprintf</a>, <a class="el" href="util_8h-source.html#l00126">xrealloc</a>, <a class="el" href="util_8h-source.html#l00129">xstrndup</a>, and <a class="el" href="util_8h-source.html#l00142">xvprintf</a>.
528     <p>
529     Referenced by <a class="el" href="dns_8c-source.html#l00217">DNS_query()</a>. </td>
530     </tr>
531     </table>
532     <hr><h2>Variable Documentation</h2>
533     <a class="anchor" name="a0" doxytag="dns.c::dns_mutex" ></a><p>
534     <table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
535     <tr>
536     <td class="mdRow">
537     <table cellpadding="0" cellspacing="0" border="0">
538     <tr>
539     <td class="md" nowrap valign="top"> void* <a class="el" href="dns_8c.html#a0">dns_mutex</a> </td>
540     </tr>
541     </table>
542     </td>
543     </tr>
544     </table>
545     <table cellspacing=5 cellpadding=0 border=0>
546     <tr>
547     <td>
548     &nbsp;
549     </td>
550     <td>
551    
552     <p>
553     Definition at line <a class="el" href="dns_8c-source.html#l00072">72</a> of file <a class="el" href="dns_8c-source.html">dns.c</a>. </td>
554     </tr>
555     </table>
556     <hr size="1"><address style="align: right;"><small>Generated on Thu Sep 16 18:10:47 2004 for libSPF v1.0 by
557     <a href="http://www.doxygen.org/index.html">
558     <img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.8 </small></address>
559     </body>
560     </html>