Sophie

Sophie

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

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: util/storage/dnstree.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_4b581c88b01efb1cf178857b56f0f2fb.html">util</a>&nbsp;&raquo&nbsp;<a class="el" href="dir_503386e5bff39eee21df0f1f4756eaa4.html">storage</a>
  </div>
</div>
<div class="contents">
<h1>dnstree.h File Reference</h1>This file contains structures combining types and functions to manipulate those structures that help building DNS lookup trees.  
<a href="#_details">More...</a>
<p>
<code>#include &quot;<a class="el" href="rbtree_8h.html">util/rbtree.h</a>&quot;</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="structname__tree__node.html">name_tree_node</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tree of domain names.  <a href="structname__tree__node.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="structaddr__tree__node.html">addr_tree_node</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Tree of IP addresses.  <a href="structaddr__tree__node.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">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dnstree_8h.html#55cd19f219f72dc1f598163f03784a36">name_tree_init</a> (<a class="el" href="structrbtree__t.html">rbtree_t</a> *tree)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Init a name tree to be empty.  <a href="#55cd19f219f72dc1f598163f03784a36"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dnstree_8h.html#0f69cce5ab6460356e30a0ea83aae4c3">name_tree_insert</a> (<a class="el" href="structrbtree__t.html">rbtree_t</a> *tree, struct <a class="el" href="structname__tree__node.html">name_tree_node</a> *node, uint8_t *name, size_t len, int labs, uint16_t dclass)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">insert element into name tree.  <a href="#0f69cce5ab6460356e30a0ea83aae4c3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dnstree_8h.html#d8cf78c1610f49a450812b938b78f8d2">name_tree_init_parents</a> (<a class="el" href="structrbtree__t.html">rbtree_t</a> *tree)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize parent pointers in name tree.  <a href="#d8cf78c1610f49a450812b938b78f8d2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structname__tree__node.html">name_tree_node</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dnstree_8h.html#d92dc5ebb7dae239909e43c669c9fe37">name_tree_find</a> (<a class="el" href="structrbtree__t.html">rbtree_t</a> *tree, uint8_t *name, size_t len, int labs, uint16_t dclass)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lookup exact match in name tree.  <a href="#d92dc5ebb7dae239909e43c669c9fe37"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structname__tree__node.html">name_tree_node</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dnstree_8h.html#b4a9fa4906eaa0c082f4dad9bc428ecf">name_tree_lookup</a> (<a class="el" href="structrbtree__t.html">rbtree_t</a> *tree, uint8_t *name, size_t len, int labs, uint16_t dclass)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lookup closest encloser in name tree.  <a href="#b4a9fa4906eaa0c082f4dad9bc428ecf"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dnstree_8h.html#b546a3eb2d3e2b031a71a67338828172">addr_tree_init</a> (<a class="el" href="structrbtree__t.html">rbtree_t</a> *tree)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Init addr tree to be empty.  <a href="#b546a3eb2d3e2b031a71a67338828172"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dnstree_8h.html#90ba78a1aa663b53c6eca038a2df2f76">addr_tree_insert</a> (<a class="el" href="structrbtree__t.html">rbtree_t</a> *tree, struct <a class="el" href="structaddr__tree__node.html">addr_tree_node</a> *node, struct sockaddr_storage *addr, socklen_t addrlen, int net)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">insert element into addr tree.  <a href="#90ba78a1aa663b53c6eca038a2df2f76"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dnstree_8h.html#8f3e4a51eb5717ed97b366fc52910b08">addr_tree_init_parents</a> (<a class="el" href="structrbtree__t.html">rbtree_t</a> *tree)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialize parent pointers in addr tree.  <a href="#8f3e4a51eb5717ed97b366fc52910b08"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structaddr__tree__node.html">addr_tree_node</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dnstree_8h.html#9592b6693ff0c0d2f88ff6db01acdec9">addr_tree_lookup</a> (<a class="el" href="structrbtree__t.html">rbtree_t</a> *tree, struct sockaddr_storage *addr, socklen_t addrlen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Lookup closest encloser in addr tree.  <a href="#9592b6693ff0c0d2f88ff6db01acdec9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="89856440ed191201d2bd40539ece69e7"></a><!-- doxytag: member="dnstree.h::name_tree_compare" ref="89856440ed191201d2bd40539ece69e7" args="(const void *k1, const void *k2)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dnstree_8h.html#89856440ed191201d2bd40539ece69e7">name_tree_compare</a> (const void *k1, const void *k2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compare name tree nodes <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ea1653d96021e6ea304f0ab4aec86815"></a><!-- doxytag: member="dnstree.h::addr_tree_compare" ref="ea1653d96021e6ea304f0ab4aec86815" args="(const void *k1, const void *k2)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dnstree_8h.html#ea1653d96021e6ea304f0ab4aec86815">addr_tree_compare</a> (const void *k1, const void *k2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compare addr tree nodes <br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
This file contains structures combining types and functions to manipulate those structures that help building DNS lookup trees. 
<p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="55cd19f219f72dc1f598163f03784a36"></a><!-- doxytag: member="dnstree.h::name_tree_init" ref="55cd19f219f72dc1f598163f03784a36" args="(rbtree_t *tree)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void name_tree_init           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrbtree__t.html">rbtree_t</a> *&nbsp;</td>
          <td class="paramname"> <em>tree</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Init a name tree to be empty. 
<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>tree,:</em>&nbsp;</td><td>to init. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="dnstree_8c_source.html#l00047">name_tree_compare()</a>, and <a class="el" href="rbtree_8c_source.html#l00094">rbtree_init()</a>.</p>

<p>Referenced by <a class="el" href="iter__hints_8c_source.html#l00394">hints_apply_cfg()</a>, <a class="el" href="iter__priv_8c_source.html#l00147">priv_apply_cfg()</a>, and <a class="el" href="iter__priv_8c_source.html#l00053">priv_create()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0f69cce5ab6460356e30a0ea83aae4c3"></a><!-- doxytag: member="dnstree.h::name_tree_insert" ref="0f69cce5ab6460356e30a0ea83aae4c3" args="(rbtree_t *tree, struct name_tree_node *node, uint8_t *name, size_t len, int labs, uint16_t dclass)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int name_tree_insert           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrbtree__t.html">rbtree_t</a> *&nbsp;</td>
          <td class="paramname"> <em>tree</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structname__tree__node.html">name_tree_node</a> *&nbsp;</td>
          <td class="paramname"> <em>node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>labs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>dclass</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
insert element into name tree. 
<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>tree,:</em>&nbsp;</td><td>name tree </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>node,:</em>&nbsp;</td><td>node element (at start of a structure that caller has allocated). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name,:</em>&nbsp;</td><td>name to insert (wireformat) this node has been allocated by the caller and it itself inserted. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len,:</em>&nbsp;</td><td>length of name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>labs,:</em>&nbsp;</td><td>labels in name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dclass,:</em>&nbsp;</td><td>class of name </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false on error (duplicate element). </dd></dl>

<p>References <a class="el" href="dnstree_8h_source.html#l00067">name_tree_node::dclass</a>, <a class="el" href="rbtree_8h_source.html#l00063">rbnode_t::key</a>, <a class="el" href="dnstree_8h_source.html#l00065">name_tree_node::labs</a>, <a class="el" href="dnstree_8h_source.html#l00063">name_tree_node::len</a>, <a class="el" href="dnstree_8h_source.html#l00061">name_tree_node::name</a>, <a class="el" href="dnstree_8h_source.html#l00057">name_tree_node::node</a>, <a class="el" href="dnstree_8h_source.html#l00059">name_tree_node::parent</a>, and <a class="el" href="rbtree_8c_source.html#l00227">rbtree_insert()</a>.</p>

<p>Referenced by <a class="el" href="iter__hints_8c_source.html#l00144">hints_insert()</a>, and <a class="el" href="iter__priv_8c_source.html#l00107">read_names()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d8cf78c1610f49a450812b938b78f8d2"></a><!-- doxytag: member="dnstree.h::name_tree_init_parents" ref="d8cf78c1610f49a450812b938b78f8d2" args="(rbtree_t *tree)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void name_tree_init_parents           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrbtree__t.html">rbtree_t</a> *&nbsp;</td>
          <td class="paramname"> <em>tree</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initialize parent pointers in name tree. 
<p>
Should be performed after insertions are done, before lookups <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>tree,:</em>&nbsp;</td><td>name tree </td></tr>
  </table>
</dl>

<p>References <a class="el" href="dnstree_8h_source.html#l00067">name_tree_node::dclass</a>, <a class="el" href="dname_8c_source.html#l00424">dname_lab_cmp()</a>, <a class="el" href="dnstree_8h_source.html#l00065">name_tree_node::labs</a>, <a class="el" href="dnstree_8h_source.html#l00061">name_tree_node::name</a>, <a class="el" href="dnstree_8h_source.html#l00057">name_tree_node::node</a>, <a class="el" href="dnstree_8h_source.html#l00059">name_tree_node::parent</a>, and <a class="el" href="rbtree_8h_source.html#l00173">RBTREE_FOR</a>.</p>

<p>Referenced by <a class="el" href="iter__hints_8c_source.html#l00394">hints_apply_cfg()</a>, and <a class="el" href="iter__priv_8c_source.html#l00147">priv_apply_cfg()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d92dc5ebb7dae239909e43c669c9fe37"></a><!-- doxytag: member="dnstree.h::name_tree_find" ref="d92dc5ebb7dae239909e43c669c9fe37" args="(rbtree_t *tree, uint8_t *name, size_t len, int labs, uint16_t dclass)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structname__tree__node.html">name_tree_node</a>* name_tree_find           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrbtree__t.html">rbtree_t</a> *&nbsp;</td>
          <td class="paramname"> <em>tree</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>labs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>dclass</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>
Lookup exact match in name tree. 
<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>tree,:</em>&nbsp;</td><td>name tree </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name,:</em>&nbsp;</td><td>wireformat name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len,:</em>&nbsp;</td><td>length of name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>labs,:</em>&nbsp;</td><td>labels in name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dclass,:</em>&nbsp;</td><td>class of name </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>node or NULL if not found. </dd></dl>

<p>References <a class="el" href="dnstree_8h_source.html#l00067">name_tree_node::dclass</a>, <a class="el" href="rbtree_8h_source.html#l00063">rbnode_t::key</a>, <a class="el" href="dnstree_8h_source.html#l00065">name_tree_node::labs</a>, <a class="el" href="dnstree_8h_source.html#l00063">name_tree_node::len</a>, <a class="el" href="dnstree_8h_source.html#l00061">name_tree_node::name</a>, <a class="el" href="dnstree_8h_source.html#l00057">name_tree_node::node</a>, and <a class="el" href="rbtree_8c_source.html#l00280">rbtree_search()</a>.</p>

<p>Referenced by <a class="el" href="iter__hints_8c_source.html#l00423">hints_lookup_root()</a>.</p>

</div>
</div><p>
<a class="anchor" name="b4a9fa4906eaa0c082f4dad9bc428ecf"></a><!-- doxytag: member="dnstree.h::name_tree_lookup" ref="b4a9fa4906eaa0c082f4dad9bc428ecf" args="(rbtree_t *tree, uint8_t *name, size_t len, int labs, uint16_t dclass)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structname__tree__node.html">name_tree_node</a>* name_tree_lookup           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrbtree__t.html">rbtree_t</a> *&nbsp;</td>
          <td class="paramname"> <em>tree</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>labs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>dclass</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>
Lookup closest encloser in name tree. 
<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>tree,:</em>&nbsp;</td><td>name tree </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name,:</em>&nbsp;</td><td>wireformat name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len,:</em>&nbsp;</td><td>length of name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>labs,:</em>&nbsp;</td><td>labels in name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dclass,:</em>&nbsp;</td><td>class of name </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>closest enclosing node (could be equal) or NULL if not found. </dd></dl>

<p>References <a class="el" href="dnstree_8h_source.html#l00067">name_tree_node::dclass</a>, <a class="el" href="dname_8c_source.html#l00424">dname_lab_cmp()</a>, <a class="el" href="rbtree_8h_source.html#l00063">rbnode_t::key</a>, <a class="el" href="dnstree_8h_source.html#l00065">name_tree_node::labs</a>, <a class="el" href="dnstree_8h_source.html#l00063">name_tree_node::len</a>, <a class="el" href="dnstree_8h_source.html#l00061">name_tree_node::name</a>, <a class="el" href="dnstree_8h_source.html#l00057">name_tree_node::node</a>, <a class="el" href="dnstree_8h_source.html#l00059">name_tree_node::parent</a>, and <a class="el" href="rbtree_8c_source.html#l00507">rbtree_find_less_equal()</a>.</p>

<p>Referenced by <a class="el" href="iter__hints_8c_source.html#l00435">hints_lookup_stub()</a>, and <a class="el" href="iter__priv_8c_source.html#l00190">priv_lookup_name()</a>.</p>

</div>
</div><p>
<a class="anchor" name="b546a3eb2d3e2b031a71a67338828172"></a><!-- doxytag: member="dnstree.h::addr_tree_init" ref="b546a3eb2d3e2b031a71a67338828172" args="(rbtree_t *tree)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void addr_tree_init           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrbtree__t.html">rbtree_t</a> *&nbsp;</td>
          <td class="paramname"> <em>tree</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Init addr tree to be empty. 
<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>tree,:</em>&nbsp;</td><td>to init. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="dnstree_8c_source.html#l00060">addr_tree_compare()</a>, and <a class="el" href="rbtree_8c_source.html#l00094">rbtree_init()</a>.</p>

<p>Referenced by <a class="el" href="acl__list_8c_source.html#l00138">acl_list_apply_cfg()</a>, <a class="el" href="iter__donotq_8c_source.html#l00123">donotq_apply_cfg()</a>, <a class="el" href="iter__priv_8c_source.html#l00147">priv_apply_cfg()</a>, and <a class="el" href="iter__priv_8c_source.html#l00053">priv_create()</a>.</p>

</div>
</div><p>
<a class="anchor" name="90ba78a1aa663b53c6eca038a2df2f76"></a><!-- doxytag: member="dnstree.h::addr_tree_insert" ref="90ba78a1aa663b53c6eca038a2df2f76" args="(rbtree_t *tree, struct addr_tree_node *node, struct sockaddr_storage *addr, socklen_t addrlen, int net)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int addr_tree_insert           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrbtree__t.html">rbtree_t</a> *&nbsp;</td>
          <td class="paramname"> <em>tree</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structaddr__tree__node.html">addr_tree_node</a> *&nbsp;</td>
          <td class="paramname"> <em>node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>addrlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>net</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
insert element into addr tree. 
<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>tree,:</em>&nbsp;</td><td>addr tree </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>node,:</em>&nbsp;</td><td>node element (at start of a structure that caller has allocated). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>to insert (copied). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of addr </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>net,:</em>&nbsp;</td><td>size of subnet. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false on error (duplicate element). </dd></dl>

<p>References <a class="el" href="dnstree_8h_source.html#l00083">addr_tree_node::addr</a>, <a class="el" href="dnstree_8h_source.html#l00085">addr_tree_node::addrlen</a>, <a class="el" href="rbtree_8h_source.html#l00063">rbnode_t::key</a>, <a class="el" href="dnstree_8h_source.html#l00087">addr_tree_node::net</a>, <a class="el" href="dnstree_8h_source.html#l00079">addr_tree_node::node</a>, <a class="el" href="dnstree_8h_source.html#l00081">addr_tree_node::parent</a>, and <a class="el" href="rbtree_8c_source.html#l00227">rbtree_insert()</a>.</p>

<p>Referenced by <a class="el" href="acl__list_8c_source.html#l00075">acl_list_insert()</a>, <a class="el" href="iter__donotq_8c_source.html#l00077">donotq_insert()</a>, and <a class="el" href="iter__priv_8c_source.html#l00076">read_addrs()</a>.</p>

</div>
</div><p>
<a class="anchor" name="8f3e4a51eb5717ed97b366fc52910b08"></a><!-- doxytag: member="dnstree.h::addr_tree_init_parents" ref="8f3e4a51eb5717ed97b366fc52910b08" args="(rbtree_t *tree)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void addr_tree_init_parents           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrbtree__t.html">rbtree_t</a> *&nbsp;</td>
          <td class="paramname"> <em>tree</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initialize parent pointers in addr tree. 
<p>
Should be performed after insertions are done, before lookups <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>tree,:</em>&nbsp;</td><td>addr tree </td></tr>
  </table>
</dl>

<p>References <a class="el" href="dnstree_8h_source.html#l00083">addr_tree_node::addr</a>, <a class="el" href="net__help_8c_source.html#l00431">addr_in_common()</a>, <a class="el" href="dnstree_8h_source.html#l00085">addr_tree_node::addrlen</a>, <a class="el" href="dnstree_8h_source.html#l00087">addr_tree_node::net</a>, <a class="el" href="dnstree_8h_source.html#l00079">addr_tree_node::node</a>, <a class="el" href="dnstree_8h_source.html#l00081">addr_tree_node::parent</a>, and <a class="el" href="rbtree_8h_source.html#l00173">RBTREE_FOR</a>.</p>

<p>Referenced by <a class="el" href="acl__list_8c_source.html#l00138">acl_list_apply_cfg()</a>, <a class="el" href="iter__donotq_8c_source.html#l00123">donotq_apply_cfg()</a>, and <a class="el" href="iter__priv_8c_source.html#l00147">priv_apply_cfg()</a>.</p>

</div>
</div><p>
<a class="anchor" name="9592b6693ff0c0d2f88ff6db01acdec9"></a><!-- doxytag: member="dnstree.h::addr_tree_lookup" ref="9592b6693ff0c0d2f88ff6db01acdec9" args="(rbtree_t *tree, struct sockaddr_storage *addr, socklen_t addrlen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structaddr__tree__node.html">addr_tree_node</a>* addr_tree_lookup           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="structrbtree__t.html">rbtree_t</a> *&nbsp;</td>
          <td class="paramname"> <em>tree</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>addrlen</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>
Lookup closest encloser in addr tree. 
<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>tree,:</em>&nbsp;</td><td>addr tree </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>to lookup. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of addr </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>closest enclosing node (could be equal) or NULL if not found. </dd></dl>

<p>References <a class="el" href="dnstree_8h_source.html#l00083">addr_tree_node::addr</a>, <a class="el" href="net__help_8c_source.html#l00431">addr_in_common()</a>, <a class="el" href="net__help_8c_source.html#l00401">addr_is_ip6()</a>, <a class="el" href="dnstree_8h_source.html#l00085">addr_tree_node::addrlen</a>, <a class="el" href="rbtree_8h_source.html#l00063">rbnode_t::key</a>, <a class="el" href="dnstree_8h_source.html#l00087">addr_tree_node::net</a>, <a class="el" href="dnstree_8h_source.html#l00079">addr_tree_node::node</a>, <a class="el" href="dnstree_8h_source.html#l00081">addr_tree_node::parent</a>, and <a class="el" href="rbtree_8c_source.html#l00507">rbtree_find_less_equal()</a>.</p>

<p>Referenced by <a class="el" href="acl__list_8c_source.html#l00162">acl_list_lookup()</a>, <a class="el" href="iter__donotq_8c_source.html#l00142">donotq_lookup()</a>, and <a class="el" href="iter__priv_8c_source.html#l00174">priv_lookup_addr()</a>.</p>

</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Tue Oct 13 06:46:32 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>