<!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/validator.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 Page</span></a></li> <li><a href="annotated.html"><span>Data 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 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>validator.h File Reference</h1>This file contains a module that performs validation of DNS queries. <a href="#_details">More...</a> <p> <code>#include "<a class="el" href="module_8h.html">util/module.h</a>"</code><br> <code>#include "<a class="el" href="msgreply_8h.html">util/data/msgreply.h</a>"</code><br> <code>#include "<a class="el" href="val__utils_8h.html">validator/val_utils.h</a>"</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 </td><td class="memItemRight" valign="bottom"><a class="el" href="structval__env.html">val_env</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Global state for the validator. <a href="structval__env.html#_details">More...</a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structval__qstate.html">val_qstate</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Per query state for the validator module. <a href="structval__qstate.html#_details">More...</a><br></td></tr> <tr><td colspan="2"><br><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="validator_8h.html#5096140374e137d9909f9b40802da94f">NULL_KEY_TTL</a> 900</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">This is the TTL to use when a trust anchor fails to prime. <a href="#5096140374e137d9909f9b40802da94f"></a><br></td></tr> <tr><td colspan="2"><br><h2>Enumerations</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="validator_8h.html#29853b25a6abd9830861ec0b723b36c3">val_state</a> { <br> <a class="el" href="validator_8h.html#29853b25a6abd9830861ec0b723b36c3397a548383fab1558fc5095c4be4f5f1">VAL_INIT_STATE</a> = 0, <a class="el" href="validator_8h.html#29853b25a6abd9830861ec0b723b36c39fcdd9abb072881601e16a1d244193ff">VAL_FINDKEY_STATE</a>, <a class="el" href="validator_8h.html#29853b25a6abd9830861ec0b723b36c37af99e8f0d139a507a767160a1aa5dc9">VAL_VALIDATE_STATE</a>, <a class="el" href="validator_8h.html#29853b25a6abd9830861ec0b723b36c3517b673e970006b1a8a6c0584b22157e">VAL_FINISHED_STATE</a>, <br> <a class="el" href="validator_8h.html#29853b25a6abd9830861ec0b723b36c3cb8bcf8037955fb397e76975c10500d3">VAL_DLVLOOKUP_STATE</a> <br> }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">State of the validator for a query. <a href="validator_8h.html#29853b25a6abd9830861ec0b723b36c3">More...</a><br></td></tr> <tr><td colspan="2"><br><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structmodule__func__block.html">module_func_block</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="validator_8h.html#e2081327355286f24a9840e2f5617435">val_get_funcblock</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the validator function block. <a href="#e2081327355286f24a9840e2f5617435"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="validator_8h.html#681e5a71d2b5d7ec01110ad344cc34c9">val_state_to_string</a> (enum <a class="el" href="validator_8h.html#29853b25a6abd9830861ec0b723b36c3">val_state</a> state)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get validator state as a string. <a href="#681e5a71d2b5d7ec01110ad344cc34c9"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b0da6ed917ff734a0d90e6bd62f817b3"></a><!-- doxytag: member="validator.h::val_init" ref="b0da6ed917ff734a0d90e6bd62f817b3" args="(struct module_env *env, int id)" --> int </td><td class="memItemRight" valign="bottom"><a class="el" href="validator_8h.html#b0da6ed917ff734a0d90e6bd62f817b3">val_init</a> (struct <a class="el" href="structmodule__env.html">module_env</a> *env, int id)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">validator init <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0b37ba2726c6d1557de52abd8a8dcddd"></a><!-- doxytag: member="validator.h::val_deinit" ref="0b37ba2726c6d1557de52abd8a8dcddd" args="(struct module_env *env, int id)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="validator_8h.html#0b37ba2726c6d1557de52abd8a8dcddd">val_deinit</a> (struct <a class="el" href="structmodule__env.html">module_env</a> *env, int id)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">validator deinit <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ad92c0aa0148b57d40117749871dd58d"></a><!-- doxytag: member="validator.h::val_operate" ref="ad92c0aa0148b57d40117749871dd58d" args="(struct module_qstate *qstate, enum module_ev event, int id, struct outbound_entry *outbound)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="validator_8h.html#ad92c0aa0148b57d40117749871dd58d">val_operate</a> (struct <a class="el" href="structmodule__qstate.html">module_qstate</a> *qstate, enum <a class="el" href="module_8h.html#3d7416154a3bc44d78e8a6e99efc4376">module_ev</a> event, int id, struct <a class="el" href="structoutbound__entry.html">outbound_entry</a> *outbound)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">validator operate on a query <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="validator_8h.html#ff89c23cd064ae618b78e5161bcaa775">val_inform_super</a> (struct <a class="el" href="structmodule__qstate.html">module_qstate</a> *qstate, int id, struct <a class="el" href="structmodule__qstate.html">module_qstate</a> *super)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">inform validator super. <a href="#ff89c23cd064ae618b78e5161bcaa775"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="190dae4b6afa65766fa9e75555fee1e7"></a><!-- doxytag: member="validator.h::val_clear" ref="190dae4b6afa65766fa9e75555fee1e7" args="(struct module_qstate *qstate, int id)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="validator_8h.html#190dae4b6afa65766fa9e75555fee1e7">val_clear</a> (struct <a class="el" href="structmodule__qstate.html">module_qstate</a> *qstate, int id)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">validator cleanup query state <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="validator_8h.html#e683ce0eb48515250f78d364020c30ec">val_get_mem</a> (struct <a class="el" href="structmodule__env.html">module_env</a> *env, int id)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Debug helper routine that assists <a class="el" href="structworker.html" title="Structure holding working information for unbound.">worker</a> in determining memory in use. <a href="#e683ce0eb48515250f78d364020c30ec"></a><br></td></tr> </table> <hr><h2>Detailed Description</h2> This file contains a module that performs validation of DNS queries. <p> According to RFC 4034. <hr><h2>Define Documentation</h2> <a class="anchor" name="5096140374e137d9909f9b40802da94f"></a><!-- doxytag: member="validator.h::NULL_KEY_TTL" ref="5096140374e137d9909f9b40802da94f" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define NULL_KEY_TTL 900 </td> </tr> </table> </div> <div class="memdoc"> <p> This is the TTL to use when a trust anchor fails to prime. <p> A trust anchor will be primed no more often than this interval. <p>Referenced by <a class="el" href="validator_8c_source.html#l02045">primeResponseToKE()</a>.</p> </div> </div><p> <hr><h2>Enumeration Type Documentation</h2> <a class="anchor" name="29853b25a6abd9830861ec0b723b36c3"></a><!-- doxytag: member="validator.h::val_state" ref="29853b25a6abd9830861ec0b723b36c3" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="validator_8h.html#29853b25a6abd9830861ec0b723b36c3">val_state</a> </td> </tr> </table> </div> <div class="memdoc"> <p> State of the validator for a query. <p> <dl compact><dt><b>Enumerator: </b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" name="29853b25a6abd9830861ec0b723b36c3397a548383fab1558fc5095c4be4f5f1"></a><!-- doxytag: member="VAL_INIT_STATE" ref="29853b25a6abd9830861ec0b723b36c3397a548383fab1558fc5095c4be4f5f1" args="" -->VAL_INIT_STATE</em> </td><td> initial state for validation </td></tr> <tr><td valign="top"><em><a class="anchor" name="29853b25a6abd9830861ec0b723b36c39fcdd9abb072881601e16a1d244193ff"></a><!-- doxytag: member="VAL_FINDKEY_STATE" ref="29853b25a6abd9830861ec0b723b36c39fcdd9abb072881601e16a1d244193ff" args="" -->VAL_FINDKEY_STATE</em> </td><td> find the proper keys for validation, follow trust chain </td></tr> <tr><td valign="top"><em><a class="anchor" name="29853b25a6abd9830861ec0b723b36c37af99e8f0d139a507a767160a1aa5dc9"></a><!-- doxytag: member="VAL_VALIDATE_STATE" ref="29853b25a6abd9830861ec0b723b36c37af99e8f0d139a507a767160a1aa5dc9" args="" -->VAL_VALIDATE_STATE</em> </td><td> validate the answer, using found key <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> </td></tr> <tr><td valign="top"><em><a class="anchor" name="29853b25a6abd9830861ec0b723b36c3517b673e970006b1a8a6c0584b22157e"></a><!-- doxytag: member="VAL_FINISHED_STATE" ref="29853b25a6abd9830861ec0b723b36c3517b673e970006b1a8a6c0584b22157e" args="" -->VAL_FINISHED_STATE</em> </td><td> finish up </td></tr> <tr><td valign="top"><em><a class="anchor" name="29853b25a6abd9830861ec0b723b36c3cb8bcf8037955fb397e76975c10500d3"></a><!-- doxytag: member="VAL_DLVLOOKUP_STATE" ref="29853b25a6abd9830861ec0b723b36c3cb8bcf8037955fb397e76975c10500d3" args="" -->VAL_DLVLOOKUP_STATE</em> </td><td> DLV lookup state, processing DLV queries. </td></tr> </table> </dl> </div> </div><p> <hr><h2>Function Documentation</h2> <a class="anchor" name="e2081327355286f24a9840e2f5617435"></a><!-- doxytag: member="validator.h::val_get_funcblock" ref="e2081327355286f24a9840e2f5617435" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">struct <a class="el" href="structmodule__func__block.html">module_func_block</a>* val_get_funcblock </td> <td>(</td> <td class="paramname"> </td> <td> ) </td> <td><code> [read]</code></td> </tr> </table> </div> <div class="memdoc"> <p> Get the validator function block. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>: function block with function pointers to validator methods. </dd></dl> <p>Referenced by <a class="el" href="unbound-checkconf_8c_source.html#l00547">checkconf()</a>, and <a class="el" href="modstack_8c_source.html#l00132">module_funcs_avail()</a>.</p> </div> </div><p> <a class="anchor" name="681e5a71d2b5d7ec01110ad344cc34c9"></a><!-- doxytag: member="validator.h::val_state_to_string" ref="681e5a71d2b5d7ec01110ad344cc34c9" args="(enum val_state state)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* val_state_to_string </td> <td>(</td> <td class="paramtype">enum <a class="el" href="validator_8h.html#29853b25a6abd9830861ec0b723b36c3">val_state</a> </td> <td class="paramname"> <em>state</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Get validator state as a string. <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>state,:</em> </td><td>to convert </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>constant string that is printable. </dd></dl> <p>References <a class="el" href="validator_8h_source.html#l00136">VAL_DLVLOOKUP_STATE</a>, <a class="el" href="validator_8h_source.html#l00130">VAL_FINDKEY_STATE</a>, <a class="el" href="validator_8h_source.html#l00134">VAL_FINISHED_STATE</a>, <a class="el" href="validator_8h_source.html#l00128">VAL_INIT_STATE</a>, and <a class="el" href="validator_8h_source.html#l00132">VAL_VALIDATE_STATE</a>.</p> <p>Referenced by <a class="el" href="validator_8c_source.html#l01937">val_handle()</a>.</p> </div> </div><p> <a class="anchor" name="ff89c23cd064ae618b78e5161bcaa775"></a><!-- doxytag: member="validator.h::val_inform_super" ref="ff89c23cd064ae618b78e5161bcaa775" args="(struct module_qstate *qstate, int id, struct module_qstate *super)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void val_inform_super </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmodule__qstate.html">module_qstate</a> * </td> <td class="paramname"> <em>qstate</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>id</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">struct <a class="el" href="structmodule__qstate.html">module_qstate</a> * </td> <td class="paramname"> <em>super</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> inform validator super. <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>qstate,:</em> </td><td>query state that finished. </td></tr> <tr><td valign="top"></td><td valign="top"><em>id,:</em> </td><td>module id. </td></tr> <tr><td valign="top"></td><td valign="top"><em>super,:</em> </td><td>the qstate to inform. </td></tr> </table> </dl> <p>References <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="msgreply_8c_source.html#l00788">log_query_info()</a>, <a class="el" href="module_8h_source.html#l00284">module_qstate::minfo</a>, <a class="el" href="validator_8c_source.html#l02453">process_dlv_response()</a>, <a class="el" href="validator_8c_source.html#l02358">process_dnskey_response()</a>, <a class="el" href="validator_8c_source.html#l02300">process_ds_response()</a>, <a class="el" href="validator_8c_source.html#l02422">process_prime_response()</a>, <a class="el" href="module_8h_source.html#l00264">module_qstate::qinfo</a>, <a class="el" href="msgreply_8h_source.html#l00068">query_info::qtype</a>, <a class="el" href="module_8h_source.html#l00273">module_qstate::return_msg</a>, <a class="el" href="module_8h_source.html#l00275">module_qstate::return_rcode</a>, <a class="el" href="log_8h_source.html#l00058">VERB_ALGO</a>, <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>, and <a class="el" href="validator_8h_source.html#l00203">val_qstate::wait_prime_ta</a>.</p> <p>Referenced by <a class="el" href="fptr__wlist_8c_source.html#l00332">fptr_whitelist_mod_inform_super()</a>.</p> </div> </div><p> <a class="anchor" name="e683ce0eb48515250f78d364020c30ec"></a><!-- doxytag: member="validator.h::val_get_mem" ref="e683ce0eb48515250f78d364020c30ec" args="(struct module_env *env, int id)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">size_t val_get_mem </td> <td>(</td> <td class="paramtype">struct <a class="el" href="structmodule__env.html">module_env</a> * </td> <td class="paramname"> <em>env</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>id</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p> Debug helper routine that assists <a class="el" href="structworker.html" title="Structure holding working information for unbound.">worker</a> in determining memory in use. <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>env,:</em> </td><td>module environment </td></tr> <tr><td valign="top"></td><td valign="top"><em>id,:</em> </td><td>module id. </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="module_8h_source.html#l00208">module_env::anchors</a>, <a class="el" href="val__anchor_8c_source.html#l01041">anchors_get_mem()</a>, <a class="el" href="validator_8h_source.html#l00065">val_env::kcache</a>, <a class="el" href="val__kcache_8c_source.html#l00150">key_cache_get_mem()</a>, <a class="el" href="module_8h_source.html#l00216">module_env::modinfo</a>, <a class="el" href="validator_8h_source.html#l00068">val_env::neg_cache</a>, <a class="el" href="validator_8h_source.html#l00102">val_env::nsec3_keyiter_count</a>, and <a class="el" href="val__neg_8c_source.html#l00095">val_neg_get_mem()</a>.</p> <p>Referenced by <a class="el" href="fptr__wlist_8c_source.html#l00356">fptr_whitelist_mod_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 <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>