<!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: iterator/iterator.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_fb9f2b54f370aa6f4de91e34db18da16.html">iterator</a> </div> </div> <div class="contents"> <h1>iterator.h File Reference</h1>This file contains a module that performs recusive iterative DNS query processing. <a href="#_details">More...</a> <p> <code>#include "<a class="el" href="outbound__list_8h.html">services/outbound_list.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="module_8h.html">util/module.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="structiter__env.html">iter_env</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Global state for the iterator. <a href="structiter__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="structiter__qstate.html">iter_qstate</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Per query state for the iterator module. <a href="structiter__qstate.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="structiter__prep__list.html">iter_prep_list</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">List of prepend items. <a href="structiter__prep__list.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="iterator_8h.html#db5addd8a915205a3a8667a3eb1c0610">MAX_RESTART_COUNT</a> 8</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">max number of query restarts. <a href="#db5addd8a915205a3a8667a3eb1c0610"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="iterator_8h.html#30bc94d263312d49b1cce20462caddc4">MAX_REFERRAL_COUNT</a> 30</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">max number of referrals. <a href="#30bc94d263312d49b1cce20462caddc4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="50d52ffa15d93eb25e10755e84d5deb9"></a><!-- doxytag: member="iterator.h::UNKNOWN_SERVER_NICENESS" ref="50d52ffa15d93eb25e10755e84d5deb9" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="iterator_8h.html#50d52ffa15d93eb25e10755e84d5deb9">UNKNOWN_SERVER_NICENESS</a> 376</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">how nice is a server without further information, in msec Equals rtt initial timeout value. <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="iterator_8h.html#715a6e35247db03a45d8ea196c44b003">USEFUL_SERVER_TOP_TIMEOUT</a> 120000</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">maximum timeout before a host is deemed unsuitable, in msec. <a href="#715a6e35247db03a45d8ea196c44b003"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ee6078de25af5dc0f8c2cfcdfd808858"></a><!-- doxytag: member="iterator.h::OUTBOUND_MSG_RETRY" ref="ee6078de25af5dc0f8c2cfcdfd808858" args="" --> #define </td><td class="memItemRight" valign="bottom"><a class="el" href="iterator_8h.html#ee6078de25af5dc0f8c2cfcdfd808858">OUTBOUND_MSG_RETRY</a> 5</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">number of retries on outgoing queries <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="iterator_8h.html#9c05c9f579de1fb9da11a9afa1f57f69">RTT_BAND</a> 400</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">RTT band, within this amount from the best, servers are chosen randomly. <a href="#9c05c9f579de1fb9da11a9afa1f57f69"></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="iterator_8h.html#691d8b62aab93aba0712e3db11d98d71">iter_state</a> { <br> <a class="el" href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d71432a6434eae32f84850eb16312a59ac2">INIT_REQUEST_STATE</a> = 0, <a class="el" href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d719bdb6dc72ef39d6bc04d80ae703ffe1e">INIT_REQUEST_2_STATE</a>, <a class="el" href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d711e0cf33b83e09036d2ab741bcc188e04">INIT_REQUEST_3_STATE</a>, <a class="el" href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d71e1f1e2311b2f95e361695dc5d8a3f1d4">QUERYTARGETS_STATE</a>, <br> <a class="el" href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d71867767e66b2ebf4239cd9cfc0e16f69e">QUERY_RESP_STATE</a>, <a class="el" href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d7140bb8cedcb5fc146399afcec750f2ce1">PRIME_RESP_STATE</a>, <a class="el" href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d712f27b85ac02afc3ee02569b4b4f659fc">FINISHED_STATE</a> <br> }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">State of the iterator for a query. <a href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d71">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="iterator_8h.html#14895181630c3154c10d85f13392fa36">iter_get_funcblock</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the iterator function block. <a href="#14895181630c3154c10d85f13392fa36"></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="iterator_8h.html#043f02aa5cb5076498a300b152c11b29">iter_state_to_string</a> (enum <a class="el" href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d71">iter_state</a> state)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get iterator state as a string. <a href="#043f02aa5cb5076498a300b152c11b29"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="iterator_8h.html#6df144c1f5536d55b2fcf73f4ea70c22">iter_state_is_responsestate</a> (enum <a class="el" href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d71">iter_state</a> s)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">See if iterator state is a response state. <a href="#6df144c1f5536d55b2fcf73f4ea70c22"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="98c5219896591cebc16f0305fbc30039"></a><!-- doxytag: member="iterator.h::iter_init" ref="98c5219896591cebc16f0305fbc30039" args="(struct module_env *env, int id)" --> int </td><td class="memItemRight" valign="bottom"><a class="el" href="iterator_8h.html#98c5219896591cebc16f0305fbc30039">iter_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">iterator init <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c4207b4c6207ae9028f546c9ccd4829d"></a><!-- doxytag: member="iterator.h::iter_deinit" ref="c4207b4c6207ae9028f546c9ccd4829d" args="(struct module_env *env, int id)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="iterator_8h.html#c4207b4c6207ae9028f546c9ccd4829d">iter_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">iterator deinit <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e9c127d133b0063cd5e1d70961d8c74e"></a><!-- doxytag: member="iterator.h::iter_operate" ref="e9c127d133b0063cd5e1d70961d8c74e" 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="iterator_8h.html#e9c127d133b0063cd5e1d70961d8c74e">iter_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">iterator 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="iterator_8h.html#98d45f2b3d4fbb121dcf41ea08db47a4">iter_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">Return priming query results to interestes super querystates. <a href="#98d45f2b3d4fbb121dcf41ea08db47a4"></a><br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b24ab14711ff6e06e410e9288e2207a5"></a><!-- doxytag: member="iterator.h::iter_clear" ref="b24ab14711ff6e06e410e9288e2207a5" args="(struct module_qstate *qstate, int id)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="iterator_8h.html#b24ab14711ff6e06e410e9288e2207a5">iter_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">iterator cleanup query state <br></td></tr> <tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="65989cc4b13122873b79a975a89a8a3c"></a><!-- doxytag: member="iterator.h::iter_get_mem" ref="65989cc4b13122873b79a975a89a8a3c" args="(struct module_env *env, int id)" --> size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="iterator_8h.html#65989cc4b13122873b79a975a89a8a3c">iter_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">iterator alloc size routine <br></td></tr> </table> <hr><h2>Detailed Description</h2> This file contains a module that performs recusive iterative DNS query processing. <p> <hr><h2>Define Documentation</h2> <a class="anchor" name="db5addd8a915205a3a8667a3eb1c0610"></a><!-- doxytag: member="iterator.h::MAX_RESTART_COUNT" ref="db5addd8a915205a3a8667a3eb1c0610" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MAX_RESTART_COUNT 8 </td> </tr> </table> </div> <div class="memdoc"> <p> max number of query restarts. <p> Determines max number of CNAME chain. <p>Referenced by <a class="el" href="iterator_8c_source.html#l00827">processInitRequest()</a>.</p> </div> </div><p> <a class="anchor" name="30bc94d263312d49b1cce20462caddc4"></a><!-- doxytag: member="iterator.h::MAX_REFERRAL_COUNT" ref="30bc94d263312d49b1cce20462caddc4" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define MAX_REFERRAL_COUNT 30 </td> </tr> </table> </div> <div class="memdoc"> <p> max number of referrals. <p> Makes sure resolver does not run away <p>Referenced by <a class="el" href="iterator_8c_source.html#l01249">processQueryTargets()</a>.</p> </div> </div><p> <a class="anchor" name="715a6e35247db03a45d8ea196c44b003"></a><!-- doxytag: member="iterator.h::USEFUL_SERVER_TOP_TIMEOUT" ref="715a6e35247db03a45d8ea196c44b003" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define USEFUL_SERVER_TOP_TIMEOUT 120000 </td> </tr> </table> </div> <div class="memdoc"> <p> maximum timeout before a host is deemed unsuitable, in msec. <p> After host_ttl this will be timed out and the host will be tried again. Equals RTT_MAX_TIMEOUT <p>Referenced by <a class="el" href="iter__utils_8c_source.html#l00234">iter_filter_order()</a>, <a class="el" href="iter__utils_8c_source.html#l00169">iter_filter_unsuitable()</a>, and <a class="el" href="iter__utils_8c_source.html#l00286">iter_server_selection()</a>.</p> </div> </div><p> <a class="anchor" name="9c05c9f579de1fb9da11a9afa1f57f69"></a><!-- doxytag: member="iterator.h::RTT_BAND" ref="9c05c9f579de1fb9da11a9afa1f57f69" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define RTT_BAND 400 </td> </tr> </table> </div> <div class="memdoc"> <p> RTT band, within this amount from the best, servers are chosen randomly. <p> Chosen so that the UNKNOWN_SERVER_NICENESS falls within the band of a fast server, this causes server exploration as a side benefit. msec. <p>Referenced by <a class="el" href="iter__utils_8c_source.html#l00234">iter_filter_order()</a>.</p> </div> </div><p> <hr><h2>Enumeration Type Documentation</h2> <a class="anchor" name="691d8b62aab93aba0712e3db11d98d71"></a><!-- doxytag: member="iterator.h::iter_state" ref="691d8b62aab93aba0712e3db11d98d71" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d71">iter_state</a> </td> </tr> </table> </div> <div class="memdoc"> <p> State of the iterator 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="691d8b62aab93aba0712e3db11d98d71432a6434eae32f84850eb16312a59ac2"></a><!-- doxytag: member="INIT_REQUEST_STATE" ref="691d8b62aab93aba0712e3db11d98d71432a6434eae32f84850eb16312a59ac2" args="" -->INIT_REQUEST_STATE</em> </td><td> Externally generated queries start at this state. <p> Query restarts are reset to this state. </td></tr> <tr><td valign="top"><em><a class="anchor" name="691d8b62aab93aba0712e3db11d98d719bdb6dc72ef39d6bc04d80ae703ffe1e"></a><!-- doxytag: member="INIT_REQUEST_2_STATE" ref="691d8b62aab93aba0712e3db11d98d719bdb6dc72ef39d6bc04d80ae703ffe1e" args="" -->INIT_REQUEST_2_STATE</em> </td><td> Root priming events reactivate here, most other events pass through this naturally as the 2nd part of the INIT_REQUEST_STATE. </td></tr> <tr><td valign="top"><em><a class="anchor" name="691d8b62aab93aba0712e3db11d98d711e0cf33b83e09036d2ab741bcc188e04"></a><!-- doxytag: member="INIT_REQUEST_3_STATE" ref="691d8b62aab93aba0712e3db11d98d711e0cf33b83e09036d2ab741bcc188e04" args="" -->INIT_REQUEST_3_STATE</em> </td><td> Stub priming events reactivate here, most other events pass through this naturally as the 3rd part of the INIT_REQUEST_STATE. </td></tr> <tr><td valign="top"><em><a class="anchor" name="691d8b62aab93aba0712e3db11d98d71e1f1e2311b2f95e361695dc5d8a3f1d4"></a><!-- doxytag: member="QUERYTARGETS_STATE" ref="691d8b62aab93aba0712e3db11d98d71e1f1e2311b2f95e361695dc5d8a3f1d4" args="" -->QUERYTARGETS_STATE</em> </td><td> Each time a delegation point changes for a given query or a query times out and/or wakes up, this state is (re)visited. <p> This state is reponsible for iterating through a list of nameserver targets. </td></tr> <tr><td valign="top"><em><a class="anchor" name="691d8b62aab93aba0712e3db11d98d71867767e66b2ebf4239cd9cfc0e16f69e"></a><!-- doxytag: member="QUERY_RESP_STATE" ref="691d8b62aab93aba0712e3db11d98d71867767e66b2ebf4239cd9cfc0e16f69e" args="" -->QUERY_RESP_STATE</em> </td><td> Responses to queries start at this state. <p> This state handles the decision tree associated with handling responses. </td></tr> <tr><td valign="top"><em><a class="anchor" name="691d8b62aab93aba0712e3db11d98d7140bb8cedcb5fc146399afcec750f2ce1"></a><!-- doxytag: member="PRIME_RESP_STATE" ref="691d8b62aab93aba0712e3db11d98d7140bb8cedcb5fc146399afcec750f2ce1" args="" -->PRIME_RESP_STATE</em> </td><td> Responses to priming queries finish at this state. <p> </td></tr> <tr><td valign="top"><em><a class="anchor" name="691d8b62aab93aba0712e3db11d98d712f27b85ac02afc3ee02569b4b4f659fc"></a><!-- doxytag: member="FINISHED_STATE" ref="691d8b62aab93aba0712e3db11d98d712f27b85ac02afc3ee02569b4b4f659fc" args="" -->FINISHED_STATE</em> </td><td> Responses that are to be returned upstream end at this state. <p> As well as responses to target queries. </td></tr> </table> </dl> </div> </div><p> <hr><h2>Function Documentation</h2> <a class="anchor" name="14895181630c3154c10d85f13392fa36"></a><!-- doxytag: member="iterator.h::iter_get_funcblock" ref="14895181630c3154c10d85f13392fa36" 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>* iter_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 iterator function block. <p> <dl class="return" compact><dt><b>Returns:</b></dt><dd>: function block with function pointers to iterator 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="043f02aa5cb5076498a300b152c11b29"></a><!-- doxytag: member="iterator.h::iter_state_to_string" ref="043f02aa5cb5076498a300b152c11b29" args="(enum iter_state state)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* iter_state_to_string </td> <td>(</td> <td class="paramtype">enum <a class="el" href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d71">iter_state</a> </td> <td class="paramname"> <em>state</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> Get iterator 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="iterator_8h_source.html#l00151">FINISHED_STATE</a>, <a class="el" href="iterator_8h_source.html#l00124">INIT_REQUEST_2_STATE</a>, <a class="el" href="iterator_8h_source.html#l00130">INIT_REQUEST_3_STATE</a>, <a class="el" href="iterator_8h_source.html#l00118">INIT_REQUEST_STATE</a>, <a class="el" href="iterator_8h_source.html#l00147">PRIME_RESP_STATE</a>, <a class="el" href="iterator_8h_source.html#l00144">QUERY_RESP_STATE</a>, and <a class="el" href="iterator_8h_source.html#l00138">QUERYTARGETS_STATE</a>.</p> <p>Referenced by <a class="el" href="iterator_8c_source.html#l01951">iter_handle()</a>.</p> </div> </div><p> <a class="anchor" name="6df144c1f5536d55b2fcf73f4ea70c22"></a><!-- doxytag: member="iterator.h::iter_state_is_responsestate" ref="6df144c1f5536d55b2fcf73f4ea70c22" args="(enum iter_state s)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int iter_state_is_responsestate </td> <td>(</td> <td class="paramtype">enum <a class="el" href="iterator_8h.html#691d8b62aab93aba0712e3db11d98d71">iter_state</a> </td> <td class="paramname"> <em>s</em> </td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p> See if iterator state is a response state. <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>s,:</em> </td><td>to inspect </td></tr> </table> </dl> <dl class="return" compact><dt><b>Returns:</b></dt><dd>true if response state. </dd></dl> <p>References <a class="el" href="iterator_8h_source.html#l00124">INIT_REQUEST_2_STATE</a>, <a class="el" href="iterator_8h_source.html#l00130">INIT_REQUEST_3_STATE</a>, <a class="el" href="iterator_8h_source.html#l00118">INIT_REQUEST_STATE</a>, and <a class="el" href="iterator_8h_source.html#l00138">QUERYTARGETS_STATE</a>.</p> <p>Referenced by <a class="el" href="iterator_8c_source.html#l00140">next_state()</a>.</p> </div> </div><p> <a class="anchor" name="98d45f2b3d4fbb121dcf41ea08db47a4"></a><!-- doxytag: member="iterator.h::iter_inform_super" ref="98d45f2b3d4fbb121dcf41ea08db47a4" 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 iter_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> Return priming query results to interestes super querystates. <p> Sets the delegation point and delegation message (not nonRD queries). This is a callback from walk_supers.<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="iterator_8c_source.html#l00179">error_supers()</a>, <a class="el" href="module_8h_source.html#l00268">module_qstate::is_priming</a>, <a class="el" href="iterator_8c_source.html#l01696">prime_supers()</a>, <a class="el" href="iterator_8c_source.html#l01798">processTargetResponse()</a>, and <a class="el" href="module_8h_source.html#l00275">module_qstate::return_rcode</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> </div> <hr size="1"><address style="text-align: right;"><small>Generated on Tue Oct 13 06:46:30 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>