Sophie

Sophie

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

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/harvest.c 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>harvest.c File Reference</h1>This program downloads relevant DNS data to a set of queries.  
<a href="#_details">More...</a>
<p>
<code>#include &quot;config.h&quot;</code><br>
<code>#include &lt;signal.h&gt;</code><br>
<code>#include &quot;<a class="el" href="unbound_8h.html">libunbound/unbound.h</a>&quot;</code><br>
<code>#include &lt;sys/stat.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="structharvest__data.html">harvest_data</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">this represents the data that has been collected as well as a todo list and some settings  <a href="structharvest__data.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="structtodo__item.html">todo_item</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Todo item.  <a href="structtodo__item.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="structlabdata.html">labdata</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Every label has a sest of sublabels, that have sets of sublabels .  <a href="structlabdata.html#_details">More...</a><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="f488ace023cdf64d5352526911c4eaa8"></a><!-- doxytag: member="harvest.c::usage" ref="f488ace023cdf64d5352526911c4eaa8" args="(char *nm)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#f488ace023cdf64d5352526911c4eaa8">usage</a> (char *nm)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">usage information for harvest <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e8ccf5374d6e88e5c658fc641c1de220"></a><!-- doxytag: member="harvest.c::error_exit" ref="e8ccf5374d6e88e5c658fc641c1de220" args="(const char *str)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#e8ccf5374d6e88e5c658fc641c1de220">error_exit</a> (const char *str)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">exit with error <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="de932c34025f93663453a287ad463e5f"></a><!-- doxytag: member="harvest.c::qlist_read_file" ref="de932c34025f93663453a287ad463e5f" args="(struct harvest_data *data, char *fname)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#de932c34025f93663453a287ad463e5f">qlist_read_file</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data, char *fname)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">read a query file <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="98ad93ecf8ff9c037ae0dc8cf467ac93"></a><!-- doxytag: member="harvest.c::lab_cmp" ref="98ad93ecf8ff9c037ae0dc8cf467ac93" args="(const void *x, const void *y)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#98ad93ecf8ff9c037ae0dc8cf467ac93">lab_cmp</a> (const void *x, const void *y)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compare two labels <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6069c96594af94f9b15b1ba910b5be06"></a><!-- doxytag: member="harvest.c::lab_create" ref="6069c96594af94f9b15b1ba910b5be06" args="(const char *name)" -->
static struct <a class="el" href="structlabdata.html">labdata</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#6069c96594af94f9b15b1ba910b5be06">lab_create</a> (const char *name)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">create label <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fd1f10423d212da04296b78910cd7451"></a><!-- doxytag: member="harvest.c::find_create_lab" ref="fd1f10423d212da04296b78910cd7451" args="(struct harvest_data *data, ldns_rdf *name)" -->
static struct <a class="el" href="structlabdata.html">labdata</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#fd1f10423d212da04296b78910cd7451">find_create_lab</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data, ldns_rdf *name)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">for this name, lookup the label, create if does not exist <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bfc373e5a987c40d5a48286a3eee2eb3"></a><!-- doxytag: member="harvest.c::new_todo_item" ref="bfc373e5a987c40d5a48286a3eee2eb3" args="(struct harvest_data *data, ldns_rdf *qname, int qtype, int qclass, int depth)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#bfc373e5a987c40d5a48286a3eee2eb3">new_todo_item</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data, ldns_rdf *qname, int qtype, int qclass, int depth)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">for given query, create todo items, and labels if needed <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ce3d7bd7919601f892843a6e4e8a85d6"></a><!-- doxytag: member="harvest.c::new_todo_infra" ref="ce3d7bd7919601f892843a6e4e8a85d6" args="(struct harvest_data *data, struct labdata *startlab, int depth)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#ce3d7bd7919601f892843a6e4e8a85d6">new_todo_infra</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data, struct <a class="el" href="structlabdata.html">labdata</a> *startlab, int depth)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">add infra todo items for this query <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1a6e9f27a0005ea2452c32a85d574624"></a><!-- doxytag: member="harvest.c::make_todo" ref="1a6e9f27a0005ea2452c32a85d574624" args="(struct harvest_data *data)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#1a6e9f27a0005ea2452c32a85d574624">make_todo</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">make todo items for initial data <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="76a88f053d35fad5167971a3d9f5747a"></a><!-- doxytag: member="harvest.c::process_rr" ref="76a88f053d35fad5167971a3d9f5747a" args="(struct harvest_data *data, ldns_rr *rr, int depth)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#76a88f053d35fad5167971a3d9f5747a">process_rr</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data, ldns_rr *rr, int depth)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">store RR and make new work items for it if needed <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="42889a6f28665f274822dec08bc1b715"></a><!-- doxytag: member="harvest.c::process_pkt" ref="42889a6f28665f274822dec08bc1b715" args="(struct harvest_data *data, ldns_pkt *pkt, int depth)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#42889a6f28665f274822dec08bc1b715">process_pkt</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data, ldns_pkt *pkt, int depth)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">store RRs and make new work items if needed <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9a388c7d74cd8da0adb87237804e7ce9"></a><!-- doxytag: member="harvest.c::process" ref="9a388c7d74cd8da0adb87237804e7ce9" args="(struct harvest_data *data, struct todo_item *it)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#9a388c7d74cd8da0adb87237804e7ce9">process</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data, struct <a class="el" href="structtodo__item.html">todo_item</a> *it)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">process a todo item <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="82b524a3a1b3a2e3114c5e18f1fb00b3"></a><!-- doxytag: member="harvest.c::harvest_main" ref="82b524a3a1b3a2e3114c5e18f1fb00b3" args="(struct harvest_data *data)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#82b524a3a1b3a2e3114c5e18f1fb00b3">harvest_main</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">perform main harvesting <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="80884035e6e94d25a579b2998cf3b2c0"></a><!-- doxytag: member="harvest.c::hv_mkdir" ref="80884035e6e94d25a579b2998cf3b2c0" args="(char *dir)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#80884035e6e94d25a579b2998cf3b2c0">hv_mkdir</a> (char *dir)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">create directory if it does not exist <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8b4ebf44a436d899961aa8e44c7249cf"></a><!-- doxytag: member="harvest.c::has_SOA" ref="8b4ebf44a436d899961aa8e44c7249cf" args="(ldns_rr_list *list)" -->
static ldns_rr *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#8b4ebf44a436d899961aa8e44c7249cf">has_SOA</a> (ldns_rr_list *list)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">see if rrlist contains a SOA record <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="237faacd148c21703d0876e8aef506b0"></a><!-- doxytag: member="harvest.c::write_moredata" ref="237faacd148c21703d0876e8aef506b0" args="(struct harvest_data *data, struct labdata *zone, FILE *f, struct labdata *thislab, ldns_rr *nslist)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#237faacd148c21703d0876e8aef506b0">write_moredata</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data, struct <a class="el" href="structlabdata.html">labdata</a> *zone, FILE *f, struct <a class="el" href="structlabdata.html">labdata</a> *thislab, ldns_rr *nslist)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">write moredata for a zone <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="be67d8abda2a4f11e189387bfa21db64"></a><!-- doxytag: member="harvest.c::write_glue" ref="be67d8abda2a4f11e189387bfa21db64" args="(struct harvest_data *data, struct labdata *thislab, FILE *f, ldns_rdf *name, int dep)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#be67d8abda2a4f11e189387bfa21db64">write_glue</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data, struct <a class="el" href="structlabdata.html">labdata</a> *thislab, FILE *f, ldns_rdf *name, int dep)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">find and write glue into zone file <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6ab6ec335b2308b9c19bb589863b9568"></a><!-- doxytag: member="harvest.c::write_zonefile" ref="6ab6ec335b2308b9c19bb589863b9568" args="(struct harvest_data *data, int dep, FILE *zlist, struct labdata *apex, ldns_rr *soa)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#6ab6ec335b2308b9c19bb589863b9568">write_zonefile</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data, int dep, FILE *zlist, struct <a class="el" href="structlabdata.html">labdata</a> *apex, ldns_rr *soa)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">write zonefile for zone at this apex <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6a4d7f63b2ee48eb84125031b112c43d"></a><!-- doxytag: member="harvest.c::create_zones" ref="6a4d7f63b2ee48eb84125031b112c43d" args="(struct harvest_data *data, int dep, FILE *zlist, struct labdata *labnow, int depnow)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#6a4d7f63b2ee48eb84125031b112c43d">create_zones</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data, int dep, FILE *zlist, struct <a class="el" href="structlabdata.html">labdata</a> *labnow, int depnow)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">create zones at depth d in label tree <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e9bb675614c683b08edeb486d98d0c28"></a><!-- doxytag: member="harvest.c::harvest_sort" ref="e9bb675614c683b08edeb486d98d0c28" args="(struct labdata *lab)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#e9bb675614c683b08edeb486d98d0c28">harvest_sort</a> (struct <a class="el" href="structlabdata.html">labdata</a> *lab)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">sort rrlists <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e534d5fc332a73e75c01ef05cabb1a4b"></a><!-- doxytag: member="harvest.c::harvest_output" ref="e534d5fc332a73e75c01ef05cabb1a4b" args="(struct harvest_data *data)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#e534d5fc332a73e75c01ef05cabb1a4b">harvest_output</a> (struct <a class="el" href="structharvest__data.html">harvest_data</a> *data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">output harvested results <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0ddf1224851353fc92bfbff6f499fa97"></a><!-- doxytag: member="harvest.c::main" ref="0ddf1224851353fc92bfbff6f499fa97" args="(int argc, char *argv[])" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#0ddf1224851353fc92bfbff6f499fa97">main</a> (int argc, char *argv[])</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">main program for harvest <br></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e06bfe8d0b5f237d92c97233aec2895e"></a><!-- doxytag: member="harvest.c::hverb" ref="e06bfe8d0b5f237d92c97233aec2895e" args="" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#e06bfe8d0b5f237d92c97233aec2895e">hverb</a> = 0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">verbosity for harvest <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#d5e1c16213bbee2d5e8cc363309f418c">optind</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">getopt global, in case header files fail to declare it.  <a href="#d5e1c16213bbee2d5e8cc363309f418c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="harvest_8c.html#db50a0eab9fed92fc3bfc7dfa4f2c410">optarg</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">getopt global, in case header files fail to declare it.  <a href="#db50a0eab9fed92fc3bfc7dfa4f2c410"></a><br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
This program downloads relevant DNS data to a set of queries. 
<p>
This means that the queries are asked to root, TLD, SLD servers and the results stored per zone. The following data is pertinent:<p>
At each label: SOA NS DNSKEY DS For the whole query: the result. For NS-records: their label data and the A and AAAA records for it. (as if the name, with A and AAAA query type is in the list, referred to as recursion depth+1) Any NSEC, NSEC3, SOA records or additional data found in answers.<p>
All of this is data that would be encountered during an iterative lookup for the queries in the list. It is saved to enable a replay of iterative lookups for performance testing.<p>
A number of assumptions are made. 1) configuration is correct. The parent has the same NS records as the child. All nameservers carry the same data. 2) EDNS/nonEDNS responses and other behaviour is ignored. Only the data is saved. This creates a snapshot that represents the data as this resolver saw it. <hr><h2>Variable Documentation</h2>
<a class="anchor" name="d5e1c16213bbee2d5e8cc363309f418c"></a><!-- doxytag: member="harvest.c::optind" ref="d5e1c16213bbee2d5e8cc363309f418c" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int <a class="el" href="streamtcp_8c.html#d5e1c16213bbee2d5e8cc363309f418c">optind</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
getopt global, in case header files fail to declare it. 
<p>

</div>
</div><p>
<a class="anchor" name="db50a0eab9fed92fc3bfc7dfa4f2c410"></a><!-- doxytag: member="harvest.c::optarg" ref="db50a0eab9fed92fc3bfc7dfa4f2c410" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">char* <a class="el" href="streamtcp_8c.html#db50a0eab9fed92fc3bfc7dfa4f2c410">optarg</a>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
getopt global, in case header files fail to declare it. 
<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>