Sophie

Sophie

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

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: validator/val_anchor.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_d2a455e92b602458a2b0ed9b207bdda1.html">validator</a>
  </div>
</div>
<div class="contents">
<h1>val_anchor.c File Reference</h1>This file contains storage for the trust anchors for the validator.  
<a href="#_details">More...</a>
<p>
<code>#include &quot;config.h&quot;</code><br>
<code>#include &quot;<a class="el" href="val__anchor_8h.html">validator/val_anchor.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="val__sigcrypt_8h.html">validator/val_sigcrypt.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="packed__rrset_8h.html">util/data/packed_rrset.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="dname_8h.html">util/data/dname.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="log_8h.html">util/log.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="net__help_8h.html">util/net_help.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="regional_8h.html">util/regional.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="config__file_8h.html">util/config_file.h</a>&quot;</code><br>
<code>#include &lt;glob.h&gt;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></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="66a51f7871809890b25c1290d4923f89"></a><!-- doxytag: member="val_anchor.c::anchor_cmp" ref="66a51f7871809890b25c1290d4923f89" args="(const void *k1, const void *k2)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#66a51f7871809890b25c1290d4923f89">anchor_cmp</a> (const void *k1, const void *k2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compare two trust anchors <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#46944f5898c21ef8008765b6d8318f93">anchors_create</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create trust anchor storage.  <a href="#46944f5898c21ef8008765b6d8318f93"></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="val__anchor_8c.html#91486eabe8f437cbaa1ef6a3dfb93a9e">anchors_delete</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete trust anchor storage.  <a href="#91486eabe8f437cbaa1ef6a3dfb93a9e"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fab7228bd401aeb4726d25ca22ccb893"></a><!-- doxytag: member="val_anchor.c::init_parents" ref="fab7228bd401aeb4726d25ca22ccb893" args="(struct val_anchors *anchors)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#fab7228bd401aeb4726d25ca22ccb893">init_parents</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">initialise parent pointers in the tree <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#0fc5e042c7fbeabd1afb117d43970d41">anchor_find</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, uint8_t *name, int namelabs, size_t namelen, uint16_t dclass)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find a trust anchor.  <a href="#0fc5e042c7fbeabd1afb117d43970d41"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="43ba10a1c2107bc64399fe60ba2d95ff"></a><!-- doxytag: member="val_anchor.c::anchor_new_ta" ref="43ba10a1c2107bc64399fe60ba2d95ff" args="(struct val_anchors *anchors, uint8_t *name, int namelabs, size_t namelen, uint16_t dclass)" -->
static struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#43ba10a1c2107bc64399fe60ba2d95ff">anchor_new_ta</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, uint8_t *name, int namelabs, size_t namelen, uint16_t dclass)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">create new trust anchor object <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3f034b6e26d155297e22f011f3006c2d"></a><!-- doxytag: member="val_anchor.c::anchor_find_key" ref="3f034b6e26d155297e22f011f3006c2d" args="(struct trust_anchor *ta, uint8_t *rdata, size_t rdata_len, uint16_t type)" -->
static struct <a class="el" href="structta__key.html">ta_key</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#3f034b6e26d155297e22f011f3006c2d">anchor_find_key</a> (struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *ta, uint8_t *rdata, size_t rdata_len, uint16_t type)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">find trustanchor key by exact data match <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a78cb7936c1f5d4e236fccde835b0854"></a><!-- doxytag: member="val_anchor.c::anchor_new_ta_key" ref="a78cb7936c1f5d4e236fccde835b0854" args="(struct val_anchors *anchors, uint8_t *rdata, size_t rdata_len, uint16_t type)" -->
static struct <a class="el" href="structta__key.html">ta_key</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#a78cb7936c1f5d4e236fccde835b0854">anchor_new_ta_key</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, uint8_t *rdata, size_t rdata_len, uint16_t type)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">create new trustanchor key <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#0caa910eb6281e3f353b2cf91a7b61f9">anchor_store_new_key</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, uint8_t *name, uint16_t type, uint16_t dclass, uint8_t *rdata, size_t rdata_len)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This routine adds a new RR to a trust anchor.  <a href="#0caa910eb6281e3f353b2cf91a7b61f9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#e7cd30fdc2dbd1f4e5213e6740c30d90">anchor_store_new_rr</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, ldns_buffer *buffer, ldns_rr *rr)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add new RR.  <a href="#e7cd30fdc2dbd1f4e5213e6740c30d90"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#5c6a39b91b77cdb91d51227c512252d1">anchor_insert_insecure</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, const char *str)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Insert insecure anchor.  <a href="#5c6a39b91b77cdb91d51227c512252d1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#c28b8f0ecbfa5611d433397ce22fb753">anchor_store_str</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, ldns_buffer *buffer, const char *str)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Store one string as trust anchor RR.  <a href="#c28b8f0ecbfa5611d433397ce22fb753"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#9f01c0422470140740f121b645616ea6">anchor_read_file</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, ldns_buffer *buffer, const char *fname, int onlyone)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a file with trust anchors.  <a href="#9f01c0422470140740f121b645616ea6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f54ca4cc7f3d1eab5e837b8537193dba"></a><!-- doxytag: member="val_anchor.c::skip_to_eol" ref="f54ca4cc7f3d1eab5e837b8537193dba" args="(FILE *in)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#f54ca4cc7f3d1eab5e837b8537193dba">skip_to_eol</a> (FILE *in)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">skip file to end of line <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aa58b65e5727604fafdc44d0ee5e986d"></a><!-- doxytag: member="val_anchor.c::is_bind_special" ref="aa58b65e5727604fafdc44d0ee5e986d" args="(int c)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#aa58b65e5727604fafdc44d0ee5e986d">is_bind_special</a> (int c)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">true for special characters in bind configs <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#6dfba1d161d324ab1e2e0887ce076df2">readkeyword_bindfile</a> (FILE *in, ldns_buffer *buf, int *line, int comments)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a keyword skipping bind comments; spaces, specials, restkeywords.  <a href="#6dfba1d161d324ab1e2e0887ce076df2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a76ff0e124fc8ffe73b75452bba01282"></a><!-- doxytag: member="val_anchor.c::skip_to_special" ref="a76ff0e124fc8ffe73b75452bba01282" args="(FILE *in, ldns_buffer *buf, int *line, int spec)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#a76ff0e124fc8ffe73b75452bba01282">skip_to_special</a> (FILE *in, ldns_buffer *buf, int *line, int spec)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">skip through file to { or ; <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#a82dcfafccc774099595d026bd9b9d41">process_bind_contents</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, ldns_buffer *buf, int *line, FILE *in)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">read contents of trusted-keys{ .  <a href="#a82dcfafccc774099595d026bd9b9d41"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#8c36f6df07b057b3e062a64c9f81f9e6">anchor_read_bind_file</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, ldns_buffer *buffer, const char *fname)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a BIND9 like file with trust anchors in named.conf format.  <a href="#8c36f6df07b057b3e062a64c9f81f9e6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#92adf53c8541fd21383bee0b6eb672e8">anchor_read_bind_file_wild</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, ldns_buffer *buffer, const char *pat)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read a BIND9 like files with trust anchors in named.conf format.  <a href="#92adf53c8541fd21383bee0b6eb672e8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#c1e1ff5c9adad378cca6511b43f98423">assemble_it</a> (struct <a class="el" href="structregional.html">regional</a> *region, struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *ta, size_t num, uint16_t type)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assemble an rrset structure for the type.  <a href="#c1e1ff5c9adad378cca6511b43f98423"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#928e50b29347119f51f1f6d08f2009da">anchors_assemble</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *ta)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assemble structures for the trust DS and DNSKEY rrsets.  <a href="#928e50b29347119f51f1f6d08f2009da"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#70b601aa73ce073b327a31910219dfd1">anchors_ds_unsupported</a> (struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *ta)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check DS algos for support, warn if not.  <a href="#70b601aa73ce073b327a31910219dfd1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#b7da1443e79361562486ca5928d484cf">anchors_dnskey_unsupported</a> (struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *ta)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check DNSKEY algos for support, warn if not.  <a href="#b7da1443e79361562486ca5928d484cf"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#53696961717009ed0ee1c99f1613f9c6">anchors_assemble_rrsets</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assemble the rrsets in the anchors, ready for use by validator.  <a href="#53696961717009ed0ee1c99f1613f9c6"></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="val__anchor_8c.html#9f6ab456d9dcdd10e7c23049e4c8e3ce">anchors_apply_cfg</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, struct <a class="el" href="structconfig__file.html">config_file</a> *cfg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Process trust anchor config.  <a href="#9f6ab456d9dcdd10e7c23049e4c8e3ce"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#33fd2696313dc1c3c61af73a5147c44b">anchors_lookup</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors, uint8_t *qname, size_t qname_len, uint16_t qclass)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Given a qname/qclass combination, find the trust anchor closest above it.  <a href="#33fd2696313dc1c3c61af73a5147c44b"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="val__anchor_8c.html#0f514d5552589c14f1cc0a4709d13dbc">anchors_get_mem</a> (struct <a class="el" href="structval__anchors.html">val_anchors</a> *anchors)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get memory in use by the trust anchor storage.  <a href="#0f514d5552589c14f1cc0a4709d13dbc"></a><br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
This file contains storage for the trust anchors for the validator. 
<p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="46944f5898c21ef8008765b6d8318f93"></a><!-- doxytag: member="val_anchor.c::anchors_create" ref="46944f5898c21ef8008765b6d8318f93" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structval__anchors.html">val_anchors</a>* anchors_create           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create trust anchor storage. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>new storage or NULL on error. </dd></dl>

<p>References <a class="el" href="val__anchor_8c_source.html#l00055">anchor_cmp()</a>, <a class="el" href="val__anchor_8c_source.html#l00090">anchors_delete()</a>, <a class="el" href="rbtree_8c_source.html#l00077">rbtree_create()</a>, <a class="el" href="val__anchor_8h_source.html#l00055">val_anchors::region</a>, <a class="el" href="regional_8c_source.html#l00061">regional_create()</a>, and <a class="el" href="val__anchor_8h_source.html#l00062">val_anchors::tree</a>.</p>

<p>Referenced by <a class="el" href="unitanchor_8c_source.html#l00107">anchors_test()</a>, and <a class="el" href="validator_8c_source.html#l00101">val_apply_cfg()</a>.</p>

</div>
</div><p>
<a class="anchor" name="91486eabe8f437cbaa1ef6a3dfb93a9e"></a><!-- doxytag: member="val_anchor.c::anchors_delete" ref="91486eabe8f437cbaa1ef6a3dfb93a9e" args="(struct val_anchors *anchors)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void anchors_delete           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete trust anchor storage. 
<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>anchors,:</em>&nbsp;</td><td>to delete. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="val__anchor_8h_source.html#l00055">val_anchors::region</a>, <a class="el" href="regional_8c_source.html#l00108">regional_destroy()</a>, and <a class="el" href="val__anchor_8h_source.html#l00062">val_anchors::tree</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00071">anchors_create()</a>, <a class="el" href="unitanchor_8c_source.html#l00107">anchors_test()</a>, and <a class="el" href="validator_8c_source.html#l00172">val_deinit()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0fc5e042c7fbeabd1afb117d43970d41"></a><!-- doxytag: member="val_anchor.c::anchor_find" ref="0fc5e042c7fbeabd1afb117d43970d41" args="(struct val_anchors *anchors, uint8_t *name, int namelabs, size_t namelen, uint16_t dclass)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structtrust__anchor.html">trust_anchor</a>* anchor_find           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</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">int&nbsp;</td>
          <td class="paramname"> <em>namelabs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>namelen</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>
Find a trust anchor. 
<p>
Exact matching. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>anchors,:</em>&nbsp;</td><td>anchor storage. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name,:</em>&nbsp;</td><td>name of trust anchor (wireformat) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>namelabs,:</em>&nbsp;</td><td>labels in name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>namelen,:</em>&nbsp;</td><td>length of name </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dclass,:</em>&nbsp;</td><td>class of trust anchor </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>NULL if not found. </dd></dl>

<p>References <a class="el" href="val__anchor_8h_source.html#l00110">trust_anchor::dclass</a>, <a class="el" href="rbtree_8h_source.html#l00063">rbnode_t::key</a>, <a class="el" href="val__anchor_8h_source.html#l00089">trust_anchor::name</a>, <a class="el" href="val__anchor_8h_source.html#l00093">trust_anchor::namelabs</a>, <a class="el" href="val__anchor_8h_source.html#l00091">trust_anchor::namelen</a>, <a class="el" href="val__anchor_8h_source.html#l00087">trust_anchor::node</a>, <a class="el" href="rbtree_8c_source.html#l00280">rbtree_search()</a>, and <a class="el" href="val__anchor_8h_source.html#l00062">val_anchors::tree</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00214">anchor_store_new_key()</a>, and <a class="el" href="iter__utils_8c_source.html#l00476">iter_indicates_dnssec()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0caa910eb6281e3f353b2cf91a7b61f9"></a><!-- doxytag: member="val_anchor.c::anchor_store_new_key" ref="0caa910eb6281e3f353b2cf91a7b61f9" args="(struct val_anchors *anchors, uint8_t *name, uint16_t type, uint16_t dclass, uint8_t *rdata, size_t rdata_len)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static struct <a class="el" href="structtrust__anchor.html">trust_anchor</a>* anchor_store_new_key           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</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">uint16_t&nbsp;</td>
          <td class="paramname"> <em>type</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>dclass</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>rdata</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>rdata_len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static, read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This routine adds a new RR to a trust anchor. 
<p>
The trust anchor may not exist yet, and is created if not. The RR can be DS or DNSKEY. This routine will also remove duplicates; storing them only once. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>anchors,:</em>&nbsp;</td><td>anchor storage. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name,:</em>&nbsp;</td><td>name of trust anchor (wireformat) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type,:</em>&nbsp;</td><td>type or RR </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dclass,:</em>&nbsp;</td><td>class of RR </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rdata,:</em>&nbsp;</td><td>rdata wireformat, starting with rdlength. If NULL, nothing is stored, but an <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> is created. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rdata_len,:</em>&nbsp;</td><td>length of rdata including rdlength. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: NULL on error, else the trust anchor. </dd></dl>

<p>References <a class="el" href="val__anchor_8c_source.html#l00129">anchor_find()</a>, <a class="el" href="val__anchor_8c_source.html#l00170">anchor_find_key()</a>, <a class="el" href="val__anchor_8c_source.html#l00147">anchor_new_ta()</a>, <a class="el" href="val__anchor_8c_source.html#l00184">anchor_new_ta_key()</a>, <a class="el" href="dname_8c_source.html#l00384">dname_count_size_labels()</a>, <a class="el" href="val__anchor_8h_source.html#l00100">trust_anchor::keylist</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="val__anchor_8h_source.html#l00093">trust_anchor::namelabs</a>, <a class="el" href="val__anchor_8h_source.html#l00091">trust_anchor::namelen</a>, <a class="el" href="val__anchor_8h_source.html#l00072">ta_key::next</a>, <a class="el" href="val__anchor_8h_source.html#l00104">trust_anchor::numDNSKEY</a>, and <a class="el" href="val__anchor_8h_source.html#l00102">trust_anchor::numDS</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00294">anchor_insert_insecure()</a>, and <a class="el" href="val__anchor_8c_source.html#l00259">anchor_store_new_rr()</a>.</p>

</div>
</div><p>
<a class="anchor" name="e7cd30fdc2dbd1f4e5213e6740c30d90"></a><!-- doxytag: member="val_anchor.c::anchor_store_new_rr" ref="e7cd30fdc2dbd1f4e5213e6740c30d90" args="(struct val_anchors *anchors, ldns_buffer *buffer, ldns_rr *rr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static struct <a class="el" href="structtrust__anchor.html">trust_anchor</a>* anchor_store_new_rr           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ldns_buffer *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ldns_rr *&nbsp;</td>
          <td class="paramname"> <em>rr</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static, read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add new RR. 
<p>
It converts ldns RR to wire format. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>anchors,:</em>&nbsp;</td><td>anchor storage. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer,:</em>&nbsp;</td><td>parsing buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rr,:</em>&nbsp;</td><td>the rr (allocated by caller). </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>NULL on error, else the trust anchor. </dd></dl>

<p>References <a class="el" href="val__anchor_8c_source.html#l00214">anchor_store_new_key()</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="net__help_8c_source.html#l00265">log_nametypeclass()</a>, and <a class="el" href="log_8h_source.html#l00056">VERB_QUERY</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00339">anchor_read_file()</a>, and <a class="el" href="val__anchor_8c_source.html#l00309">anchor_store_str()</a>.</p>

</div>
</div><p>
<a class="anchor" name="5c6a39b91b77cdb91d51227c512252d1"></a><!-- doxytag: member="val_anchor.c::anchor_insert_insecure" ref="5c6a39b91b77cdb91d51227c512252d1" args="(struct val_anchors *anchors, const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static struct <a class="el" href="structtrust__anchor.html">trust_anchor</a>* anchor_insert_insecure           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static, read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Insert insecure anchor. 
<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>anchors,:</em>&nbsp;</td><td>anchor storage. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>str,:</em>&nbsp;</td><td>the domain name. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>NULL on error, Else last trust anchor point </dd></dl>

<p>References <a class="el" href="val__anchor_8c_source.html#l00214">anchor_store_new_key()</a>, and <a class="el" href="log_8c_source.html#l00241">log_err()</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00928">anchors_apply_cfg()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c28b8f0ecbfa5611d433397ce22fb753"></a><!-- doxytag: member="val_anchor.c::anchor_store_str" ref="c28b8f0ecbfa5611d433397ce22fb753" args="(struct val_anchors *anchors, ldns_buffer *buffer, const char *str)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structtrust__anchor.html">trust_anchor</a>* anchor_store_str           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ldns_buffer *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>str</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>
Store one string as trust anchor RR. 
<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>anchors,:</em>&nbsp;</td><td>anchor storage. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer,:</em>&nbsp;</td><td>parsing buffer, to generate the RR wireformat in. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>str,:</em>&nbsp;</td><td>string. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>NULL on error. </dd></dl>

<p>References <a class="el" href="val__anchor_8c_source.html#l00259">anchor_store_new_rr()</a>, and <a class="el" href="log_8c_source.html#l00241">log_err()</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00928">anchors_apply_cfg()</a>, <a class="el" href="val__anchor_8c_source.html#l00553">process_bind_contents()</a>, <a class="el" href="unitanchor_8c_source.html#l00065">test_anchor_one()</a>, and <a class="el" href="unitanchor_8c_source.html#l00084">test_anchors()</a>.</p>

</div>
</div><p>
<a class="anchor" name="9f01c0422470140740f121b645616ea6"></a><!-- doxytag: member="val_anchor.c::anchor_read_file" ref="9f01c0422470140740f121b645616ea6" args="(struct val_anchors *anchors, ldns_buffer *buffer, const char *fname, int onlyone)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static struct <a class="el" href="structtrust__anchor.html">trust_anchor</a>* anchor_read_file           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ldns_buffer *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>fname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>onlyone</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static, read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read a file with trust anchors. 
<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>anchors,:</em>&nbsp;</td><td>anchor storage. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer,:</em>&nbsp;</td><td>parsing buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>fname,:</em>&nbsp;</td><td>string. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>onlyone,:</em>&nbsp;</td><td>only one trust anchor allowed in file. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>NULL on error. Else last trust-anchor point. </dd></dl>

<p>References <a class="el" href="val__anchor_8c_source.html#l00259">anchor_store_new_rr()</a>, and <a class="el" href="log_8c_source.html#l00241">log_err()</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00928">anchors_apply_cfg()</a>.</p>

</div>
</div><p>
<a class="anchor" name="6dfba1d161d324ab1e2e0887ce076df2"></a><!-- doxytag: member="val_anchor.c::readkeyword_bindfile" ref="6dfba1d161d324ab1e2e0887ce076df2" args="(FILE *in, ldns_buffer *buf, int *line, int comments)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int readkeyword_bindfile           </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">ldns_buffer *&nbsp;</td>
          <td class="paramname"> <em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>line</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>comments</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read a keyword skipping bind comments; spaces, specials, restkeywords. 
<p>
The file is split into the following tokens: * special characters, on their own, rdlen=1, { } " ; * whitespace becomes a single ' ' or tab. Newlines become spaces. * other words ('keywords') * comments are skipped if desired / / C++ style comment to end of line # to end of line / * C style comment * / <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. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buf,:</em>&nbsp;</td><td>buffer, what is read is stored after current buffer position. Space is left in the buffer to write a terminating 0. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>line,:</em>&nbsp;</td><td>line number is increased per line, for error reports. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>comments,:</em>&nbsp;</td><td>if 0, comments are not possible and become text. if 1, comments are skipped entirely. In BIND files, this is when reading quoted strings, for example " base 64 text with / / in there " </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the number of character written to the buffer. 0 on end of file. </dd></dl>

<p>References <a class="el" href="log_8c_source.html#l00267">fatal_exit()</a>, <a class="el" href="val__anchor_8c_source.html#l00414">is_bind_special()</a>, and <a class="el" href="val__anchor_8c_source.html#l00403">skip_to_eol()</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00651">anchor_read_bind_file()</a>, <a class="el" href="val__anchor_8c_source.html#l00553">process_bind_contents()</a>, and <a class="el" href="val__anchor_8c_source.html#l00523">skip_to_special()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a82dcfafccc774099595d026bd9b9d41"></a><!-- doxytag: member="val_anchor.c::process_bind_contents" ref="a82dcfafccc774099595d026bd9b9d41" args="(struct val_anchors *anchors, ldns_buffer *buf, int *line, FILE *in)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int process_bind_contents           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ldns_buffer *&nbsp;</td>
          <td class="paramname"> <em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>line</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">FILE *&nbsp;</td>
          <td class="paramname"> <em>in</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
read contents of trusted-keys{ . 
<p>
.. ; clauses and insert keys into storage. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>anchors,:</em>&nbsp;</td><td>where to store keys </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buf,:</em>&nbsp;</td><td>buffer to use </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>line,:</em>&nbsp;</td><td>line number in file </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>in,:</em>&nbsp;</td><td>file to read from. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on error. </dd></dl>

<p>References <a class="el" href="val__anchor_8c_source.html#l00309">anchor_store_str()</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, and <a class="el" href="val__anchor_8c_source.html#l00448">readkeyword_bindfile()</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00651">anchor_read_bind_file()</a>.</p>

</div>
</div><p>
<a class="anchor" name="8c36f6df07b057b3e062a64c9f81f9e6"></a><!-- doxytag: member="val_anchor.c::anchor_read_bind_file" ref="8c36f6df07b057b3e062a64c9f81f9e6" args="(struct val_anchors *anchors, ldns_buffer *buffer, const char *fname)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int anchor_read_bind_file           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ldns_buffer *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>fname</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read a BIND9 like file with trust anchors in named.conf format. 
<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>anchors,:</em>&nbsp;</td><td>anchor storage. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer,:</em>&nbsp;</td><td>parsing buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>fname,:</em>&nbsp;</td><td>string. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false on error. </dd></dl>

<p>References <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="val__anchor_8c_source.html#l00553">process_bind_contents()</a>, <a class="el" href="val__anchor_8c_source.html#l00448">readkeyword_bindfile()</a>, <a class="el" href="val__anchor_8c_source.html#l00523">skip_to_special()</a>, <a class="el" href="log_8h_source.html#l00056">VERB_QUERY</a>, and <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00702">anchor_read_bind_file_wild()</a>.</p>

</div>
</div><p>
<a class="anchor" name="92adf53c8541fd21383bee0b6eb672e8"></a><!-- doxytag: member="val_anchor.c::anchor_read_bind_file_wild" ref="92adf53c8541fd21383bee0b6eb672e8" args="(struct val_anchors *anchors, ldns_buffer *buffer, const char *pat)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int anchor_read_bind_file_wild           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ldns_buffer *&nbsp;</td>
          <td class="paramname"> <em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>pat</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read a BIND9 like files with trust anchors in named.conf format. 
<p>
Performs wildcard processing of name. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>anchors,:</em>&nbsp;</td><td>anchor storage. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buffer,:</em>&nbsp;</td><td>parsing buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pat,:</em>&nbsp;</td><td>pattern string. (can be wildcarded) </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false on error. </dd></dl>

<p>References <a class="el" href="val__anchor_8c_source.html#l00651">anchor_read_bind_file()</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="log_8h_source.html#l00056">VERB_QUERY</a>, and <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00928">anchors_apply_cfg()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c1e1ff5c9adad378cca6511b43f98423"></a><!-- doxytag: member="val_anchor.c::assemble_it" ref="c1e1ff5c9adad378cca6511b43f98423" args="(struct regional *region, struct trust_anchor *ta, size_t num, uint16_t type)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static struct <a class="el" href="structub__packed__rrset__key.html">ub_packed_rrset_key</a>* assemble_it           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structregional.html">regional</a> *&nbsp;</td>
          <td class="paramname"> <em>region</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *&nbsp;</td>
          <td class="paramname"> <em>ta</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>num</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>type</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static, read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Assemble an rrset structure for the type. 
<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>region,:</em>&nbsp;</td><td>allocated in this region. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ta,:</em>&nbsp;</td><td>trust anchor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>num,:</em>&nbsp;</td><td>number of items to fetch from list. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>type,:</em>&nbsp;</td><td>fetch only items of this type. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>rrset or NULL on error. </dd></dl>

<p>References <a class="el" href="packed__rrset_8h_source.html#l00211">packed_rrset_data::count</a>, <a class="el" href="lruhash_8h_source.html#l00222">lruhash_entry::data</a>, <a class="el" href="val__anchor_8h_source.html#l00074">ta_key::data</a>, <a class="el" href="val__anchor_8h_source.html#l00110">trust_anchor::dclass</a>, <a class="el" href="packed__rrset_8h_source.html#l00064">packed_rrset_key::dname</a>, <a class="el" href="packed__rrset_8h_source.html#l00068">packed_rrset_key::dname_len</a>, <a class="el" href="packed__rrset_8h_source.html#l00094">ub_packed_rrset_key::entry</a>, <a class="el" href="val__anchor_8h_source.html#l00100">trust_anchor::keylist</a>, <a class="el" href="val__anchor_8h_source.html#l00076">ta_key::len</a>, <a class="el" href="val__anchor_8h_source.html#l00089">trust_anchor::name</a>, <a class="el" href="val__anchor_8h_source.html#l00091">trust_anchor::namelen</a>, <a class="el" href="val__anchor_8h_source.html#l00072">ta_key::next</a>, <a class="el" href="regional_8c_source.html#l00116">regional_alloc()</a>, <a class="el" href="regional_8c_source.html#l00146">regional_alloc_init()</a>, <a class="el" href="packed__rrset_8h_source.html#l00105">ub_packed_rrset_key::rk</a>, <a class="el" href="packed__rrset_8h_source.html#l00229">packed_rrset_data::rr_data</a>, <a class="el" href="packed__rrset_8h_source.html#l00219">packed_rrset_data::rr_len</a>, <a class="el" href="packed__rrset_8h_source.html#l00221">packed_rrset_data::rr_ttl</a>, <a class="el" href="packed__rrset_8h_source.html#l00077">packed_rrset_key::rrset_class</a>, <a class="el" href="packed__rrset_8h_source.html#l00150">rrset_trust_ultimate</a>, <a class="el" href="packed__rrset_8h_source.html#l00215">packed_rrset_data::trust</a>, <a class="el" href="val__anchor_8h_source.html#l00078">ta_key::type</a>, and <a class="el" href="packed__rrset_8h_source.html#l00075">packed_rrset_key::type</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00830">anchors_assemble()</a>.</p>

</div>
</div><p>
<a class="anchor" name="928e50b29347119f51f1f6d08f2009da"></a><!-- doxytag: member="val_anchor.c::anchors_assemble" ref="928e50b29347119f51f1f6d08f2009da" args="(struct val_anchors *anchors, struct trust_anchor *ta)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int anchors_assemble           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *&nbsp;</td>
          <td class="paramname"> <em>ta</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Assemble structures for the trust DS and DNSKEY rrsets. 
<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>anchors,:</em>&nbsp;</td><td>trust anchor storage. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ta,:</em>&nbsp;</td><td>trust anchor </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: false on error. </dd></dl>

<p>References <a class="el" href="val__anchor_8c_source.html#l00773">assemble_it()</a>, <a class="el" href="val__anchor_8h_source.html#l00108">trust_anchor::dnskey_rrset</a>, <a class="el" href="val__anchor_8h_source.html#l00106">trust_anchor::ds_rrset</a>, <a class="el" href="val__anchor_8h_source.html#l00104">trust_anchor::numDNSKEY</a>, <a class="el" href="val__anchor_8h_source.html#l00102">trust_anchor::numDS</a>, and <a class="el" href="val__anchor_8h_source.html#l00055">val_anchors::region</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00886">anchors_assemble_rrsets()</a>.</p>

</div>
</div><p>
<a class="anchor" name="70b601aa73ce073b327a31910219dfd1"></a><!-- doxytag: member="val_anchor.c::anchors_ds_unsupported" ref="70b601aa73ce073b327a31910219dfd1" args="(struct trust_anchor *ta)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static size_t anchors_ds_unsupported           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *&nbsp;</td>
          <td class="paramname"> <em>ta</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check DS algos for support, warn if not. 
<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>ta,:</em>&nbsp;</td><td>trust anchor </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of DS anchors with unsupported algorithms. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00357">ds_digest_algo_is_supported()</a>, <a class="el" href="val__sigcrypt_8c_source.html#l00386">ds_key_algo_is_supported()</a>, <a class="el" href="val__anchor_8h_source.html#l00106">trust_anchor::ds_rrset</a>, and <a class="el" href="val__anchor_8h_source.html#l00102">trust_anchor::numDS</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00886">anchors_assemble_rrsets()</a>.</p>

</div>
</div><p>
<a class="anchor" name="b7da1443e79361562486ca5928d484cf"></a><!-- doxytag: member="val_anchor.c::anchors_dnskey_unsupported" ref="b7da1443e79361562486ca5928d484cf" args="(struct trust_anchor *ta)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static size_t anchors_dnskey_unsupported           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structtrust__anchor.html">trust_anchor</a> *&nbsp;</td>
          <td class="paramname"> <em>ta</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check DNSKEY algos for support, warn if not. 
<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>ta,:</em>&nbsp;</td><td>trust anchor </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>number of DNSKEY anchors with unsupported algorithms. </dd></dl>

<p>References <a class="el" href="val__sigcrypt_8c_source.html#l00402">dnskey_algo_is_supported()</a>, <a class="el" href="val__anchor_8h_source.html#l00108">trust_anchor::dnskey_rrset</a>, and <a class="el" href="val__anchor_8h_source.html#l00104">trust_anchor::numDNSKEY</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00886">anchors_assemble_rrsets()</a>.</p>

</div>
</div><p>
<a class="anchor" name="53696961717009ed0ee1c99f1613f9c6"></a><!-- doxytag: member="val_anchor.c::anchors_assemble_rrsets" ref="53696961717009ed0ee1c99f1613f9c6" args="(struct val_anchors *anchors)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int anchors_assemble_rrsets           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Assemble the rrsets in the anchors, ready for use by validator. 
<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>anchors,:</em>&nbsp;</td><td>trust anchor storage. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: false on error. </dd></dl>

<p>References <a class="el" href="val__anchor_8c_source.html#l00830">anchors_assemble()</a>, <a class="el" href="val__anchor_8c_source.html#l00870">anchors_dnskey_unsupported()</a>, <a class="el" href="val__anchor_8c_source.html#l00853">anchors_ds_unsupported()</a>, <a class="el" href="val__anchor_8h_source.html#l00110">trust_anchor::dclass</a>, <a class="el" href="dname_8c_source.html#l00526">dname_str()</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="net__help_8c_source.html#l00265">log_nametypeclass()</a>, <a class="el" href="log_8c_source.html#l00254">log_warn()</a>, <a class="el" href="val__anchor_8h_source.html#l00089">trust_anchor::name</a>, <a class="el" href="val__anchor_8h_source.html#l00087">trust_anchor::node</a>, <a class="el" href="val__anchor_8h_source.html#l00104">trust_anchor::numDNSKEY</a>, <a class="el" href="val__anchor_8h_source.html#l00102">trust_anchor::numDS</a>, <a class="el" href="rbtree_8c_source.html#l00326">rbtree_delete()</a>, <a class="el" href="rbtree_8c_source.html#l00544">rbtree_first()</a>, <a class="el" href="rbtree_8c_source.html#l00566">rbtree_next()</a>, <a class="el" href="rbtree_8h_source.html#l00069">RBTREE_NULL</a>, and <a class="el" href="val__anchor_8h_source.html#l00062">val_anchors::tree</a>.</p>

<p>Referenced by <a class="el" href="val__anchor_8c_source.html#l00928">anchors_apply_cfg()</a>.</p>

</div>
</div><p>
<a class="anchor" name="9f6ab456d9dcdd10e7c23049e4c8e3ce"></a><!-- doxytag: member="val_anchor.c::anchors_apply_cfg" ref="9f6ab456d9dcdd10e7c23049e4c8e3ce" args="(struct val_anchors *anchors, struct config_file *cfg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int anchors_apply_cfg           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structconfig__file.html">config_file</a> *&nbsp;</td>
          <td class="paramname"> <em>cfg</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Process trust anchor config. 
<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>anchors,:</em>&nbsp;</td><td>struct anchor storage </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cfg,:</em>&nbsp;</td><td>config options. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on error. </dd></dl>

<p>References <a class="el" href="val__anchor_8c_source.html#l00294">anchor_insert_insecure()</a>, <a class="el" href="val__anchor_8c_source.html#l00702">anchor_read_bind_file_wild()</a>, <a class="el" href="val__anchor_8c_source.html#l00339">anchor_read_file()</a>, <a class="el" href="val__anchor_8c_source.html#l00309">anchor_store_str()</a>, <a class="el" href="val__anchor_8c_source.html#l00886">anchors_assemble_rrsets()</a>, <a class="el" href="config__file_8h_source.html#l00162">config_file::chrootdir</a>, <a class="el" href="val__anchor_8h_source.html#l00064">val_anchors::dlv_anchor</a>, <a class="el" href="config__file_8h_source.html#l00196">config_file::dlv_anchor_file</a>, <a class="el" href="config__file_8h_source.html#l00198">config_file::dlv_anchor_list</a>, <a class="el" href="config__file_8h_source.html#l00200">config_file::domain_insecure</a>, <a class="el" href="val__anchor_8c_source.html#l00101">init_parents()</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="config__file_8h_source.html#l00280">config_strlist::next</a>, <a class="el" href="config__file_8h_source.html#l00282">config_strlist::str</a>, <a class="el" href="config__file_8h_source.html#l00190">config_file::trust_anchor_file_list</a>, <a class="el" href="config__file_8h_source.html#l00192">config_file::trust_anchor_list</a>, and <a class="el" href="config__file_8h_source.html#l00194">config_file::trusted_keys_file_list</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l00101">val_apply_cfg()</a>.</p>

</div>
</div><p>
<a class="anchor" name="33fd2696313dc1c3c61af73a5147c44b"></a><!-- doxytag: member="val_anchor.c::anchors_lookup" ref="33fd2696313dc1c3c61af73a5147c44b" args="(struct val_anchors *anchors, uint8_t *qname, size_t qname_len, uint16_t qclass)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structtrust__anchor.html">trust_anchor</a>* anchors_lookup           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint8_t *&nbsp;</td>
          <td class="paramname"> <em>qname</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>qname_len</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>qclass</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>
Given a qname/qclass combination, find the trust anchor closest above it. 
<p>
Or return NULL if none exists.<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>anchors,:</em>&nbsp;</td><td>struct anchor storage </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>qname,:</em>&nbsp;</td><td>query name, uncompressed wireformat. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>qname_len,:</em>&nbsp;</td><td>length of qname. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>qclass,:</em>&nbsp;</td><td>class to query for. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the trust anchor or NULL if none is found. </dd></dl>

<p>References <a class="el" href="val__anchor_8h_source.html#l00110">trust_anchor::dclass</a>, <a class="el" href="dname_8c_source.html#l00369">dname_count_labels()</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="val__anchor_8h_source.html#l00089">trust_anchor::name</a>, <a class="el" href="val__anchor_8h_source.html#l00093">trust_anchor::namelabs</a>, <a class="el" href="val__anchor_8h_source.html#l00091">trust_anchor::namelen</a>, <a class="el" href="val__anchor_8h_source.html#l00087">trust_anchor::node</a>, <a class="el" href="val__anchor_8h_source.html#l00095">trust_anchor::parent</a>, <a class="el" href="rbtree_8c_source.html#l00507">rbtree_find_less_equal()</a>, and <a class="el" href="val__anchor_8h_source.html#l00062">val_anchors::tree</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l01158">processInit()</a>, <a class="el" href="unitanchor_8c_source.html#l00049">test_anchor_empty()</a>, <a class="el" href="unitanchor_8c_source.html#l00065">test_anchor_one()</a>, <a class="el" href="unitanchor_8c_source.html#l00084">test_anchors()</a>, and <a class="el" href="val__utils_8c_source.html#l00716">val_mark_indeterminate()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0f514d5552589c14f1cc0a4709d13dbc"></a><!-- doxytag: member="val_anchor.c::anchors_get_mem" ref="0f514d5552589c14f1cc0a4709d13dbc" args="(struct val_anchors *anchors)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t anchors_get_mem           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structval__anchors.html">val_anchors</a> *&nbsp;</td>
          <td class="paramname"> <em>anchors</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get memory in use by the trust anchor storage. 
<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>anchors,:</em>&nbsp;</td><td>anchor storage. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>memory in use in bytes. </dd></dl>

<p>References <a class="el" href="val__anchor_8h_source.html#l00055">val_anchors::region</a>, and <a class="el" href="regional_8c_source.html#l00214">regional_get_mem()</a>.</p>

<p>Referenced by <a class="el" href="validator_8c_source.html#l02582">val_get_mem()</a>.</p>

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