Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 550bbe86d83a7870fdddc73c68e5d2b2 > files > 185

libunbound-devel-1.3.4-1mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>unbound: testcode/ldns-testpkts.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="dir_aae0f736e7b956edab2d753def1ee5b5.html">testcode</a>
  </div>
</div>
<div class="contents">
<h1>ldns-testpkts.h File Reference</h1>This is a debugging aid.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;ldns/ldns.h&gt;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structreply__packet.html">reply_packet</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">struct to keep a linked list of reply packets for a query  <a href="structreply__packet.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structentry.html">entry</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">data structure to keep the canned queries in.  <a href="structentry.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Enumerations</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ldns-testpkts_8h.html#86cdaffc49feb3f5e3f1ffacfc054427">transport_type</a> { <b>transport_any</b> =  0, 
<b>transport_udp</b>, 
<b>transport_tcp</b>
 }</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Type of transport, since some entries match based on UDP or TCP of query. <br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5329e36907714ac4151b44b0e7fd7ba2"></a><!-- doxytag: member="ldns&#45;testpkts.h::read_datafile" ref="5329e36907714ac4151b44b0e7fd7ba2" args="(const char *name)" -->
struct <a class="el" href="structentry.html">entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ldns-testpkts_8h.html#5329e36907714ac4151b44b0e7fd7ba2">read_datafile</a> (const char *name)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">reads the canned reply file and returns a list of structs does an exit on error. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8f78b6ebca38053a6184dc29e9928af3"></a><!-- doxytag: member="ldns&#45;testpkts.h::delete_entry" ref="8f78b6ebca38053a6184dc29e9928af3" args="(struct entry *list)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ldns-testpkts_8h.html#8f78b6ebca38053a6184dc29e9928af3">delete_entry</a> (struct <a class="el" href="structentry.html">entry</a> *list)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete linked list of entries. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structentry.html">entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ldns-testpkts_8h.html#bcd2fbcab1e39cafb81bb1bc6fe9c1e4">read_entry</a> (FILE *in, const char *name, int *lineno, uint32_t *default_ttl, ldns_rdf **origin, ldns_rdf **prev_rr)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read one <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> from the data file.  <a href="#bcd2fbcab1e39cafb81bb1bc6fe9c1e4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="894c4d58286cfa530d4d3594aa55e33f"></a><!-- doxytag: member="ldns&#45;testpkts.h::find_match" ref="894c4d58286cfa530d4d3594aa55e33f" args="(struct entry *entries, ldns_pkt *query_pkt, enum transport_type transport)" -->
struct <a class="el" href="structentry.html">entry</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ldns-testpkts_8h.html#894c4d58286cfa530d4d3594aa55e33f">find_match</a> (struct <a class="el" href="structentry.html">entry</a> *entries, ldns_pkt *query_pkt, enum <a class="el" href="ldns-testpkts_8h.html#86cdaffc49feb3f5e3f1ffacfc054427">transport_type</a> transport)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">finds <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> in list, or returns NULL. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a6260d72e29d5aa690a64fe29737c90b"></a><!-- doxytag: member="ldns&#45;testpkts.h::adjust_packet" ref="a6260d72e29d5aa690a64fe29737c90b" args="(struct entry *match, ldns_pkt *answer_pkt, ldns_pkt *query_pkt)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ldns-testpkts_8h.html#a6260d72e29d5aa690a64fe29737c90b">adjust_packet</a> (struct <a class="el" href="structentry.html">entry</a> *match, ldns_pkt *answer_pkt, ldns_pkt *query_pkt)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">copy &amp; adjust packet <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="ldns-testpkts_8h.html#8cd6cefa7f31efcaa416bb7770bdc3f5">handle_query</a> (uint8_t *inbuf, ssize_t inlen, struct <a class="el" href="structentry.html">entry</a> *entries, int *count, enum <a class="el" href="ldns-testpkts_8h.html#86cdaffc49feb3f5e3f1ffacfc054427">transport_type</a> transport, void(*sendfunc)(uint8_t *, size_t, void *), void *userdata, FILE *verbose_out)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parses data buffer to a query, finds the correct answer and calls the given function for every packet to send.  <a href="#8cd6cefa7f31efcaa416bb7770bdc3f5"></a><br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
This is a debugging aid. 
<p>
It is not efficient, especially with a long config file, but it can give any reply to any query. This can help the developer pre-script replies for queries.<p>
You can specify a packet RR by RR with header flags to return.<p>
Missing features:<ul>
<li>matching content different from reply content.</li><li>find way to adjust mangled packets? </li></ul>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="bcd2fbcab1e39cafb81bb1bc6fe9c1e4"></a><!-- doxytag: member="ldns&#45;testpkts.h::read_entry" ref="bcd2fbcab1e39cafb81bb1bc6fe9c1e4" args="(FILE *in, const char *name, int *lineno, uint32_t *default_ttl, ldns_rdf **origin, ldns_rdf **prev_rr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structentry.html">entry</a>* read_entry           </td>
          <td>(</td>
          <td class="paramtype">FILE *&nbsp;</td>
          <td class="paramname"> <em>in</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>lineno</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t *&nbsp;</td>
          <td class="paramname"> <em>default_ttl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ldns_rdf **&nbsp;</td>
          <td class="paramname"> <em>origin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ldns_rdf **&nbsp;</td>
          <td class="paramname"> <em>prev_rr</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read one <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> from the data file. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>in,:</em>&nbsp;</td><td>file to read from. Filepos must be at the start of a new line. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name,:</em>&nbsp;</td><td>name of the file for prettier errors. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>lineno,:</em>&nbsp;</td><td>line number in file, incremented as lines are read. for prettier errors. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>default_ttl,:</em>&nbsp;</td><td>on first call set to default TTL for entries, later it stores the $TTL value last seen. Try 3600 first call. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>origin,:</em>&nbsp;</td><td>domain name for origin appending. Can be &amp;NULL on first call. later it stores the $ORIGIN value last seen. Often &amp;NULL or the zone name on first call. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>prev_rr,:</em>&nbsp;</td><td>previous rr name for correcter parsing. &amp;NULL on first call. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: The <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> read (malloced) or NULL if no <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> could be read. </dd></dl>

<p>References <a class="el" href="ldns-testpkts_8c_source.html#l00201">adjustline()</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00308">data_buffer2wire()</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00078">entry_add_reply()</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00038">error()</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00389">get_origin()</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00051">isendline()</a>, <a class="el" href="ldns-testpkts_8h_source.html#l00191">entry::lineno</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00095">matchline()</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00030">MAX_LINE</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00227">new_entry()</a>, <a class="el" href="ldns-testpkts_8h_source.html#l00144">reply_packet::reply</a>, <a class="el" href="ldns-testpkts_8h_source.html#l00146">reply_packet::reply_from_hex</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00136">replyline()</a>, and <a class="el" href="ldns-testpkts_8c_source.html#l00064">str_keyword()</a>.</p>

<p>Referenced by <a class="el" href="ldns-testpkts_8c_source.html#l00518">read_datafile()</a>, <a class="el" href="replay_8c_source.html#l00188">replay_moment_read()</a>, and <a class="el" href="replay_8c_source.html#l00114">replay_range_read()</a>.</p>

</div>
</div><p>
<a class="anchor" name="8cd6cefa7f31efcaa416bb7770bdc3f5"></a><!-- doxytag: member="ldns&#45;testpkts.h::handle_query" ref="8cd6cefa7f31efcaa416bb7770bdc3f5" args="(uint8_t *inbuf, ssize_t inlen, struct entry *entries, int *count, enum transport_type transport, void(*sendfunc)(uint8_t *, size_t, void *), void *userdata, FILE *verbose_out)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void handle_query           </td>
          <td>(</td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>inbuf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ssize_t&nbsp;</td>
          <td class="paramname"> <em>inlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structentry.html">entry</a> *&nbsp;</td>
          <td class="paramname"> <em>entries</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">enum <a class="el" href="ldns-testpkts_8h.html#86cdaffc49feb3f5e3f1ffacfc054427">transport_type</a>&nbsp;</td>
          <td class="paramname"> <em>transport</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(uint8_t *, size_t, void *)&nbsp;</td>
          <td class="paramname"> <em>sendfunc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>userdata</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&nbsp;</td>
          <td class="paramname"> <em>verbose_out</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Parses data buffer to a query, finds the correct answer and calls the given function for every packet to send. 
<p>
if verbose_out filename is given, packets are dumped there. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>inbuf,:</em>&nbsp;</td><td>the packet that came in </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>inlen,:</em>&nbsp;</td><td>length of packet. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>entries,:</em>&nbsp;</td><td>entries read in from datafile. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>count,:</em>&nbsp;</td><td>is increased to count number of queries answered. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>transport,:</em>&nbsp;</td><td>set to UDP or TCP to match some types of entries. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sendfunc,:</em>&nbsp;</td><td>called to send answer (buffer, size, userarg). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>userdata,:</em>&nbsp;</td><td>userarg to give to sendfunc. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>verbose_out,:</em>&nbsp;</td><td>if not NULL, verbose messages are printed there. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="ldns-testpkts_8c_source.html#l00722">adjust_packet()</a>, <a class="el" href="ldns-testpkts_8h_source.html#l00184">entry::copy_id</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00659">find_match()</a>, <a class="el" href="ldns-testpkts_8h_source.html#l00142">reply_packet::next</a>, <a class="el" href="ldns-testpkts_8h_source.html#l00148">reply_packet::packet_sleep</a>, <a class="el" href="ldns-testpkts_8h_source.html#l00144">reply_packet::reply</a>, <a class="el" href="ldns-testpkts_8h_source.html#l00146">reply_packet::reply_from_hex</a>, <a class="el" href="ldns-testpkts_8h_source.html#l00180">entry::reply_list</a>, and <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>.</p>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Tue Oct 13 06:46:31 2009 for unbound by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>