Sophie

Sophie

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

libunbound-devel-1.3.4-1mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>unbound: testcode/fake_event.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="dir_aae0f736e7b956edab2d753def1ee5b5.html">testcode</a>
  </div>
</div>
<div class="contents">
<h1>fake_event.c File Reference</h1>Event service that replays a scenario.  
<a href="#_details">More...</a>
<p>
<code>#include &quot;config.h&quot;</code><br>
<code>#include &quot;<a class="el" href="fake__event_8h.html">testcode/fake_event.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="netevent_8h.html">util/netevent.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="msgparse_8h.html">util/data/msgparse.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="msgreply_8h.html">util/data/msgreply.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="msgencode_8h.html">util/data/msgencode.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="listen__dnsport_8h.html">services/listen_dnsport.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="outside__network_8h.html">services/outside_network.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="replay_8h.html">testcode/replay.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="ldns-testpkts_8h.html">testcode/ldns-testpkts.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="log_8h.html">util/log.h</a>&quot;</code><br>
<code>#include &lt;signal.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="17f0d8ab1140b08107c6fb562af33fc6"></a><!-- doxytag: member="fake_event.c::timeval_add" ref="17f0d8ab1140b08107c6fb562af33fc6" args="(struct timeval *d, const struct timeval *add)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#17f0d8ab1140b08107c6fb562af33fc6">timeval_add</a> (struct timeval *d, const struct timeval *add)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">add timers and the values do not overflow or become negative <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#6182f10c0f4006aac3e3cfe7b1880553">fake_event_init</a> (struct <a class="el" href="structreplay__scenario.html">replay_scenario</a> *scen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Initialise fake event services.  <a href="#6182f10c0f4006aac3e3cfe7b1880553"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4a924d2b0439185e01e1a489f54e6752"></a><!-- doxytag: member="fake_event.c::fake_event_cleanup" ref="4a924d2b0439185e01e1a489f54e6752" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#4a924d2b0439185e01e1a489f54e6752">fake_event_cleanup</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deinit fake event services. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e4fda2fc80090e586276129469705aa3"></a><!-- doxytag: member="fake_event.c::log_pkt" ref="e4fda2fc80090e586276129469705aa3" args="(const char *desc, ldns_pkt *pkt)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#e4fda2fc80090e586276129469705aa3">log_pkt</a> (const char *desc, ldns_pkt *pkt)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">helper function that logs a ldns_pkt packet to logfile <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="58aad9b653aa9684a997d23e451bdacb"></a><!-- doxytag: member="fake_event.c::repevt_string" ref="58aad9b653aa9684a997d23e451bdacb" args="(enum replay_event_type t)" -->
static const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#58aad9b653aa9684a997d23e451bdacb">repevt_string</a> (enum replay_event_type t)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a string describing the event type. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2cf7a5f5eaeee3330017289b86684b39"></a><!-- doxytag: member="fake_event.c::delete_fake_pending" ref="2cf7a5f5eaeee3330017289b86684b39" args="(struct fake_pending *pend)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#2cf7a5f5eaeee3330017289b86684b39">delete_fake_pending</a> (struct <a class="el" href="structfake__pending.html">fake_pending</a> *pend)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">delete a fake <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5e0797643e33c983a87d1cb6f5a4eb86"></a><!-- doxytag: member="fake_event.c::delete_replay_answer" ref="5e0797643e33c983a87d1cb6f5a4eb86" args="(struct replay_answer *a)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#5e0797643e33c983a87d1cb6f5a4eb86">delete_replay_answer</a> (struct <a class="el" href="structreplay__answer.html">replay_answer</a> *a)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">delete a replay answer <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="19aeee7a5ca9e8d3794633cf82cceebd"></a><!-- doxytag: member="fake_event.c::pending_matches_current" ref="19aeee7a5ca9e8d3794633cf82cceebd" args="(struct replay_runtime *runtime, struct entry **entry, struct fake_pending **pend)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#19aeee7a5ca9e8d3794633cf82cceebd">pending_matches_current</a> (struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *runtime, struct <a class="el" href="structentry.html">entry</a> **<a class="el" href="structentry.html">entry</a>, struct <a class="el" href="structfake__pending.html">fake_pending</a> **pend)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return: true if <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> query matches the now event. <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="fake__event_8c.html#6b3ba1082ac2d88321c3088a4e0d05dd">pending_find_match</a> (struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *runtime, struct <a class="el" href="structentry.html">entry</a> **<a class="el" href="structentry.html">entry</a>, struct <a class="el" href="structfake__pending.html">fake_pending</a> *pend)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find the range that matches this <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> message.  <a href="#6b3ba1082ac2d88321c3088a4e0d05dd"></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="fake__event_8c.html#bf2e6e78dd56748c2f3a18ef1f81042a">pending_matches_range</a> (struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *runtime, struct <a class="el" href="structentry.html">entry</a> **<a class="el" href="structentry.html">entry</a>, struct <a class="el" href="structfake__pending.html">fake_pending</a> **pend)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">See if outgoing <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> query matches an <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a>.  <a href="#bf2e6e78dd56748c2f3a18ef1f81042a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="bbf0a2f2f0496c2692f0330a9e2a269d"></a><!-- doxytag: member="fake_event.c::pending_list_delete" ref="bbf0a2f2f0496c2692f0330a9e2a269d" args="(struct replay_runtime *runtime, struct fake_pending *pend)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#bbf0a2f2f0496c2692f0330a9e2a269d">pending_list_delete</a> (struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *runtime, struct <a class="el" href="structfake__pending.html">fake_pending</a> *pend)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove the item from the <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> list. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2051ad279aa7051e55c20e481706764e"></a><!-- doxytag: member="fake_event.c::fill_buffer_with_reply" ref="2051ad279aa7051e55c20e481706764e" args="(ldns_buffer *buffer, struct entry *entry, ldns_pkt *q)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#2051ad279aa7051e55c20e481706764e">fill_buffer_with_reply</a> (ldns_buffer *buffer, struct <a class="el" href="structentry.html">entry</a> *<a class="el" href="structentry.html">entry</a>, ldns_pkt *q)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Fill buffer with reply from the <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a>. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#7c9176e0757c26f262c1875617b30b36">answer_callback_from_entry</a> (struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *runtime, struct <a class="el" href="structentry.html">entry</a> *<a class="el" href="structentry.html">entry</a>, struct <a class="el" href="structfake__pending.html">fake_pending</a> *pend)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Perform range <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> on <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> message.  <a href="#7c9176e0757c26f262c1875617b30b36"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6dffd61a50d0a0f2fc8b03819f17b3c6"></a><!-- doxytag: member="fake_event.c::answer_check_it" ref="6dffd61a50d0a0f2fc8b03819f17b3c6" args="(struct replay_runtime *runtime)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#6dffd61a50d0a0f2fc8b03819f17b3c6">answer_check_it</a> (struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *runtime)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check the now moment answer check event. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f14d31b1fd9142b5caa6e2f727477d97"></a><!-- doxytag: member="fake_event.c::fake_front_query" ref="f14d31b1fd9142b5caa6e2f727477d97" args="(struct replay_runtime *runtime, struct replay_moment *todo)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#f14d31b1fd9142b5caa6e2f727477d97">fake_front_query</a> (struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *runtime, struct <a class="el" href="structreplay__moment.html">replay_moment</a> *todo)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create commpoint (as return address) for a fake incoming query. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="01df380b9c59d90ea0bd2b7ab8a0f532"></a><!-- doxytag: member="fake_event.c::fake_pending_callback" ref="01df380b9c59d90ea0bd2b7ab8a0f532" args="(struct replay_runtime *runtime, struct replay_moment *todo, int error)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#01df380b9c59d90ea0bd2b7ab8a0f532">fake_pending_callback</a> (struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *runtime, struct <a class="el" href="structreplay__moment.html">replay_moment</a> *todo, int error)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Perform callback for fake <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> message. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7687924d0c576eb4ad276465f2c8f013"></a><!-- doxytag: member="fake_event.c::time_passes" ref="7687924d0c576eb4ad276465f2c8f013" args="(struct replay_runtime *runtime, struct replay_moment *mom)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#7687924d0c576eb4ad276465f2c8f013">time_passes</a> (struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *runtime, struct <a class="el" href="structreplay__moment.html">replay_moment</a> *mom)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">pass time <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a197523fae73b4488a6cbf812fdc8af0"></a><!-- doxytag: member="fake_event.c::advance_moment" ref="a197523fae73b4488a6cbf812fdc8af0" args="(struct replay_runtime *runtime)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#a197523fae73b4488a6cbf812fdc8af0">advance_moment</a> (struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *runtime)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Advance to the next moment. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#d0e50b94edb3585247c87b4d4b7f1b79">do_moment_and_advance</a> (struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *runtime)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Perform actions or checks determined by the moment.  <a href="#d0e50b94edb3585247c87b4d4b7f1b79"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cf4ee70a1edced673a7aa948c7e5e4a7"></a><!-- doxytag: member="fake_event.c::run_scenario" ref="cf4ee70a1edced673a7aa948c7e5e4a7" args="(struct replay_runtime *runtime)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#cf4ee70a1edced673a7aa948c7e5e4a7">run_scenario</a> (struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *runtime)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">run the scenario in event callbacks <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlisten__dnsport.html">listen_dnsport</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#c0def3f4fe9cf53f5a9a6878fed7dfee">listen_create</a> (struct <a class="el" href="structcomm__base.html">comm_base</a> *base, struct <a class="el" href="structlisten__port.html">listen_port</a> *ports, size_t bufsize, int tcp_accept_count, <a class="el" href="netevent_8h.html#2ac6c8fe545b6f40c109a064ce17a24d">comm_point_callback_t</a> *cb, void *cb_arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create commpoints with for this thread for the shared ports.  <a href="#c0def3f4fe9cf53f5a9a6878fed7dfee"></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="fake__event_8c.html#44d52fe3114745ef507e8687864d315f">listen_delete</a> (struct <a class="el" href="structlisten__dnsport.html">listen_dnsport</a> *listen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">delete the listening structure  <a href="#44d52fe3114745ef507e8687864d315f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structcomm__base.html">comm_base</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#293475957bb92e98416ad675e490b8e2">comm_base_create</a> (int sigs)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a new comm base.  <a href="#293475957bb92e98416ad675e490b8e2"></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="fake__event_8c.html#246dfec6fa0a44e60c087add866d0734">comm_base_delete</a> (struct <a class="el" href="structcomm__base.html">comm_base</a> *b)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Destroy a comm base.  <a href="#246dfec6fa0a44e60c087add866d0734"></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="fake__event_8c.html#56be8a27caa68fa0e1bc960b6e194755">comm_base_timept</a> (struct <a class="el" href="structcomm__base.html">comm_base</a> *b, uint32_t **tt, struct timeval **tv)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Obtain two pointers.  <a href="#56be8a27caa68fa0e1bc960b6e194755"></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="fake__event_8c.html#4a906aec807342d69d4a3701c668aca3">comm_base_dispatch</a> (struct <a class="el" href="structcomm__base.html">comm_base</a> *b)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dispatch the comm base events.  <a href="#4a906aec807342d69d4a3701c668aca3"></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="fake__event_8c.html#6d683b040b8c52444881294ca9c19283">comm_base_exit</a> (struct <a class="el" href="structcomm__base.html">comm_base</a> *b)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Exit from dispatch loop.  <a href="#6d683b040b8c52444881294ca9c19283"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structcomm__signal.html">comm_signal</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#c3ccdc4685ec7c16d71e281df794496c">comm_signal_create</a> (struct <a class="el" href="structcomm__base.html">comm_base</a> *base, void(*callback)(int, void *), void *cb_arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a signal handler.  <a href="#c3ccdc4685ec7c16d71e281df794496c"></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="fake__event_8c.html#79ef8b0d4fe81fa4193679a29b9d49f4">comm_signal_bind</a> (struct <a class="el" href="structcomm__signal.html">comm_signal</a> *comsig, int sig)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Bind signal struct to catch a signal.  <a href="#79ef8b0d4fe81fa4193679a29b9d49f4"></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="fake__event_8c.html#c496abe80a96c70f933d3b288f5035da">comm_signal_delete</a> (struct <a class="el" href="structcomm__signal.html">comm_signal</a> *comsig)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete the signal communication point.  <a href="#c496abe80a96c70f933d3b288f5035da"></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="fake__event_8c.html#08297db7cb55faf7951477731ae17a92">comm_point_send_reply</a> (struct <a class="el" href="structcomm__reply.html">comm_reply</a> *repinfo)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send reply.  <a href="#08297db7cb55faf7951477731ae17a92"></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="fake__event_8c.html#74cf8926a893e62b5e75ccc1c0f87147">comm_point_drop_reply</a> (struct <a class="el" href="structcomm__reply.html">comm_reply</a> *repinfo)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Drop reply.  <a href="#74cf8926a893e62b5e75ccc1c0f87147"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structoutside__network.html">outside_network</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#7dae61f7536c7bca9417ca83d3a16924">outside_network_create</a> (struct <a class="el" href="structcomm__base.html">comm_base</a> *base, size_t bufsize, size_t num_ports, char **ifs, int num_ifs, int do_ip4, int do_ip6, size_t num_tcp, struct <a class="el" href="structinfra__cache.html">infra_cache</a> *infra, struct <a class="el" href="structub__randstate.html">ub_randstate</a> *rnd, int use_caps_for_id, int *availports, int numavailports, size_t unwanted_threshold, void(*unwanted_action)(void *), void *unwanted_param)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create <a class="el" href="structoutside__network.html" title="Send queries to outside servers and wait for answers from servers.">outside_network</a> structure with N udp ports.  <a href="#7dae61f7536c7bca9417ca83d3a16924"></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="fake__event_8c.html#e5ba3c53d231337f43998b8e85bf11f3">outside_network_delete</a> (struct <a class="el" href="structoutside__network.html">outside_network</a> *outnet)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete <a class="el" href="structoutside__network.html" title="Send queries to outside servers and wait for answers from servers.">outside_network</a> structure.  <a href="#e5ba3c53d231337f43998b8e85bf11f3"></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="fake__event_8c.html#309e70fd2cf62db0a91c3555ba903688">outside_network_quit_prepare</a> (struct <a class="el" href="structoutside__network.html">outside_network</a> *outnet)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Prepare for quit.  <a href="#309e70fd2cf62db0a91c3555ba903688"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structpending.html">pending</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#230c240552687c172582710df2b50661">pending_udp_query</a> (struct <a class="el" href="structoutside__network.html">outside_network</a> *outnet, ldns_buffer *packet, struct sockaddr_storage *addr, socklen_t addrlen, int timeout, <a class="el" href="netevent_8h.html#2ac6c8fe545b6f40c109a064ce17a24d">comm_point_callback_t</a> *callback, void *callback_arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send UDP query, create <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> answer.  <a href="#230c240552687c172582710df2b50661"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structwaiting__tcp.html">waiting_tcp</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#f3d5512bd312f499b7f09bf8265077c1">pending_tcp_query</a> (struct <a class="el" href="structoutside__network.html">outside_network</a> *outnet, ldns_buffer *packet, struct sockaddr_storage *addr, socklen_t addrlen, int timeout, <a class="el" href="netevent_8h.html#2ac6c8fe545b6f40c109a064ce17a24d">comm_point_callback_t</a> *callback, void *callback_arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send TCP query.  <a href="#f3d5512bd312f499b7f09bf8265077c1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structserviced__query.html">serviced_query</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#7908708961b40556179845d57e495992">outnet_serviced_query</a> (struct <a class="el" href="structoutside__network.html">outside_network</a> *outnet, uint8_t *qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, uint16_t flags, int dnssec, struct sockaddr_storage *addr, socklen_t addrlen, <a class="el" href="netevent_8h.html#2ac6c8fe545b6f40c109a064ce17a24d">comm_point_callback_t</a> *callback, void *callback_arg, ldns_buffer *buff, int(*arg_compare)(void *, void *))</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Perform a serviced query to the authoritative servers.  <a href="#7908708961b40556179845d57e495992"></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="fake__event_8c.html#fba22c3a1d3e71a3913b22511d54aae3">outnet_serviced_query_stop</a> (struct <a class="el" href="structserviced__query.html">serviced_query</a> *sq, void *cb_arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove service query callback.  <a href="#fba22c3a1d3e71a3913b22511d54aae3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structlisten__port.html">listen_port</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#c1ae81a9597044e5ec501a7ea2145078">listening_ports_open</a> (struct <a class="el" href="structconfig__file.html">config_file</a> *cfg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create shared listening ports Getaddrinfo, create socket, bind and listen to zero or more interfaces for IP4 and/or IP6, for UDP and/or TCP.  <a href="#c1ae81a9597044e5ec501a7ea2145078"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5cce26477bd2f47503c12ea36cb79814"></a><!-- doxytag: member="fake_event.c::listening_ports_free" ref="5cce26477bd2f47503c12ea36cb79814" args="(struct listen_port *list)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#5cce26477bd2f47503c12ea36cb79814">listening_ports_free</a> (struct <a class="el" href="structlisten__port.html">listen_port</a> *list)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close and delete the (list of) listening ports. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#2e9ac96de1521dbcedb26c5f0bf1030c">listen_pushback</a> (struct <a class="el" href="structlisten__dnsport.html">listen_dnsport</a> *listen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop listening to the dnsports.  <a href="#2e9ac96de1521dbcedb26c5f0bf1030c"></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="fake__event_8c.html#8320623d073a32c81c460a785bd73764">listen_resume</a> (struct <a class="el" href="structlisten__dnsport.html">listen_dnsport</a> *listen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start listening again to the dnsports.  <a href="#8320623d073a32c81c460a785bd73764"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structcomm__point.html">comm_point</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#bfd80dff2df0cb2ab35ec359ba1cad12">comm_point_create_local</a> (struct <a class="el" href="structcomm__base.html">comm_base</a> *base, int fd, size_t bufsize, <a class="el" href="netevent_8h.html#2ac6c8fe545b6f40c109a064ce17a24d">comm_point_callback_t</a> *callback, void *callback_arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create commpoint to listen to a local domain file descriptor.  <a href="#bfd80dff2df0cb2ab35ec359ba1cad12"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structcomm__point.html">comm_point</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#793278e8c315ea3cc44ff12f18ac02fc">comm_point_create_raw</a> (struct <a class="el" href="structcomm__base.html">comm_base</a> *base, int fd, int writing, <a class="el" href="netevent_8h.html#2ac6c8fe545b6f40c109a064ce17a24d">comm_point_callback_t</a> *callback, void *callback_arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create commpoint to listen to a local domain pipe descriptor.  <a href="#793278e8c315ea3cc44ff12f18ac02fc"></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="fake__event_8c.html#f0b8caf76732fbeef49f6b4730387ab0">comm_point_start_listening</a> (struct <a class="el" href="structcomm__point.html">comm_point</a> *c, int newfd, int sec)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Start listening again for input on the comm point.  <a href="#f0b8caf76732fbeef49f6b4730387ab0"></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="fake__event_8c.html#44b1a87283127a1f6632ac8d45895920">comm_point_stop_listening</a> (struct <a class="el" href="structcomm__point.html">comm_point</a> *c)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stop listening for input on the commpoint.  <a href="#44b1a87283127a1f6632ac8d45895920"></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="fake__event_8c.html#9cfab13f86b3f2f180ea6b66119b455d">comm_point_delete</a> (struct <a class="el" href="structcomm__point.html">comm_point</a> *c)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close and deallocate (free) the comm point.  <a href="#9cfab13f86b3f2f180ea6b66119b455d"></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="fake__event_8c.html#a9df62355a71cfa9902f172a644f0dc9">listen_get_mem</a> (struct <a class="el" href="structlisten__dnsport.html">listen_dnsport</a> *listen)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get memory size used by the listening structs  <a href="#a9df62355a71cfa9902f172a644f0dc9"></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="fake__event_8c.html#2617256141980f2585958a8bf5ba9017">outnet_get_mem</a> (struct <a class="el" href="structoutside__network.html">outside_network</a> *outnet)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get memory size in use by outside network.  <a href="#2617256141980f2585958a8bf5ba9017"></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="fake__event_8c.html#89e19915fd58de03f17d247440654ebe">comm_point_get_mem</a> (struct <a class="el" href="structcomm__point.html">comm_point</a> *c)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get size of memory used by comm point.  <a href="#89e19915fd58de03f17d247440654ebe"></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="fake__event_8c.html#6cab741ad0c0325c2c78f4ccbfbfdf2f">serviced_get_mem</a> (struct <a class="el" href="structserviced__query.html">serviced_query</a> *c)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get memory size in use by serviced query while it is servicing callbacks.  <a href="#6cab741ad0c0325c2c78f4ccbfbfdf2f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="60a536f56eced390f24c6a1c0cb82a91"></a><!-- doxytag: member="fake_event.c::outnet_udp_cb" ref="60a536f56eced390f24c6a1c0cb82a91" args="(struct comm_point *c, void *arg, int error, struct comm_reply *reply_info)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#60a536f56eced390f24c6a1c0cb82a91">outnet_udp_cb</a> (struct <a class="el" href="structcomm__point.html">comm_point</a> *c, void *arg, int error, struct <a class="el" href="structcomm__reply.html">comm_reply</a> *<a class="el" href="structreply__info.html">reply_info</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">callback for incoming udp answers from the network <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3a6159a3742f0d63fa62315ac4d6dac2"></a><!-- doxytag: member="fake_event.c::outnet_tcp_cb" ref="3a6159a3742f0d63fa62315ac4d6dac2" args="(struct comm_point *c, void *arg, int error, struct comm_reply *reply_info)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#3a6159a3742f0d63fa62315ac4d6dac2">outnet_tcp_cb</a> (struct <a class="el" href="structcomm__point.html">comm_point</a> *c, void *arg, int error, struct <a class="el" href="structcomm__reply.html">comm_reply</a> *<a class="el" href="structreply__info.html">reply_info</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">callback for <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> tcp connections <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="83fe907b76868a2f25240a7a17a6ac15"></a><!-- doxytag: member="fake_event.c::pending_udp_timer_cb" ref="83fe907b76868a2f25240a7a17a6ac15" args="(void *arg)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#83fe907b76868a2f25240a7a17a6ac15">pending_udp_timer_cb</a> (void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">callback for udp timeout <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2ac58c9238d30c9d6fa56a6d6ff88447"></a><!-- doxytag: member="fake_event.c::outnet_tcptimer" ref="2ac58c9238d30c9d6fa56a6d6ff88447" args="(void *arg)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#2ac58c9238d30c9d6fa56a6d6ff88447">outnet_tcptimer</a> (void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">callback for outgoing TCP timer event <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#9a28a84c828591725627bd5275c724fd">comm_point_udp_callback</a> (int fd, short event, void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This routine is published for checks and tests, and is only used internally.  <a href="#9a28a84c828591725627bd5275c724fd"></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="fake__event_8c.html#03da860ff7bf90dd3f5d7918bd63a6c9">comm_point_udp_ancil_callback</a> (int fd, short event, void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This routine is published for checks and tests, and is only used internally.  <a href="#03da860ff7bf90dd3f5d7918bd63a6c9"></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="fake__event_8c.html#8071b50a655584e9ab583c1170df9169">comm_point_tcp_accept_callback</a> (int fd, short event, void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This routine is published for checks and tests, and is only used internally.  <a href="#8071b50a655584e9ab583c1170df9169"></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="fake__event_8c.html#33f013d617684b997476fe9bf8be231a">comm_point_tcp_handle_callback</a> (int fd, short event, void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This routine is published for checks and tests, and is only used internally.  <a href="#33f013d617684b997476fe9bf8be231a"></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="fake__event_8c.html#a2ef06dfc6040dd3acca1eefa92cfc90">comm_timer_callback</a> (int fd, short event, void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This routine is published for checks and tests, and is only used internally.  <a href="#a2ef06dfc6040dd3acca1eefa92cfc90"></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="fake__event_8c.html#4d5703fffb724b650c2e8a58f6dc830e">comm_signal_callback</a> (int fd, short event, void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This routine is published for checks and tests, and is only used internally.  <a href="#4d5703fffb724b650c2e8a58f6dc830e"></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="fake__event_8c.html#c50a5301fce190e30d3293e764e470f3">comm_point_local_handle_callback</a> (int fd, short event, void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This routine is published for checks and tests, and is only used internally.  <a href="#c50a5301fce190e30d3293e764e470f3"></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="fake__event_8c.html#efca81e9ffcf53591b7d9555c498d3dd">comm_point_raw_handle_callback</a> (int fd, short event, void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">This routine is published for checks and tests, and is only used internally.  <a href="#efca81e9ffcf53591b7d9555c498d3dd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1488181fa108b2f9de2ffbcb63b0bc55"></a><!-- doxytag: member="fake_event.c::serviced_udp_callback" ref="1488181fa108b2f9de2ffbcb63b0bc55" args="(struct comm_point *c, void *arg, int error, struct comm_reply *reply_info)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#1488181fa108b2f9de2ffbcb63b0bc55">serviced_udp_callback</a> (struct <a class="el" href="structcomm__point.html">comm_point</a> *c, void *arg, int error, struct <a class="el" href="structcomm__reply.html">comm_reply</a> *<a class="el" href="structreply__info.html">reply_info</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">callback for serviced query UDP answers <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="009f3256adf07f79b8502eb9fb07f450"></a><!-- doxytag: member="fake_event.c::serviced_tcp_callback" ref="009f3256adf07f79b8502eb9fb07f450" args="(struct comm_point *c, void *arg, int error, struct comm_reply *reply_info)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#009f3256adf07f79b8502eb9fb07f450">serviced_tcp_callback</a> (struct <a class="el" href="structcomm__point.html">comm_point</a> *c, void *arg, int error, struct <a class="el" href="structcomm__reply.html">comm_reply</a> *<a class="el" href="structreply__info.html">reply_info</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">TCP reply or error callback for serviced queries. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7c86dda43aa745da4d364bacee2eaacd"></a><!-- doxytag: member="fake_event.c::pending_cmp" ref="7c86dda43aa745da4d364bacee2eaacd" args="(const void *a, const void *b)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#7c86dda43aa745da4d364bacee2eaacd">pending_cmp</a> (const void *a, const void *b)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compare function of <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> rbtree <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4aa112e2e1c318fe112e13f3be7efdab"></a><!-- doxytag: member="fake_event.c::serviced_cmp" ref="4aa112e2e1c318fe112e13f3be7efdab" args="(const void *a, const void *b)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#4aa112e2e1c318fe112e13f3be7efdab">serviced_cmp</a> (const void *a, const void *b)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compare function of serviced query rbtree <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structcomm__timer.html">comm_timer</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#1a5faccab873a9e377fb715cb00be916">comm_timer_create</a> (struct <a class="el" href="structcomm__base.html">comm_base</a> *base, void(*cb)(void *), void *cb_arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">create timer.  <a href="#1a5faccab873a9e377fb715cb00be916"></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="fake__event_8c.html#cbfb9cf754701131fd122454a8bc999e">comm_timer_disable</a> (struct <a class="el" href="structcomm__timer.html">comm_timer</a> *timer)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">disable timer.  <a href="#cbfb9cf754701131fd122454a8bc999e"></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="fake__event_8c.html#5ae99ac696c5300d19e0a7a2c04816ee">comm_timer_set</a> (struct <a class="el" href="structcomm__timer.html">comm_timer</a> *timer, struct timeval *tv)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">reset timevalue for timer.  <a href="#5ae99ac696c5300d19e0a7a2c04816ee"></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="fake__event_8c.html#bb7d9fb9155c3508dce467b0b361194d">comm_timer_delete</a> (struct <a class="el" href="structcomm__timer.html">comm_timer</a> *timer)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">delete timer.  <a href="#bb7d9fb9155c3508dce467b0b361194d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct event_base *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#6b0ffc9baa38f111fb074e8f0fd5df69">comm_base_internal</a> (struct <a class="el" href="structcomm__base.html">comm_base</a> *b)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Access internal data structure (for <a class="el" href="tube_8c.html" title="This file contains pipe service functions.">util/tube.c</a> on windows).  <a href="#6b0ffc9baa38f111fb074e8f0fd5df69"></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="fake__event_8c.html#d37fb55b6fb822953081d15f836382e5">daemon_remote_exec</a> (struct <a class="el" href="structworker.html">worker</a> *<a class="el" href="structworker.html">worker</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Handle nonthreaded remote cmd execution.  <a href="#d37fb55b6fb822953081d15f836382e5"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">static struct <a class="el" href="structreplay__scenario.html">replay_scenario</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="fake__event_8c.html#4055fba8ffe7bf84c3b710f38212c9bd">saved_scenario</a> = NULL</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Global variable: the scenario.  <a href="#4055fba8ffe7bf84c3b710f38212c9bd"></a><br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
Event service that replays a scenario. 
<p>
This implements the same exported symbols as the files: <a class="el" href="netevent_8c.html" title="This file contains event notification functions.">util/netevent.c</a> <a class="el" href="listen__dnsport_8c.html" title="This file has functions to get queries from clients.">services/listen_dnsport.c</a> <a class="el" href="outside__network_8c.html" title="This file has functions to send queries to authoritative servers and wait for the...">services/outside_network.c</a> But these do not actually access the network or events, instead the scenario is played. <hr><h2>Function Documentation</h2>
<a class="anchor" name="6182f10c0f4006aac3e3cfe7b1880553"></a><!-- doxytag: member="fake_event.c::fake_event_init" ref="6182f10c0f4006aac3e3cfe7b1880553" args="(struct replay_scenario *scen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void fake_event_init           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structreplay__scenario.html">replay_scenario</a> *&nbsp;</td>
          <td class="paramname"> <em>scen</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Initialise fake event services. 
<p>
The fake event services will automatically start when the main program calls <a class="el" href="netevent_8h.html" title="This file contains event notification functions.">netevent.h</a> functions, such as <a class="el" href="fake__event_8c.html#4a906aec807342d69d4a3701c668aca3" title="Dispatch the comm base events.">comm_base_dispatch()</a>.<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>scen,:</em>&nbsp;</td><td>Set the scenario to use for upcoming event handling. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="testbound_8c_source.html#l00210">main()</a>.</p>

</div>
</div><p>
<a class="anchor" name="6b3ba1082ac2d88321c3088a4e0d05dd"></a><!-- doxytag: member="fake_event.c::pending_find_match" ref="6b3ba1082ac2d88321c3088a4e0d05dd" args="(struct replay_runtime *runtime, struct entry **entry, struct fake_pending *pend)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int pending_find_match           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *&nbsp;</td>
          <td class="paramname"> <em>runtime</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structentry.html">entry</a> **&nbsp;</td>
          <td class="paramname"> <em>entry</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structfake__pending.html">fake_pending</a> *&nbsp;</td>
          <td class="paramname"> <em>pend</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>
Find the range that matches this <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> message. 
<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>runtime,:</em>&nbsp;</td><td>runtime with current moment, and range list. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a>,:</em>&nbsp;</td><td>returns the pointer to <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> that matches. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pend,:</em>&nbsp;</td><td>the <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> that the <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> must match. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: true if a match is found. </dd></dl>

<p>References <a class="el" href="replay_8h_source.html#l00258">fake_pending::addr</a>, <a class="el" href="replay_8h_source.html#l00192">replay_range::addr</a>, <a class="el" href="replay_8h_source.html#l00260">fake_pending::addrlen</a>, <a class="el" href="replay_8h_source.html#l00194">replay_range::addrlen</a>, <a class="el" href="replay_8h_source.html#l00190">replay_range::end_step</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00659">find_match()</a>, <a class="el" href="net__help_8c_source.html#l00150">log_addr()</a>, <a class="el" href="log_8c_source.html#l00228">log_info()</a>, <a class="el" href="fake__event_8c_source.html#l00094">log_pkt()</a>, <a class="el" href="replay_8h_source.html#l00197">replay_range::match</a>, <a class="el" href="replay_8h_source.html#l00200">replay_range::next_range</a>, <a class="el" href="replay_8h_source.html#l00214">replay_runtime::now</a>, <a class="el" href="replay_8h_source.html#l00271">fake_pending::pkt</a>, <a class="el" href="replay_8h_source.html#l00125">replay_scenario::range_list</a>, <a class="el" href="replay_8h_source.html#l00210">replay_runtime::scenario</a>, <a class="el" href="net__help_8c_source.html#l00329">sockaddr_cmp()</a>, <a class="el" href="replay_8h_source.html#l00188">replay_range::start_step</a>, <a class="el" href="replay_8h_source.html#l00139">replay_moment::time_step</a>, and <a class="el" href="replay_8h_source.html#l00273">fake_pending::transport</a>.</p>

<p>Referenced by <a class="el" href="fake__event_8c_source.html#l00215">pending_matches_range()</a>.</p>

</div>
</div><p>
<a class="anchor" name="bf2e6e78dd56748c2f3a18ef1f81042a"></a><!-- doxytag: member="fake_event.c::pending_matches_range" ref="bf2e6e78dd56748c2f3a18ef1f81042a" args="(struct replay_runtime *runtime, struct entry **entry, struct fake_pending **pend)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int pending_matches_range           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *&nbsp;</td>
          <td class="paramname"> <em>runtime</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structentry.html">entry</a> **&nbsp;</td>
          <td class="paramname"> <em>entry</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structfake__pending.html">fake_pending</a> **&nbsp;</td>
          <td class="paramname"> <em>pend</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>
See if outgoing <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> query matches an <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a>. 
<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>runtime,:</em>&nbsp;</td><td>runtime. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a>,:</em>&nbsp;</td><td>if true, the <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> that matches is returned. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pend,:</em>&nbsp;</td><td>if true, the outgoing message that matches is returned. return: true if <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> query matches the now event. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="log_8c_source.html#l00228">log_info()</a>, <a class="el" href="replay_8h_source.html#l00269">fake_pending::next</a>, <a class="el" href="fake__event_8c_source.html#l00184">pending_find_match()</a>, and <a class="el" href="replay_8h_source.html#l00220">replay_runtime::pending_list</a>.</p>

<p>Referenced by <a class="el" href="fake__event_8c_source.html#l00515">run_scenario()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7c9176e0757c26f262c1875617b30b36"></a><!-- doxytag: member="fake_event.c::answer_callback_from_entry" ref="7c9176e0757c26f262c1875617b30b36" args="(struct replay_runtime *runtime, struct entry *entry, struct fake_pending *pend)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void answer_callback_from_entry           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *&nbsp;</td>
          <td class="paramname"> <em>runtime</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structentry.html">entry</a> *&nbsp;</td>
          <td class="paramname"> <em>entry</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structfake__pending.html">fake_pending</a> *&nbsp;</td>
          <td class="paramname"> <em>pend</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>
Perform range <a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> on <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> message. 
<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>runtime,:</em>&nbsp;</td><td>runtime buffer size preference. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a>,:</em>&nbsp;</td><td><a class="el" href="structentry.html" title="data structure to keep the canned queries in.">entry</a> that codes for the reply to do. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>pend,:</em>&nbsp;</td><td><a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> query that is answered, callback called. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="replay_8h_source.html#l00258">fake_pending::addr</a>, <a class="el" href="netevent_8h_source.html#l00100">comm_reply::addr</a>, <a class="el" href="replay_8h_source.html#l00260">fake_pending::addrlen</a>, <a class="el" href="netevent_8h_source.html#l00102">comm_reply::addrlen</a>, <a class="el" href="netevent_8h_source.html#l00140">comm_point::buffer</a>, <a class="el" href="replay_8h_source.html#l00248">replay_runtime::bufsize</a>, <a class="el" href="netevent_8h_source.html#l00098">comm_reply::c</a>, <a class="el" href="replay_8h_source.html#l00262">fake_pending::callback</a>, <a class="el" href="replay_8h_source.html#l00264">fake_pending::cb_arg</a>, <a class="el" href="log_8c_source.html#l00267">fatal_exit()</a>, <a class="el" href="netevent_8h_source.html#l00134">comm_point::fd</a>, <a class="el" href="fake__event_8c_source.html#l00256">fill_buffer_with_reply()</a>, <a class="el" href="netevent_8h_source.html#l00077">NETEVENT_NOERROR</a>, <a class="el" href="fake__event_8c_source.html#l00235">pending_list_delete()</a>, <a class="el" href="replay_8h_source.html#l00271">fake_pending::pkt</a>, <a class="el" href="replay_8h_source.html#l00275">fake_pending::serviced</a>, <a class="el" href="replay_8h_source.html#l00273">fake_pending::transport</a>, and <a class="el" href="structcomm__point.html#e97adb4dd9e0ea2e4b18465bcc8b0162">comm_point::type</a>.</p>

<p>Referenced by <a class="el" href="fake__event_8c_source.html#l00515">run_scenario()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d0e50b94edb3585247c87b4d4b7f1b79"></a><!-- doxytag: member="fake_event.c::do_moment_and_advance" ref="d0e50b94edb3585247c87b4d4b7f1b79" args="(struct replay_runtime *runtime)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static void do_moment_and_advance           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structreplay__runtime.html">replay_runtime</a> *&nbsp;</td>
          <td class="paramname"> <em>runtime</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [static]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Perform actions or checks determined by the moment. 
<p>
Also advances the time by one step. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>runtime,:</em>&nbsp;</td><td>scenario runtime information. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="fake__event_8c_source.html#l00444">advance_moment()</a>, <a class="el" href="replay_8h_source.html#l00225">replay_runtime::answer_list</a>, <a class="el" href="structreplay__moment.html#d531a02e0179182363a1d3cb72424257">replay_moment::evt_type</a>, <a class="el" href="fake__event_8c_source.html#l00361">fake_front_query()</a>, <a class="el" href="fake__event_8c_source.html#l00394">fake_pending_callback()</a>, <a class="el" href="log_8c_source.html#l00267">fatal_exit()</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="log_8c_source.html#l00228">log_info()</a>, <a class="el" href="netevent_8h_source.html#l00079">NETEVENT_CLOSED</a>, <a class="el" href="netevent_8h_source.html#l00077">NETEVENT_NOERROR</a>, <a class="el" href="netevent_8h_source.html#l00081">NETEVENT_TIMEOUT</a>, <a class="el" href="replay_8h_source.html#l00214">replay_runtime::now</a>, <a class="el" href="replay_8h_source.html#l00158">replay_moment::repevt_back_query</a>, <a class="el" href="replay_8h_source.html#l00156">replay_moment::repevt_back_reply</a>, <a class="el" href="replay_8h_source.html#l00160">replay_moment::repevt_error</a>, <a class="el" href="replay_8h_source.html#l00148">replay_moment::repevt_front_query</a>, <a class="el" href="replay_8h_source.html#l00150">replay_moment::repevt_front_reply</a>, <a class="el" href="replay_8h_source.html#l00146">replay_moment::repevt_nothing</a>, <a class="el" href="fake__event_8c_source.html#l00109">repevt_string()</a>, <a class="el" href="replay_8h_source.html#l00154">replay_moment::repevt_time_passes</a>, <a class="el" href="replay_8h_source.html#l00152">replay_moment::repevt_timeout</a>, <a class="el" href="fake__event_8c_source.html#l00429">time_passes()</a>, and <a class="el" href="replay_8h_source.html#l00139">replay_moment::time_step</a>.</p>

<p>Referenced by <a class="el" href="fake__event_8c_source.html#l00515">run_scenario()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c0def3f4fe9cf53f5a9a6878fed7dfee"></a><!-- doxytag: member="fake_event.c::listen_create" ref="c0def3f4fe9cf53f5a9a6878fed7dfee" args="(struct comm_base *base, struct listen_port *ports, size_t bufsize, int tcp_accept_count, comm_point_callback_t *cb, void *cb_arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structlisten__dnsport.html">listen_dnsport</a>* listen_create           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__base.html">comm_base</a> *&nbsp;</td>
          <td class="paramname"> <em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structlisten__port.html">listen_port</a> *&nbsp;</td>
          <td class="paramname"> <em>ports</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>bufsize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>tcp_accept_count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="netevent_8h.html#2ac6c8fe545b6f40c109a064ce17a24d">comm_point_callback_t</a> *&nbsp;</td>
          <td class="paramname"> <em>cb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>cb_arg</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>
Create commpoints with for this thread for the shared ports. 
<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>base,:</em>&nbsp;</td><td>the <a class="el" href="structcomm__base.html" title="A communication point dispatcher.">comm_base</a> that provides event functionality. for default all ifs. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ports,:</em>&nbsp;</td><td>the list of shared ports. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>bufsize,:</em>&nbsp;</td><td>size of datagram buffer. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>tcp_accept_count,:</em>&nbsp;</td><td>max number of simultaneous TCP connections from clients. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cb,:</em>&nbsp;</td><td>callback function when a request arrives. It is passed the packet and user argument. Return true to send a reply. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cb_arg,:</em>&nbsp;</td><td>user data argument for callback function. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: the malloced listening structure, ready for use. NULL on error. </dd></dl>

<p>References <a class="el" href="listen__dnsport_8h_source.html#l00056">listen_dnsport::base</a>, <a class="el" href="replay_8h_source.html#l00248">replay_runtime::bufsize</a>, <a class="el" href="replay_8h_source.html#l00231">replay_runtime::callback_query</a>, <a class="el" href="replay_8h_source.html#l00233">replay_runtime::cb_arg</a>, <a class="el" href="netevent_8c_source.html#l01189">comm_point_create_tcp()</a>, <a class="el" href="netevent_8c_source.html#l01028">comm_point_create_udp()</a>, <a class="el" href="netevent_8c_source.html#l01077">comm_point_create_udp_ancil()</a>, <a class="el" href="fake__event_8c_source.html#l01013">comm_point_delete()</a>, <a class="el" href="listen__dnsport_8h_source.html#l00063">listen_dnsport::cps</a>, <a class="el" href="netevent_8h_source.html#l00180">comm_point::do_not_close</a>, <a class="el" href="listen__dnsport_8h_source.html#l00096">listen_port::fd</a>, <a class="el" href="listen__dnsport_8h_source.html#l00098">listen_port::ftype</a>, <a class="el" href="listen__dnsport_8c_source.html#l00521">listen_cp_insert()</a>, <a class="el" href="listen__dnsport_8c_source.html#l00597">listen_delete()</a>, <a class="el" href="listen__dnsport_8h_source.html#l00083">listen_type_tcp</a>, <a class="el" href="listen__dnsport_8h_source.html#l00081">listen_type_udp</a>, <a class="el" href="listen__dnsport_8h_source.html#l00085">listen_type_udpancil</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="listen__dnsport_8h_source.html#l00094">listen_port::next</a>, and <a class="el" href="listen__dnsport_8h_source.html#l00060">listen_dnsport::udp_buff</a>.</p>

</div>
</div><p>
<a class="anchor" name="44d52fe3114745ef507e8687864d315f"></a><!-- doxytag: member="fake_event.c::listen_delete" ref="44d52fe3114745ef507e8687864d315f" args="(struct listen_dnsport *listen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void listen_delete           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlisten__dnsport.html">listen_dnsport</a> *&nbsp;</td>
          <td class="paramname"> <em>listen</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
delete the listening structure 
<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>listen,:</em>&nbsp;</td><td>listening structure. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="listen__dnsport_8h_source.html#l00063">listen_dnsport::cps</a>, <a class="el" href="listen__dnsport_8c_source.html#l00585">listen_list_delete()</a>, and <a class="el" href="listen__dnsport_8h_source.html#l00060">listen_dnsport::udp_buff</a>.</p>

</div>
</div><p>
<a class="anchor" name="293475957bb92e98416ad675e490b8e2"></a><!-- doxytag: member="fake_event.c::comm_base_create" ref="293475957bb92e98416ad675e490b8e2" args="(int sigs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structcomm__base.html">comm_base</a>* comm_base_create           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>sigs</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a new comm base. 
<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>sigs,:</em>&nbsp;</td><td>if true it attempts to create a default loop for signal handling. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: the new comm base. NULL on error. </dd></dl>

<p>Referenced by <a class="el" href="libworker_8c_source.html#l00092">libworker_setup()</a>, and <a class="el" href="worker_8c_source.html#l00967">worker_init()</a>.</p>

</div>
</div><p>
<a class="anchor" name="246dfec6fa0a44e60c087add866d0734"></a><!-- doxytag: member="fake_event.c::comm_base_delete" ref="246dfec6fa0a44e60c087add866d0734" args="(struct comm_base *b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_base_delete           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__base.html">comm_base</a> *&nbsp;</td>
          <td class="paramname"> <em>b</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Destroy a comm base. 
<p>
All comm points must have been deleted. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>b,:</em>&nbsp;</td><td>the base to delete. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="libworker_8c_source.html#l00071">libworker_delete()</a>, and <a class="el" href="worker_8c_source.html#l01115">worker_delete()</a>.</p>

</div>
</div><p>
<a class="anchor" name="56be8a27caa68fa0e1bc960b6e194755"></a><!-- doxytag: member="fake_event.c::comm_base_timept" ref="56be8a27caa68fa0e1bc960b6e194755" args="(struct comm_base *b, uint32_t **tt, struct timeval **tv)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_base_timept           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__base.html">comm_base</a> *&nbsp;</td>
          <td class="paramname"> <em>b</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t **&nbsp;</td>
          <td class="paramname"> <em>tt</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct timeval **&nbsp;</td>
          <td class="paramname"> <em>tv</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Obtain two pointers. 
<p>
The pointers never change (until base_delete()). The pointers point to time values that are updated regularly. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>b,:</em>&nbsp;</td><td>the communication base that will update the time values. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>tt,:</em>&nbsp;</td><td>pointer to time in seconds is returned. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>tv,:</em>&nbsp;</td><td>pointer to time in microseconds is returned. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="libworker_8c_source.html#l00092">libworker_setup()</a>, <a class="el" href="outside__network_8c_source.html#l00468">outside_network_create()</a>, and <a class="el" href="worker_8c_source.html#l00967">worker_init()</a>.</p>

</div>
</div><p>
<a class="anchor" name="4a906aec807342d69d4a3701c668aca3"></a><!-- doxytag: member="fake_event.c::comm_base_dispatch" ref="4a906aec807342d69d4a3701c668aca3" args="(struct comm_base *b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_base_dispatch           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__base.html">comm_base</a> *&nbsp;</td>
          <td class="paramname"> <em>b</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Dispatch the comm base events. 
<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>b,:</em>&nbsp;</td><td>the communication to perform. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="libworker_8c_source.html#l00257">libworker_dobg()</a>, <a class="el" href="libworker_8c_source.html#l00497">libworker_fg()</a>, and <a class="el" href="worker_8c_source.html#l01109">worker_work()</a>.</p>

</div>
</div><p>
<a class="anchor" name="6d683b040b8c52444881294ca9c19283"></a><!-- doxytag: member="fake_event.c::comm_base_exit" ref="6d683b040b8c52444881294ca9c19283" args="(struct comm_base *b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_base_exit           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__base.html">comm_base</a> *&nbsp;</td>
          <td class="paramname"> <em>b</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Exit from dispatch loop. 
<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>b,:</em>&nbsp;</td><td>the communication base that is in dispatch(). </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="remote_8c_source.html#l00570">do_reload()</a>, <a class="el" href="remote_8c_source.html#l00561">do_stop()</a>, <a class="el" href="libworker_8c_source.html#l00218">libworker_do_cmd()</a>, <a class="el" href="libworker_8c_source.html#l00462">libworker_fg_done_cb()</a>, <a class="el" href="libworker_8c_source.html#l00241">libworker_handle_control_cmd()</a>, <a class="el" href="worker_8c_source.html#l00326">worker_handle_control_cmd()</a>, <a class="el" href="worker_8c_source.html#l00881">worker_sighandler()</a>, and <a class="el" href="win__svc_8c_source.html#l00434">worker_win_stop_cb()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c3ccdc4685ec7c16d71e281df794496c"></a><!-- doxytag: member="fake_event.c::comm_signal_create" ref="c3ccdc4685ec7c16d71e281df794496c" args="(struct comm_base *base, void(*callback)(int, void *), void *cb_arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structcomm__signal.html">comm_signal</a>* comm_signal_create           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__base.html">comm_base</a> *&nbsp;</td>
          <td class="paramname"> <em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(int, void *)&nbsp;</td>
          <td class="paramname"> <em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>cb_arg</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>
Create a signal handler. 
<p>
Call signal_bind() later to bind to a signal. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>base,:</em>&nbsp;</td><td>communication base to use. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>callback,:</em>&nbsp;</td><td>called when signal is caught. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cb_arg,:</em>&nbsp;</td><td>user argument to callback </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: the signal struct or NULL on error. </dd></dl>

<p>Referenced by <a class="el" href="worker_8c_source.html#l00967">worker_init()</a>.</p>

</div>
</div><p>
<a class="anchor" name="79ef8b0d4fe81fa4193679a29b9d49f4"></a><!-- doxytag: member="fake_event.c::comm_signal_bind" ref="79ef8b0d4fe81fa4193679a29b9d49f4" args="(struct comm_signal *comsig, int sig)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int comm_signal_bind           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__signal.html">comm_signal</a> *&nbsp;</td>
          <td class="paramname"> <em>comsig</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>sig</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Bind signal struct to catch a signal. 
<p>
A signle <a class="el" href="structcomm__signal.html" title="Structure only for signal events.">comm_signal</a> can be bound to multiple signals, calling comm_signal_bind multiple times. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>comsig,:</em>&nbsp;</td><td>the communication point, with callback information. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sig,:</em>&nbsp;</td><td>signal number. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: true on success. false on error. </dd></dl>

<p>Referenced by <a class="el" href="worker_8c_source.html#l00967">worker_init()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c496abe80a96c70f933d3b288f5035da"></a><!-- doxytag: member="fake_event.c::comm_signal_delete" ref="c496abe80a96c70f933d3b288f5035da" args="(struct comm_signal *comsig)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_signal_delete           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__signal.html">comm_signal</a> *&nbsp;</td>
          <td class="paramname"> <em>comsig</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete the signal communication point. 
<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>comsig,:</em>&nbsp;</td><td>to delete. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="worker_8c_source.html#l01115">worker_delete()</a>.</p>

</div>
</div><p>
<a class="anchor" name="08297db7cb55faf7951477731ae17a92"></a><!-- doxytag: member="fake_event.c::comm_point_send_reply" ref="08297db7cb55faf7951477731ae17a92" args="(struct comm_reply *repinfo)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_point_send_reply           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__reply.html">comm_reply</a> *&nbsp;</td>
          <td class="paramname"> <em>repinfo</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Send reply. 
<p>
Put message into commpoint buffer. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>repinfo,:</em>&nbsp;</td><td>The reply info copied from a commpoint callback call. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="fake__event_8c_source.html#l00361">fake_front_query()</a>, <a class="el" href="mesh_8c_source.html#l00268">mesh_new_client()</a>, and <a class="el" href="mesh_8c_source.html#l00662">mesh_send_reply()</a>.</p>

</div>
</div><p>
<a class="anchor" name="74cf8926a893e62b5e75ccc1c0f87147"></a><!-- doxytag: member="fake_event.c::comm_point_drop_reply" ref="74cf8926a893e62b5e75ccc1c0f87147" args="(struct comm_reply *repinfo)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_point_drop_reply           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__reply.html">comm_reply</a> *&nbsp;</td>
          <td class="paramname"> <em>repinfo</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Drop reply. 
<p>
Cleans up. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>repinfo,:</em>&nbsp;</td><td>The reply info copied from a commpoint callback call. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="mesh_8c_source.html#l00268">mesh_new_client()</a>, <a class="el" href="mesh_8c_source.html#l00459">mesh_state_cleanup()</a>, and <a class="el" href="worker_8c_source.html#l00681">worker_handle_request()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7dae61f7536c7bca9417ca83d3a16924"></a><!-- doxytag: member="fake_event.c::outside_network_create" ref="7dae61f7536c7bca9417ca83d3a16924" args="(struct comm_base *base, size_t bufsize, size_t num_ports, char **ifs, int num_ifs, int do_ip4, int do_ip6, size_t num_tcp, struct infra_cache *infra, struct ub_randstate *rnd, int use_caps_for_id, int *availports, int numavailports, size_t unwanted_threshold, void(*unwanted_action)(void *), void *unwanted_param)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structoutside__network.html">outside_network</a>* outside_network_create           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__base.html">comm_base</a> *&nbsp;</td>
          <td class="paramname"> <em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>bufsize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>num_ports</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char **&nbsp;</td>
          <td class="paramname"> <em>ifs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>num_ifs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>do_ip4</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>do_ip6</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>num_tcp</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structinfra__cache.html">infra_cache</a> *&nbsp;</td>
          <td class="paramname"> <em>infra</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structub__randstate.html">ub_randstate</a> *&nbsp;</td>
          <td class="paramname"> <em>rnd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>use_caps_for_id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>availports</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>numavailports</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>unwanted_threshold</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(void *)&nbsp;</td>
          <td class="paramname"> <em>unwanted_action</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>unwanted_param</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>
Create <a class="el" href="structoutside__network.html" title="Send queries to outside servers and wait for answers from servers.">outside_network</a> structure with N udp ports. 
<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>base,:</em>&nbsp;</td><td>the communication base to use for event handling. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>bufsize,:</em>&nbsp;</td><td>size for network buffers. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>num_ports,:</em>&nbsp;</td><td>number of udp ports to open per interface. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ifs,:</em>&nbsp;</td><td>interface names (or NULL for default interface). These interfaces must be able to access all authoritative servers. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>num_ifs,:</em>&nbsp;</td><td>number of names in array ifs. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>do_ip4,:</em>&nbsp;</td><td>service IP4. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>do_ip6,:</em>&nbsp;</td><td>service IP6. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>num_tcp,:</em>&nbsp;</td><td>number of outgoing tcp buffers to preallocate. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>infra,:</em>&nbsp;</td><td>pointer to infra cached used for serviced queries. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>rnd,:</em>&nbsp;</td><td>stored to create random numbers for serviced queries. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>use_caps_for_id,:</em>&nbsp;</td><td>enable to use 0x20 bits to encode id randomness. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>availports,:</em>&nbsp;</td><td>array of available ports. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>numavailports,:</em>&nbsp;</td><td>number of available ports in array. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>unwanted_threshold,:</em>&nbsp;</td><td>when to take defensive action. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>unwanted_action,:</em>&nbsp;</td><td>the action to take. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>unwanted_param,:</em>&nbsp;</td><td>user parameter to action. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: the new structure (with no <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> answers) or NULL on error. </dd></dl>

<p>References <a class="el" href="outside__network_8h_source.html#l00064">outside_network::base</a>, <a class="el" href="outside__network_8c_source.html#l00383">calc_num46()</a>, <a class="el" href="fake__event_8c_source.html#l00633">comm_base_timept()</a>, <a class="el" href="netevent_8c_source.html#l01028">comm_point_create_udp()</a>, <a class="el" href="outside__network_8h_source.html#l00177">port_comm::cp</a>, <a class="el" href="outside__network_8c_source.html#l00425">create_pending_tcp()</a>, <a class="el" href="outside__network_8h_source.html#l00116">outside_network::infra</a>, <a class="el" href="outside__network_8h_source.html#l00097">outside_network::ip4_ifs</a>, <a class="el" href="outside__network_8h_source.html#l00102">outside_network::ip6_ifs</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="outside__network_8h_source.html#l00167">port_comm::next</a>, <a class="el" href="outside__network_8h_source.html#l00066">outside_network::now_secs</a>, <a class="el" href="outside__network_8h_source.html#l00068">outside_network::now_tv</a>, <a class="el" href="outside__network_8h_source.html#l00099">outside_network::num_ip4</a>, <a class="el" href="outside__network_8h_source.html#l00104">outside_network::num_ip6</a>, <a class="el" href="outside__network_8h_source.html#l00128">outside_network::num_tcp</a>, <a class="el" href="outside__network_8c_source.html#l00303">outnet_udp_cb()</a>, <a class="el" href="outside__network_8c_source.html#l00624">outside_network_delete()</a>, <a class="el" href="outside__network_8h_source.html#l00112">outside_network::pending</a>, <a class="el" href="outside__network_8c_source.html#l00079">pending_cmp()</a>, <a class="el" href="rbtree_8c_source.html#l00077">rbtree_create()</a>, <a class="el" href="outside__network_8h_source.html#l00118">outside_network::rnd</a>, <a class="el" href="outside__network_8h_source.html#l00114">outside_network::serviced</a>, <a class="el" href="outside__network_8c_source.html#l00092">serviced_cmp()</a>, <a class="el" href="outside__network_8c_source.html#l00449">setup_if()</a>, <a class="el" href="net__help_8c_source.html#l00051">str_is_ip6()</a>, <a class="el" href="outside__network_8h_source.html#l00075">outside_network::svcd_overhead</a>, <a class="el" href="outside__network_8h_source.html#l00072">outside_network::udp_buff</a>, <a class="el" href="outside__network_8h_source.html#l00094">outside_network::unused_fds</a>, <a class="el" href="structoutside__network.html#a6f0e19819d98a95f847ebfd43c7f391">outside_network::unwanted_action</a>, <a class="el" href="outside__network_8h_source.html#l00090">outside_network::unwanted_param</a>, <a class="el" href="outside__network_8h_source.html#l00086">outside_network::unwanted_threshold</a>, <a class="el" href="outside__network_8h_source.html#l00077">outside_network::use_caps_for_id</a>, and <a class="el" href="outside__network_8h_source.html#l00079">outside_network::want_to_quit</a>.</p>

</div>
</div><p>
<a class="anchor" name="e5ba3c53d231337f43998b8e85bf11f3"></a><!-- doxytag: member="fake_event.c::outside_network_delete" ref="e5ba3c53d231337f43998b8e85bf11f3" args="(struct outside_network *outnet)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void outside_network_delete           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structoutside__network.html">outside_network</a> *&nbsp;</td>
          <td class="paramname"> <em>outnet</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete <a class="el" href="structoutside__network.html" title="Send queries to outside servers and wait for answers from servers.">outside_network</a> structure. 
<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>outnet,:</em>&nbsp;</td><td>object to delete. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="outside__network_8h_source.html#l00149">port_if::avail_ports</a>, <a class="el" href="outside__network_8h_source.html#l00225">pending_tcp::c</a>, <a class="el" href="fake__event_8c_source.html#l01013">comm_point_delete()</a>, <a class="el" href="outside__network_8h_source.html#l00177">port_comm::cp</a>, <a class="el" href="outside__network_8h_source.html#l00159">port_if::inuse</a>, <a class="el" href="outside__network_8h_source.html#l00097">outside_network::ip4_ifs</a>, <a class="el" href="outside__network_8h_source.html#l00102">outside_network::ip6_ifs</a>, <a class="el" href="outside__network_8h_source.html#l00167">port_comm::next</a>, <a class="el" href="outside__network_8h_source.html#l00207">pending::next_waiting</a>, <a class="el" href="outside__network_8h_source.html#l00238">waiting_tcp::next_waiting</a>, <a class="el" href="outside__network_8h_source.html#l00099">outside_network::num_ip4</a>, <a class="el" href="outside__network_8h_source.html#l00104">outside_network::num_ip6</a>, <a class="el" href="outside__network_8h_source.html#l00128">outside_network::num_tcp</a>, <a class="el" href="outside__network_8h_source.html#l00155">port_if::out</a>, <a class="el" href="outside__network_8h_source.html#l00112">outside_network::pending</a>, <a class="el" href="outside__network_8c_source.html#l00709">pending_delete()</a>, <a class="el" href="outside__network_8c_source.html#l00592">pending_node_del()</a>, <a class="el" href="outside__network_8h_source.html#l00227">pending_tcp::query</a>, <a class="el" href="outside__network_8h_source.html#l00114">outside_network::serviced</a>, <a class="el" href="outside__network_8c_source.html#l00601">serviced_node_del()</a>, <a class="el" href="outside__network_8h_source.html#l00126">outside_network::tcp_conns</a>, <a class="el" href="outside__network_8h_source.html#l00132">outside_network::tcp_wait_first</a>, <a class="el" href="rbtree_8c_source.html#l00617">traverse_postorder()</a>, <a class="el" href="outside__network_8h_source.html#l00072">outside_network::udp_buff</a>, <a class="el" href="outside__network_8h_source.html#l00107">outside_network::udp_wait_first</a>, <a class="el" href="outside__network_8h_source.html#l00094">outside_network::unused_fds</a>, <a class="el" href="outside__network_8c_source.html#l00122">waiting_tcp_delete()</a>, and <a class="el" href="outside__network_8h_source.html#l00079">outside_network::want_to_quit</a>.</p>

</div>
</div><p>
<a class="anchor" name="309e70fd2cf62db0a91c3555ba903688"></a><!-- doxytag: member="fake_event.c::outside_network_quit_prepare" ref="309e70fd2cf62db0a91c3555ba903688" args="(struct outside_network *outnet)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void outside_network_quit_prepare           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structoutside__network.html">outside_network</a> *&nbsp;</td>
          <td class="paramname"> <em>outnet</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Prepare for quit. 
<p>
Sends no more queries, even if queued up. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>outnet,:</em>&nbsp;</td><td>object to prepare for removal </td></tr>
  </table>
</dl>

<p>References <a class="el" href="outside__network_8h_source.html#l00079">outside_network::want_to_quit</a>.</p>

</div>
</div><p>
<a class="anchor" name="230c240552687c172582710df2b50661"></a><!-- doxytag: member="fake_event.c::pending_udp_query" ref="230c240552687c172582710df2b50661" args="(struct outside_network *outnet, ldns_buffer *packet, struct sockaddr_storage *addr, socklen_t addrlen, int timeout, comm_point_callback_t *callback, void *callback_arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structpending.html">pending</a>* pending_udp_query           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structoutside__network.html">outside_network</a> *&nbsp;</td>
          <td class="paramname"> <em>outnet</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ldns_buffer *&nbsp;</td>
          <td class="paramname"> <em>packet</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>addrlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>timeout</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="netevent_8h.html#2ac6c8fe545b6f40c109a064ce17a24d">comm_point_callback_t</a> *&nbsp;</td>
          <td class="paramname"> <em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>callback_arg</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>
Send UDP query, create <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> answer. 
<p>
Changes the ID for the query to be random and unique for that destination. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>outnet,:</em>&nbsp;</td><td>provides the event handling </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>packet,:</em>&nbsp;</td><td>wireformat query to send to destination. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>address to send to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of addr. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>timeout,:</em>&nbsp;</td><td>in milliseconds from now. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>callback,:</em>&nbsp;</td><td>function to call on error, timeout or reply. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>callback_arg,:</em>&nbsp;</td><td>user argument for callback function. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: NULL on error for malloc or socket. Else the <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> query object. </dd></dl>

<p>References <a class="el" href="replay_8h_source.html#l00172">replay_moment::addr</a>, <a class="el" href="outside__network_8h_source.html#l00191">pending::addr</a>, <a class="el" href="replay_8h_source.html#l00174">replay_moment::addrlen</a>, <a class="el" href="outside__network_8h_source.html#l00193">pending::addrlen</a>, <a class="el" href="fake__event_8c_source.html#l00444">advance_moment()</a>, <a class="el" href="outside__network_8h_source.html#l00064">outside_network::base</a>, <a class="el" href="outside__network_8h_source.html#l00199">pending::cb</a>, <a class="el" href="outside__network_8h_source.html#l00201">pending::cb_arg</a>, <a class="el" href="fake__event_8c_source.html#l01142">comm_timer_create()</a>, <a class="el" href="fake__event_8c_source.html#l01158">comm_timer_delete()</a>, <a class="el" href="structreplay__moment.html#d531a02e0179182363a1d3cb72424257">replay_moment::evt_type</a>, <a class="el" href="log_8c_source.html#l00267">fatal_exit()</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00659">find_match()</a>, <a class="el" href="rbtree_8h_source.html#l00063">rbnode_t::key</a>, <a class="el" href="log_8h_source.html#l00185">log_assert</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="log_8c_source.html#l00228">log_info()</a>, <a class="el" href="fake__event_8c_source.html#l00094">log_pkt()</a>, <a class="el" href="replay_8h_source.html#l00166">replay_moment::match</a>, <a class="el" href="net__help_8c_source.html#l00138">memdup()</a>, <a class="el" href="outside__network_8h_source.html#l00207">pending::next_waiting</a>, <a class="el" href="outside__network_8h_source.html#l00185">pending::node</a>, <a class="el" href="replay_8h_source.html#l00214">replay_runtime::now</a>, <a class="el" href="outside__network_8h_source.html#l00203">pending::outnet</a>, <a class="el" href="outside__network_8c_source.html#l00709">pending_delete()</a>, <a class="el" href="replay_8h_source.html#l00220">replay_runtime::pending_list</a>, <a class="el" href="outside__network_8c_source.html#l00410">pending_udp_timer_cb()</a>, <a class="el" href="outside__network_8h_source.html#l00211">pending::pkt</a>, <a class="el" href="outside__network_8h_source.html#l00213">pending::pkt_len</a>, <a class="el" href="outside__network_8c_source.html#l00864">randomize_and_send_udp()</a>, <a class="el" href="fake__event_8c_source.html#l00109">repevt_string()</a>, <a class="el" href="net__help_8c_source.html#l00329">sockaddr_cmp()</a>, <a class="el" href="replay_8h_source.html#l00139">replay_moment::time_step</a>, <a class="el" href="outside__network_8h_source.html#l00209">pending::timeout</a>, <a class="el" href="outside__network_8h_source.html#l00197">pending::timer</a>, <a class="el" href="outside__network_8h_source.html#l00107">outside_network::udp_wait_first</a>, <a class="el" href="outside__network_8h_source.html#l00109">outside_network::udp_wait_last</a>, <a class="el" href="outside__network_8h_source.html#l00094">outside_network::unused_fds</a>, <a class="el" href="log_8h_source.html#l00058">VERB_ALGO</a>, and <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>.</p>

</div>
</div><p>
<a class="anchor" name="f3d5512bd312f499b7f09bf8265077c1"></a><!-- doxytag: member="fake_event.c::pending_tcp_query" ref="f3d5512bd312f499b7f09bf8265077c1" args="(struct outside_network *outnet, ldns_buffer *packet, struct sockaddr_storage *addr, socklen_t addrlen, int timeout, comm_point_callback_t *callback, void *callback_arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structwaiting__tcp.html">waiting_tcp</a>* pending_tcp_query           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structoutside__network.html">outside_network</a> *&nbsp;</td>
          <td class="paramname"> <em>outnet</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ldns_buffer *&nbsp;</td>
          <td class="paramname"> <em>packet</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>addrlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>timeout</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="netevent_8h.html#2ac6c8fe545b6f40c109a064ce17a24d">comm_point_callback_t</a> *&nbsp;</td>
          <td class="paramname"> <em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>callback_arg</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>
Send TCP query. 
<p>
May wait for TCP buffer. Selects ID to be random, and checks id. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>outnet,:</em>&nbsp;</td><td>provides the event handling. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>packet,:</em>&nbsp;</td><td>wireformat query to send to destination. copied from. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>address to send to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of addr. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>timeout,:</em>&nbsp;</td><td>in seconds from now. Timer starts running now. Timer may expire if all buffers are used, without any query been sent to the server yet. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>callback,:</em>&nbsp;</td><td>function to call on error, timeout or reply. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>callback_arg,:</em>&nbsp;</td><td>user argument for callback function. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: false on error for malloc or socket. Else the <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> TCP object. </dd></dl>

<p>References <a class="el" href="replay_8h_source.html#l00172">replay_moment::addr</a>, <a class="el" href="outside__network_8h_source.html#l00245">waiting_tcp::addr</a>, <a class="el" href="replay_8h_source.html#l00174">replay_moment::addrlen</a>, <a class="el" href="outside__network_8h_source.html#l00247">waiting_tcp::addrlen</a>, <a class="el" href="fake__event_8c_source.html#l00444">advance_moment()</a>, <a class="el" href="outside__network_8h_source.html#l00064">outside_network::base</a>, <a class="el" href="outside__network_8h_source.html#l00258">waiting_tcp::cb</a>, <a class="el" href="outside__network_8h_source.html#l00260">waiting_tcp::cb_arg</a>, <a class="el" href="fake__event_8c_source.html#l01142">comm_timer_create()</a>, <a class="el" href="fake__event_8c_source.html#l01153">comm_timer_set()</a>, <a class="el" href="structreplay__moment.html#d531a02e0179182363a1d3cb72424257">replay_moment::evt_type</a>, <a class="el" href="log_8c_source.html#l00267">fatal_exit()</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00659">find_match()</a>, <a class="el" href="log_8h_source.html#l00185">log_assert</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="log_8c_source.html#l00228">log_info()</a>, <a class="el" href="fake__event_8c_source.html#l00094">log_pkt()</a>, <a class="el" href="replay_8h_source.html#l00166">replay_moment::match</a>, <a class="el" href="outside__network_8h_source.html#l00238">waiting_tcp::next_waiting</a>, <a class="el" href="replay_8h_source.html#l00214">replay_runtime::now</a>, <a class="el" href="outside__network_8h_source.html#l00243">waiting_tcp::outnet</a>, <a class="el" href="outside__network_8c_source.html#l00132">outnet_tcp_take_into_use()</a>, <a class="el" href="outside__network_8c_source.html#l00949">outnet_tcptimer()</a>, <a class="el" href="replay_8h_source.html#l00220">replay_runtime::pending_list</a>, <a class="el" href="outside__network_8h_source.html#l00254">waiting_tcp::pkt</a>, <a class="el" href="outside__network_8h_source.html#l00256">waiting_tcp::pkt_len</a>, <a class="el" href="fake__event_8c_source.html#l00109">repevt_string()</a>, <a class="el" href="outside__network_8h_source.html#l00118">outside_network::rnd</a>, <a class="el" href="net__help_8c_source.html#l00329">sockaddr_cmp()</a>, <a class="el" href="outside__network_8h_source.html#l00130">outside_network::tcp_free</a>, <a class="el" href="outside__network_8h_source.html#l00132">outside_network::tcp_wait_first</a>, <a class="el" href="outside__network_8h_source.html#l00134">outside_network::tcp_wait_last</a>, <a class="el" href="replay_8h_source.html#l00139">replay_moment::time_step</a>, <a class="el" href="outside__network_8h_source.html#l00241">waiting_tcp::timer</a>, <a class="el" href="random_8c_source.html#l00167">ub_random()</a>, and <a class="el" href="outside__network_8c_source.html#l00122">waiting_tcp_delete()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7908708961b40556179845d57e495992"></a><!-- doxytag: member="fake_event.c::outnet_serviced_query" ref="7908708961b40556179845d57e495992" args="(struct outside_network *outnet, uint8_t *qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, uint16_t flags, int dnssec, struct sockaddr_storage *addr, socklen_t addrlen, comm_point_callback_t *callback, void *callback_arg, ldns_buffer *buff, int(*arg_compare)(void *, void *))" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structserviced__query.html">serviced_query</a>* outnet_serviced_query           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structoutside__network.html">outside_network</a> *&nbsp;</td>
          <td class="paramname"> <em>outnet</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>qnamelen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>qtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>qclass</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint16_t&nbsp;</td>
          <td class="paramname"> <em>flags</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>dnssec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct sockaddr_storage *&nbsp;</td>
          <td class="paramname"> <em>addr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">socklen_t&nbsp;</td>
          <td class="paramname"> <em>addrlen</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="netevent_8h.html#2ac6c8fe545b6f40c109a064ce17a24d">comm_point_callback_t</a> *&nbsp;</td>
          <td class="paramname"> <em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>callback_arg</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ldns_buffer *&nbsp;</td>
          <td class="paramname"> <em>buff</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int(*)(void *, void *)&nbsp;</td>
          <td class="paramname"> <em>arg_compare</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>
Perform a serviced query to the authoritative servers. 
<p>
Duplicate efforts are detected, and EDNS, TCP and UDP retry is performed. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>outnet,:</em>&nbsp;</td><td>outside network, with rbtree of serviced queries. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>qname,:</em>&nbsp;</td><td>what qname to query. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>qnamelen,:</em>&nbsp;</td><td>length of qname in octets including 0 root label. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>qtype,:</em>&nbsp;</td><td>rrset type to query (host format) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>qclass,:</em>&nbsp;</td><td>query class. (host format) </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags,:</em>&nbsp;</td><td>flags u16 (host format), includes opcode, CD bit. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>dnssec,:</em>&nbsp;</td><td>if set, DO bit is set in EDNS queries. If the value includes BIT_CD, CD bit is set when in EDNS queries. If the value includes BIT_DO, DO bit is set when in EDNS queries. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>callback,:</em>&nbsp;</td><td>callback function. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>callback_arg,:</em>&nbsp;</td><td>user argument to callback function. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addr,:</em>&nbsp;</td><td>to which server to send the query. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>addrlen,:</em>&nbsp;</td><td>length of addr. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buff,:</em>&nbsp;</td><td>scratch buffer to create query contents in. Empty on exit. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arg_compare,:</em>&nbsp;</td><td>function to compare callback args, return true if identical. It is given the callback_arg and args that are listed. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>0 on error, or pointer to serviced query that is used to answer this serviced query may be shared with other callbacks as well. </dd></dl>

<p>References <a class="el" href="replay_8h_source.html#l00172">replay_moment::addr</a>, <a class="el" href="replay_8h_source.html#l00174">replay_moment::addrlen</a>, <a class="el" href="fake__event_8c_source.html#l00444">advance_moment()</a>, <a class="el" href="msgencode_8c_source.html#l00691">attach_edns_record()</a>, <a class="el" href="outside__network_8h_source.html#l00064">outside_network::base</a>, <a class="el" href="net__help_8h_source.html#l00054">BIT_CD</a>, <a class="el" href="net__help_8h_source.html#l00062">BIT_RD</a>, <a class="el" href="msgparse_8h_source.html#l00210">edns_data::bits</a>, <a class="el" href="outside__network_8c_source.html#l01544">callback_list_find()</a>, <a class="el" href="outside__network_8h_source.html#l00270">service_callback::cb</a>, <a class="el" href="outside__network_8h_source.html#l00272">service_callback::cb_arg</a>, <a class="el" href="outside__network_8h_source.html#l00326">serviced_query::cblist</a>, <a class="el" href="net__help_8h_source.html#l00081">EDNS_ADVERTISED_SIZE</a>, <a class="el" href="net__help_8h_source.html#l00079">EDNS_ADVERTISED_VERSION</a>, <a class="el" href="net__help_8h_source.html#l00083">EDNS_DO</a>, <a class="el" href="msgparse_8h_source.html#l00204">edns_data::edns_present</a>, <a class="el" href="msgparse_8h_source.html#l00208">edns_data::edns_version</a>, <a class="el" href="structreplay__moment.html#d531a02e0179182363a1d3cb72424257">replay_moment::evt_type</a>, <a class="el" href="msgparse_8h_source.html#l00206">edns_data::ext_rcode</a>, <a class="el" href="log_8c_source.html#l00267">fatal_exit()</a>, <a class="el" href="ldns-testpkts_8c_source.html#l00659">find_match()</a>, <a class="el" href="log_8h_source.html#l00185">log_assert</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="log_8c_source.html#l00228">log_info()</a>, <a class="el" href="net__help_8c_source.html#l00265">log_nametypeclass()</a>, <a class="el" href="outside__network_8c_source.html#l01056">lookup_serviced()</a>, <a class="el" href="replay_8h_source.html#l00166">replay_moment::match</a>, <a class="el" href="outside__network_8h_source.html#l00268">service_callback::next</a>, <a class="el" href="replay_8h_source.html#l00214">replay_runtime::now</a>, <a class="el" href="replay_8h_source.html#l00220">replay_runtime::pending_list</a>, <a class="el" href="outside__network_8h_source.html#l00287">serviced_query::qbuf</a>, <a class="el" href="rbtree_8c_source.html#l00326">rbtree_delete()</a>, <a class="el" href="fake__event_8c_source.html#l00109">repevt_string()</a>, <a class="el" href="outside__network_8h_source.html#l00114">outside_network::serviced</a>, <a class="el" href="outside__network_8c_source.html#l01072">serviced_create()</a>, <a class="el" href="outside__network_8c_source.html#l01038">serviced_gen_query()</a>, <a class="el" href="outside__network_8c_source.html#l01227">serviced_udp_send()</a>, <a class="el" href="net__help_8c_source.html#l00329">sockaddr_cmp()</a>, <a class="el" href="replay_8h_source.html#l00139">replay_moment::time_step</a>, <a class="el" href="net__help_8h_source.html#l00075">UDP_AUTH_QUERY_TIMEOUT</a>, <a class="el" href="msgparse_8h_source.html#l00212">edns_data::udp_size</a>, <a class="el" href="log_8h_source.html#l00052">VERB_OPS</a>, and <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>.</p>

</div>
</div><p>
<a class="anchor" name="fba22c3a1d3e71a3913b22511d54aae3"></a><!-- doxytag: member="fake_event.c::outnet_serviced_query_stop" ref="fba22c3a1d3e71a3913b22511d54aae3" args="(struct serviced_query *sq, void *cb_arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void outnet_serviced_query_stop           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structserviced__query.html">serviced_query</a> *&nbsp;</td>
          <td class="paramname"> <em>sq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>cb_arg</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove service query callback. 
<p>
If that leads to zero callbacks, the query is completely cancelled. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>sq,:</em>&nbsp;</td><td>serviced query to adjust. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cb_arg,:</em>&nbsp;</td><td>callback argument of callback that needs removal. same as the callback_arg to <a class="el" href="outside__network_8c.html#7908708961b40556179845d57e495992" title="Perform a serviced query to the authoritative servers.">outnet_serviced_query()</a>. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="replay_8h_source.html#l00256">fake_pending::buffer</a>, <a class="el" href="outside__network_8c_source.html#l01601">callback_list_remove()</a>, <a class="el" href="replay_8h_source.html#l00264">fake_pending::cb_arg</a>, <a class="el" href="outside__network_8h_source.html#l00326">serviced_query::cblist</a>, <a class="el" href="log_8h_source.html#l00185">log_assert</a>, <a class="el" href="log_8c_source.html#l00228">log_info()</a>, <a class="el" href="replay_8h_source.html#l00269">fake_pending::next</a>, <a class="el" href="outside__network_8h_source.html#l00324">serviced_query::outnet</a>, <a class="el" href="replay_8h_source.html#l00220">replay_runtime::pending_list</a>, <a class="el" href="replay_8h_source.html#l00271">fake_pending::pkt</a>, <a class="el" href="rbtree_8c_source.html#l00326">rbtree_delete()</a>, <a class="el" href="replay_8h_source.html#l00277">fake_pending::runtime</a>, <a class="el" href="outside__network_8h_source.html#l00114">outside_network::serviced</a>, <a class="el" href="outside__network_8c_source.html#l01122">serviced_delete()</a>, and <a class="el" href="outside__network_8h_source.html#l00314">serviced_query::to_be_deleted</a>.</p>

</div>
</div><p>
<a class="anchor" name="c1ae81a9597044e5ec501a7ea2145078"></a><!-- doxytag: member="fake_event.c::listening_ports_open" ref="c1ae81a9597044e5ec501a7ea2145078" args="(struct config_file *cfg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structlisten__port.html">listen_port</a>* listening_ports_open           </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;)&nbsp;</td>
          <td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create shared listening ports Getaddrinfo, create socket, bind and listen to zero or more interfaces for IP4 and/or IP6, for UDP and/or TCP. 
<p>
On the given port number. It creates the sockets. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>cfg,:</em>&nbsp;</td><td>settings on what ports to open. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: linked list of ports or NULL on error. </dd></dl>

<p>References <a class="el" href="config__file_8h_source.html#l00069">config_file::do_ip4</a>, <a class="el" href="config__file_8h_source.html#l00071">config_file::do_ip6</a>, <a class="el" href="config__file_8h_source.html#l00075">config_file::do_tcp</a>, <a class="el" href="config__file_8h_source.html#l00073">config_file::do_udp</a>, <a class="el" href="config__file_8h_source.html#l00116">config_file::if_automatic</a>, <a class="el" href="config__file_8h_source.html#l00121">config_file::ifs</a>, <a class="el" href="config__file_8h_source.html#l00082">config_file::incoming_num_tcp</a>, <a class="el" href="listen__dnsport_8c_source.html#l00709">listening_ports_free()</a>, <a class="el" href="log_8c_source.html#l00254">log_warn()</a>, <a class="el" href="config__file_8h_source.html#l00119">config_file::num_ifs</a>, <a class="el" href="config__file_8h_source.html#l00067">config_file::port</a>, <a class="el" href="listen__dnsport_8c_source.html#l00448">ports_create_if()</a>, and <a class="el" href="net__help_8c_source.html#l00051">str_is_ip6()</a>.</p>

</div>
</div><p>
<a class="anchor" name="2e9ac96de1521dbcedb26c5f0bf1030c"></a><!-- doxytag: member="fake_event.c::listen_pushback" ref="2e9ac96de1521dbcedb26c5f0bf1030c" args="(struct listen_dnsport *listen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void listen_pushback           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlisten__dnsport.html">listen_dnsport</a> *&nbsp;</td>
          <td class="paramname"> <em>listen</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Stop listening to the dnsports. 
<p>
Ports are still open but not checked for readability - performs pushback of the load. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>listen,:</em>&nbsp;</td><td>the listening structs to stop listening on. Note that udp and tcp-accept handlers stop, but ongoing tcp-handlers are kept going, since its rude to 'reset connection by peer' them, instead, we keep them and the callback will be called when its ready. It can be dropped at that time. New tcp and udp queries can be served by other threads. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="listen__dnsport_8h_source.html#l00073">listen_list::com</a>, <a class="el" href="fake__event_8c_source.html#l01007">comm_point_stop_listening()</a>, <a class="el" href="listen__dnsport_8h_source.html#l00063">listen_dnsport::cps</a>, <a class="el" href="log_8h_source.html#l00185">log_assert</a>, <a class="el" href="listen__dnsport_8h_source.html#l00071">listen_list::next</a>, and <a class="el" href="structcomm__point.html#e97adb4dd9e0ea2e4b18465bcc8b0162">comm_point::type</a>.</p>

</div>
</div><p>
<a class="anchor" name="8320623d073a32c81c460a785bd73764"></a><!-- doxytag: member="fake_event.c::listen_resume" ref="8320623d073a32c81c460a785bd73764" args="(struct listen_dnsport *listen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void listen_resume           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlisten__dnsport.html">listen_dnsport</a> *&nbsp;</td>
          <td class="paramname"> <em>listen</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Start listening again to the dnsports. 
<p>
Call after the listen_pushback has been called. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>listen,:</em>&nbsp;</td><td>the listening structs to stop listening on. </td></tr>
  </table>
</dl>

<p>References <a class="el" href="listen__dnsport_8h_source.html#l00073">listen_list::com</a>, <a class="el" href="fake__event_8c_source.html#l01001">comm_point_start_listening()</a>, <a class="el" href="listen__dnsport_8h_source.html#l00063">listen_dnsport::cps</a>, <a class="el" href="log_8h_source.html#l00185">log_assert</a>, <a class="el" href="listen__dnsport_8h_source.html#l00071">listen_list::next</a>, and <a class="el" href="structcomm__point.html#e97adb4dd9e0ea2e4b18465bcc8b0162">comm_point::type</a>.</p>

</div>
</div><p>
<a class="anchor" name="bfd80dff2df0cb2ab35ec359ba1cad12"></a><!-- doxytag: member="fake_event.c::comm_point_create_local" ref="bfd80dff2df0cb2ab35ec359ba1cad12" args="(struct comm_base *base, int fd, size_t bufsize, comm_point_callback_t *callback, void *callback_arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structcomm__point.html">comm_point</a>* comm_point_create_local           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__base.html">comm_base</a> *&nbsp;</td>
          <td class="paramname"> <em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>bufsize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="netevent_8h.html#2ac6c8fe545b6f40c109a064ce17a24d">comm_point_callback_t</a> *&nbsp;</td>
          <td class="paramname"> <em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>callback_arg</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>
Create commpoint to listen to a local domain file descriptor. 
<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>base,:</em>&nbsp;</td><td>in which base to alloc the commpoint. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>fd,:</em>&nbsp;</td><td>file descriptor of open AF_UNIX socket set to listen nonblocking. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>bufsize,:</em>&nbsp;</td><td>size of buffer to create for handlers. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>callback,:</em>&nbsp;</td><td>callback function pointer for the handler. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>callback_arg,:</em>&nbsp;</td><td>will be passed to your callback function. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: the commpoint or NULL on error. </dd></dl>

</div>
</div><p>
<a class="anchor" name="793278e8c315ea3cc44ff12f18ac02fc"></a><!-- doxytag: member="fake_event.c::comm_point_create_raw" ref="793278e8c315ea3cc44ff12f18ac02fc" args="(struct comm_base *base, int fd, int writing, comm_point_callback_t *callback, void *callback_arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structcomm__point.html">comm_point</a>* comm_point_create_raw           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__base.html">comm_base</a> *&nbsp;</td>
          <td class="paramname"> <em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>writing</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="netevent_8h.html#2ac6c8fe545b6f40c109a064ce17a24d">comm_point_callback_t</a> *&nbsp;</td>
          <td class="paramname"> <em>callback</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>callback_arg</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>
Create commpoint to listen to a local domain pipe descriptor. 
<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>base,:</em>&nbsp;</td><td>in which base to alloc the commpoint. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>fd,:</em>&nbsp;</td><td>file descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>writing,:</em>&nbsp;</td><td>true if you want to listen to writes, false for reads. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>callback,:</em>&nbsp;</td><td>callback function pointer for the handler. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>callback_arg,:</em>&nbsp;</td><td>will be passed to your callback function. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: the commpoint or NULL on error. </dd></dl>

<p>Referenced by <a class="el" href="remote_8c_source.html#l00339">accept_open()</a>, <a class="el" href="remote_8c_source.html#l00372">remote_accept_callback()</a>, <a class="el" href="tube_8c_source.html#l00407">tube_setup_bg_listen()</a>, and <a class="el" href="tube_8c_source.html#l00422">tube_setup_bg_write()</a>.</p>

</div>
</div><p>
<a class="anchor" name="f0b8caf76732fbeef49f6b4730387ab0"></a><!-- doxytag: member="fake_event.c::comm_point_start_listening" ref="f0b8caf76732fbeef49f6b4730387ab0" args="(struct comm_point *c, int newfd, int sec)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_point_start_listening           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__point.html">comm_point</a> *&nbsp;</td>
          <td class="paramname"> <em>c</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>newfd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>sec</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Start listening again for input on the comm point. 
<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>c,:</em>&nbsp;</td><td>commpoint to enable again. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>newfd,:</em>&nbsp;</td><td>new fd, or -1 to leave fd be. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>sec,:</em>&nbsp;</td><td>timeout in seconds, or -1 for no (change to the) timeout. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l01453">comm_point_send_reply()</a>, <a class="el" href="listen__dnsport_8c_source.html#l00619">listen_resume()</a>, <a class="el" href="outside__network_8c_source.html#l00132">outnet_tcp_take_into_use()</a>, <a class="el" href="netevent_8c_source.html#l00669">reclaim_tcp_handler()</a>, <a class="el" href="remote_8c_source.html#l00372">remote_accept_callback()</a>, <a class="el" href="outside__network_8c_source.html#l00795">select_ifport()</a>, <a class="el" href="netevent_8c_source.html#l00584">setup_tcp_handler()</a>, <a class="el" href="netevent_8c_source.html#l00699">tcp_callback_reader()</a>, <a class="el" href="netevent_8c_source.html#l00685">tcp_callback_writer()</a>, and <a class="el" href="tube_8c_source.html#l00434">tube_queue_item()</a>.</p>

</div>
</div><p>
<a class="anchor" name="44b1a87283127a1f6632ac8d45895920"></a><!-- doxytag: member="fake_event.c::comm_point_stop_listening" ref="44b1a87283127a1f6632ac8d45895920" args="(struct comm_point *c)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_point_stop_listening           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__point.html">comm_point</a> *&nbsp;</td>
          <td class="paramname"> <em>c</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Stop listening for input on the commpoint. 
<p>
No callbacks will happen. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>c,:</em>&nbsp;</td><td>commpoint to disable. The fd is not closed. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l00634">comm_point_tcp_accept_callback()</a>, <a class="el" href="listen__dnsport_8c_source.html#l00606">listen_pushback()</a>, <a class="el" href="remote_8c_source.html#l00372">remote_accept_callback()</a>, <a class="el" href="netevent_8c_source.html#l00699">tcp_callback_reader()</a>, <a class="el" href="netevent_8c_source.html#l00685">tcp_callback_writer()</a>, and <a class="el" href="tube_8c_source.html#l00218">tube_handle_write()</a>.</p>

</div>
</div><p>
<a class="anchor" name="9cfab13f86b3f2f180ea6b66119b455d"></a><!-- doxytag: member="fake_event.c::comm_point_delete" ref="9cfab13f86b3f2f180ea6b66119b455d" args="(struct comm_point *c)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_point_delete           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__point.html">comm_point</a> *&nbsp;</td>
          <td class="paramname"> <em>c</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Close and deallocate (free) the comm point. 
<p>
If the comm point is a tcp-accept point, also its tcp-handler points are deleted. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>c,:</em>&nbsp;</td><td>comm point to delete. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="remote_8c_source.html#l00463">clean_point()</a>, <a class="el" href="netevent_8c_source.html#l01189">comm_point_create_tcp()</a>, <a class="el" href="netevent_8c_source.html#l01028">comm_point_create_udp()</a>, <a class="el" href="netevent_8c_source.html#l01077">comm_point_create_udp_ancil()</a>, <a class="el" href="netevent_8c_source.html#l01427">comm_point_delete()</a>, <a class="el" href="remote_8c_source.html#l00205">daemon_remote_clear()</a>, <a class="el" href="listen__dnsport_8c_source.html#l00534">listen_create()</a>, <a class="el" href="listen__dnsport_8c_source.html#l00585">listen_list_delete()</a>, <a class="el" href="outside__network_8c_source.html#l00624">outside_network_delete()</a>, <a class="el" href="tube_8c_source.html#l00110">tube_remove_bg_listen()</a>, and <a class="el" href="tube_8c_source.html#l00122">tube_remove_bg_write()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a9df62355a71cfa9902f172a644f0dc9"></a><!-- doxytag: member="fake_event.c::listen_get_mem" ref="a9df62355a71cfa9902f172a644f0dc9" args="(struct listen_dnsport *listen)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t listen_get_mem           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlisten__dnsport.html">listen_dnsport</a> *&nbsp;</td>
          <td class="paramname"> <em>listen</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
get memory size used by the listening structs 
<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>listen,:</em>&nbsp;</td><td>listening structure. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: size in bytes. </dd></dl>

<p>References <a class="el" href="listen__dnsport_8h_source.html#l00056">listen_dnsport::base</a>, <a class="el" href="listen__dnsport_8h_source.html#l00073">listen_list::com</a>, <a class="el" href="fake__event_8c_source.html#l01028">comm_point_get_mem()</a>, <a class="el" href="listen__dnsport_8h_source.html#l00063">listen_dnsport::cps</a>, <a class="el" href="listen__dnsport_8h_source.html#l00071">listen_list::next</a>, and <a class="el" href="listen__dnsport_8h_source.html#l00060">listen_dnsport::udp_buff</a>.</p>

</div>
</div><p>
<a class="anchor" name="2617256141980f2585958a8bf5ba9017"></a><!-- doxytag: member="fake_event.c::outnet_get_mem" ref="2617256141980f2585958a8bf5ba9017" args="(struct outside_network *outnet)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t outnet_get_mem           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structoutside__network.html">outside_network</a> *&nbsp;</td>
          <td class="paramname"> <em>outnet</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get memory size in use by outside network. 
<p>
Counts buffers and outstanding query (serviced queries) malloced data. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>outnet,:</em>&nbsp;</td><td>outside network structure. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>size in bytes. </dd></dl>

<p>References <a class="el" href="outside__network_8h_source.html#l00064">outside_network::base</a>, <a class="el" href="outside__network_8h_source.html#l00225">pending_tcp::c</a>, <a class="el" href="outside__network_8h_source.html#l00326">serviced_query::cblist</a>, <a class="el" href="fake__event_8c_source.html#l01028">comm_point_get_mem()</a>, <a class="el" href="rbtree_8h_source.html#l00081">rbtree_t::count</a>, <a class="el" href="outside__network_8h_source.html#l00177">port_comm::cp</a>, <a class="el" href="outside__network_8c_source.html#l01643">if_get_mem()</a>, <a class="el" href="outside__network_8h_source.html#l00097">outside_network::ip4_ifs</a>, <a class="el" href="outside__network_8h_source.html#l00102">outside_network::ip6_ifs</a>, <a class="el" href="outside__network_8h_source.html#l00268">service_callback::next</a>, <a class="el" href="outside__network_8h_source.html#l00167">port_comm::next</a>, <a class="el" href="outside__network_8h_source.html#l00238">waiting_tcp::next_waiting</a>, <a class="el" href="outside__network_8h_source.html#l00207">pending::next_waiting</a>, <a class="el" href="outside__network_8h_source.html#l00099">outside_network::num_ip4</a>, <a class="el" href="outside__network_8h_source.html#l00104">outside_network::num_ip6</a>, <a class="el" href="outside__network_8h_source.html#l00128">outside_network::num_tcp</a>, <a class="el" href="outside__network_8h_source.html#l00112">outside_network::pending</a>, <a class="el" href="outside__network_8h_source.html#l00289">serviced_query::qbuflen</a>, <a class="el" href="outside__network_8h_source.html#l00227">pending_tcp::query</a>, <a class="el" href="rbtree_8h_source.html#l00173">RBTREE_FOR</a>, <a class="el" href="outside__network_8h_source.html#l00114">outside_network::serviced</a>, <a class="el" href="outside__network_8h_source.html#l00075">outside_network::svcd_overhead</a>, <a class="el" href="outside__network_8h_source.html#l00126">outside_network::tcp_conns</a>, <a class="el" href="outside__network_8h_source.html#l00132">outside_network::tcp_wait_first</a>, <a class="el" href="outside__network_8h_source.html#l00072">outside_network::udp_buff</a>, <a class="el" href="outside__network_8h_source.html#l00107">outside_network::udp_wait_first</a>, <a class="el" href="outside__network_8h_source.html#l00094">outside_network::unused_fds</a>, <a class="el" href="outside__network_8c_source.html#l01631">waiting_tcp_get_mem()</a>, and <a class="el" href="outside__network_8c_source.html#l01657">waiting_udp_get_mem()</a>.</p>

</div>
</div><p>
<a class="anchor" name="89e19915fd58de03f17d247440654ebe"></a><!-- doxytag: member="fake_event.c::comm_point_get_mem" ref="89e19915fd58de03f17d247440654ebe" args="(struct comm_point *c)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t comm_point_get_mem           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__point.html">comm_point</a> *&nbsp;</td>
          <td class="paramname"> <em>c</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get size of memory used by comm point. 
<p>
For TCP handlers this includes subhandlers. For UDP handlers, this does not include the (shared) UDP buffer. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>c,:</em>&nbsp;</td><td>commpoint. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>size in bytes. </dd></dl>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l01550">comm_point_get_mem()</a>, <a class="el" href="outside__network_8c_source.html#l01643">if_get_mem()</a>, <a class="el" href="listen__dnsport_8c_source.html#l00726">listen_get_mem()</a>, <a class="el" href="outside__network_8c_source.html#l01664">outnet_get_mem()</a>, and <a class="el" href="worker_8c_source.html#l00131">worker_mem_report()</a>.</p>

</div>
</div><p>
<a class="anchor" name="6cab741ad0c0325c2c78f4ccbfbfdf2f"></a><!-- doxytag: member="fake_event.c::serviced_get_mem" ref="6cab741ad0c0325c2c78f4ccbfbfdf2f" args="(struct serviced_query *c)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t serviced_get_mem           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structserviced__query.html">serviced_query</a> *&nbsp;</td>
          <td class="paramname"> <em>sq</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get memory size in use by serviced query while it is servicing callbacks. 
<p>
This takes into account the pre-deleted status of it; it will be deleted when the callbacks are done. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>sq,:</em>&nbsp;</td><td>serviced query. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>size in bytes. </dd></dl>

<p>References <a class="el" href="outside__network_8h_source.html#l00326">serviced_query::cblist</a>, <a class="el" href="netevent_8c_source.html#l01650">comm_timer_get_mem()</a>, <a class="el" href="outside__network_8h_source.html#l00268">service_callback::next</a>, <a class="el" href="outside__network_8h_source.html#l00289">serviced_query::qbuflen</a>, and <a class="el" href="structserviced__query.html#a157e7e4a16c7ccf367f0ccd5daea6cf">serviced_query::status</a>.</p>

</div>
</div><p>
<a class="anchor" name="9a28a84c828591725627bd5275c724fd"></a><!-- doxytag: member="fake_event.c::comm_point_udp_callback" ref="9a28a84c828591725627bd5275c724fd" args="(int fd, short event, void *arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_point_udp_callback           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">short&nbsp;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This routine is published for checks and tests, and is only used internally. 
<p>
handle libevent callback for udp comm point. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>fd,:</em>&nbsp;</td><td>file descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>event,:</em>&nbsp;</td><td>event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arg,:</em>&nbsp;</td><td>the <a class="el" href="structcomm__point.html" title="Communication point to the network These behaviours can be accomplished by setting...">comm_point</a> structure. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l01028">comm_point_create_udp()</a>, and <a class="el" href="fptr__wlist_8c_source.html#l00120">fptr_whitelist_event()</a>.</p>

</div>
</div><p>
<a class="anchor" name="03da860ff7bf90dd3f5d7918bd63a6c9"></a><!-- doxytag: member="fake_event.c::comm_point_udp_ancil_callback" ref="03da860ff7bf90dd3f5d7918bd63a6c9" args="(int fd, short event, void *arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_point_udp_ancil_callback           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">short&nbsp;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This routine is published for checks and tests, and is only used internally. 
<p>
handle libevent callback for udp ancillary data comm point. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>fd,:</em>&nbsp;</td><td>file descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>event,:</em>&nbsp;</td><td>event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arg,:</em>&nbsp;</td><td>the <a class="el" href="structcomm__point.html" title="Communication point to the network These behaviours can be accomplished by setting...">comm_point</a> structure. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l01077">comm_point_create_udp_ancil()</a>, and <a class="el" href="fptr__wlist_8c_source.html#l00120">fptr_whitelist_event()</a>.</p>

</div>
</div><p>
<a class="anchor" name="8071b50a655584e9ab583c1170df9169"></a><!-- doxytag: member="fake_event.c::comm_point_tcp_accept_callback" ref="8071b50a655584e9ab583c1170df9169" args="(int fd, short event, void *arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_point_tcp_accept_callback           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">short&nbsp;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This routine is published for checks and tests, and is only used internally. 
<p>
handle libevent callback for tcp accept comm point <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>fd,:</em>&nbsp;</td><td>file descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>event,:</em>&nbsp;</td><td>event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arg,:</em>&nbsp;</td><td>the <a class="el" href="structcomm__point.html" title="Communication point to the network These behaviours can be accomplished by setting...">comm_point</a> structure. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l01189">comm_point_create_tcp()</a>, and <a class="el" href="fptr__wlist_8c_source.html#l00120">fptr_whitelist_event()</a>.</p>

</div>
</div><p>
<a class="anchor" name="33f013d617684b997476fe9bf8be231a"></a><!-- doxytag: member="fake_event.c::comm_point_tcp_handle_callback" ref="33f013d617684b997476fe9bf8be231a" args="(int fd, short event, void *arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_point_tcp_handle_callback           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">short&nbsp;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This routine is published for checks and tests, and is only used internally. 
<p>
handle libevent callback for tcp data comm point <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>fd,:</em>&nbsp;</td><td>file descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>event,:</em>&nbsp;</td><td>event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arg,:</em>&nbsp;</td><td>the <a class="el" href="structcomm__point.html" title="Communication point to the network These behaviours can be accomplished by setting...">comm_point</a> structure. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l01127">comm_point_create_tcp_handler()</a>, <a class="el" href="netevent_8c_source.html#l01253">comm_point_create_tcp_out()</a>, and <a class="el" href="fptr__wlist_8c_source.html#l00120">fptr_whitelist_event()</a>.</p>

</div>
</div><p>
<a class="anchor" name="a2ef06dfc6040dd3acca1eefa92cfc90"></a><!-- doxytag: member="fake_event.c::comm_timer_callback" ref="a2ef06dfc6040dd3acca1eefa92cfc90" args="(int fd, short event, void *arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_timer_callback           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">short&nbsp;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This routine is published for checks and tests, and is only used internally. 
<p>
handle libevent callback for timer comm. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>fd,:</em>&nbsp;</td><td>file descriptor (always -1). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>event,:</em>&nbsp;</td><td>event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arg,:</em>&nbsp;</td><td>the <a class="el" href="structcomm__timer.html" title="Structure only for making timeout events.">comm_timer</a> structure. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l01569">comm_timer_create()</a>, <a class="el" href="netevent_8c_source.html#l01606">comm_timer_set()</a>, and <a class="el" href="fptr__wlist_8c_source.html#l00120">fptr_whitelist_event()</a>.</p>

</div>
</div><p>
<a class="anchor" name="4d5703fffb724b650c2e8a58f6dc830e"></a><!-- doxytag: member="fake_event.c::comm_signal_callback" ref="4d5703fffb724b650c2e8a58f6dc830e" args="(int fd, short event, void *arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_signal_callback           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">short&nbsp;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This routine is published for checks and tests, and is only used internally. 
<p>
handle libevent callback for signal comm. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>fd,:</em>&nbsp;</td><td>file descriptor (used for the signal number). </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>event,:</em>&nbsp;</td><td>event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arg,:</em>&nbsp;</td><td>the internal commsignal structure. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l01684">comm_signal_bind()</a>, and <a class="el" href="fptr__wlist_8c_source.html#l00120">fptr_whitelist_event()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c50a5301fce190e30d3293e764e470f3"></a><!-- doxytag: member="fake_event.c::comm_point_local_handle_callback" ref="c50a5301fce190e30d3293e764e470f3" args="(int fd, short event, void *arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_point_local_handle_callback           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">short&nbsp;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This routine is published for checks and tests, and is only used internally. 
<p>
libevent callback for AF_UNIX fds <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>fd,:</em>&nbsp;</td><td>file descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>event,:</em>&nbsp;</td><td>event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arg,:</em>&nbsp;</td><td>the <a class="el" href="structcomm__point.html" title="Communication point to the network These behaviours can be accomplished by setting...">comm_point</a> structure. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l01305">comm_point_create_local()</a>, and <a class="el" href="fptr__wlist_8c_source.html#l00120">fptr_whitelist_event()</a>.</p>

</div>
</div><p>
<a class="anchor" name="efca81e9ffcf53591b7d9555c498d3dd"></a><!-- doxytag: member="fake_event.c::comm_point_raw_handle_callback" ref="efca81e9ffcf53591b7d9555c498d3dd" args="(int fd, short event, void *arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_point_raw_handle_callback           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>fd</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">short&nbsp;</td>
          <td class="paramname"> <em>event</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>arg</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This routine is published for checks and tests, and is only used internally. 
<p>
libevent callback for raw fd access. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>fd,:</em>&nbsp;</td><td>file descriptor. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>event,:</em>&nbsp;</td><td>event bits from libevent: EV_READ, EV_WRITE, EV_SIGNAL, EV_TIMEOUT. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>arg,:</em>&nbsp;</td><td>the <a class="el" href="structcomm__point.html" title="Communication point to the network These behaviours can be accomplished by setting...">comm_point</a> structure. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l01357">comm_point_create_raw()</a>, and <a class="el" href="fptr__wlist_8c_source.html#l00120">fptr_whitelist_event()</a>.</p>

</div>
</div><p>
<a class="anchor" name="1a5faccab873a9e377fb715cb00be916"></a><!-- doxytag: member="fake_event.c::comm_timer_create" ref="1a5faccab873a9e377fb715cb00be916" args="(struct comm_base *base, void(*cb)(void *), void *cb_arg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structcomm__timer.html">comm_timer</a>* comm_timer_create           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__base.html">comm_base</a> *&nbsp;</td>
          <td class="paramname"> <em>base</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void(*)(void *)&nbsp;</td>
          <td class="paramname"> <em>cb</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&nbsp;</td>
          <td class="paramname"> <em>cb_arg</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>
create timer. 
<p>
Not active upon creation. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>base,:</em>&nbsp;</td><td>event handling base. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cb,:</em>&nbsp;</td><td>callback function: void myfunc(void* myarg); </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>cb_arg,:</em>&nbsp;</td><td>user callback argument. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>: the new timer or NULL on error. </dd></dl>

<p>Referenced by <a class="el" href="outside__network_8c_source.html#l00985">pending_tcp_query()</a>, <a class="el" href="outside__network_8c_source.html#l00902">pending_udp_query()</a>, <a class="el" href="worker_8c_source.html#l00967">worker_init()</a>, and <a class="el" href="win__svc_8c_source.html#l00526">wsvc_setup_worker()</a>.</p>

</div>
</div><p>
<a class="anchor" name="cbfb9cf754701131fd122454a8bc999e"></a><!-- doxytag: member="fake_event.c::comm_timer_disable" ref="cbfb9cf754701131fd122454a8bc999e" args="(struct comm_timer *timer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_timer_disable           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__timer.html">comm_timer</a> *&nbsp;</td>
          <td class="paramname"> <em>timer</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
disable timer. 
<p>
Stops callbacks from happening. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>timer,:</em>&nbsp;</td><td>to disable. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="netevent_8c_source.html#l01622">comm_timer_delete()</a>, <a class="el" href="netevent_8c_source.html#l01606">comm_timer_set()</a>, and <a class="el" href="outside__network_8c_source.html#l00303">outnet_udp_cb()</a>.</p>

</div>
</div><p>
<a class="anchor" name="5ae99ac696c5300d19e0a7a2c04816ee"></a><!-- doxytag: member="fake_event.c::comm_timer_set" ref="5ae99ac696c5300d19e0a7a2c04816ee" args="(struct comm_timer *timer, struct timeval *tv)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_timer_set           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__timer.html">comm_timer</a> *&nbsp;</td>
          <td class="paramname"> <em>timer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct timeval *&nbsp;</td>
          <td class="paramname"> <em>tv</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
reset timevalue for timer. 
<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>timer,:</em>&nbsp;</td><td>timer to (re)set. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>tv,:</em>&nbsp;</td><td>when the timer should activate. if NULL timer is disabled. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="outside__network_8c_source.html#l00985">pending_tcp_query()</a>, <a class="el" href="outside__network_8c_source.html#l00864">randomize_and_send_udp()</a>, <a class="el" href="win__svc_8c_source.html#l00496">set_cron_timer()</a>, and <a class="el" href="worker_8c_source.html#l00920">worker_restart_timer()</a>.</p>

</div>
</div><p>
<a class="anchor" name="bb7d9fb9155c3508dce467b0b361194d"></a><!-- doxytag: member="fake_event.c::comm_timer_delete" ref="bb7d9fb9155c3508dce467b0b361194d" args="(struct comm_timer *timer)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void comm_timer_delete           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__timer.html">comm_timer</a> *&nbsp;</td>
          <td class="paramname"> <em>timer</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
delete timer. 
<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>timer,:</em>&nbsp;</td><td>to delete. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="outside__network_8c_source.html#l00709">pending_delete()</a>, <a class="el" href="outside__network_8c_source.html#l00902">pending_udp_query()</a>, <a class="el" href="outside__network_8c_source.html#l00122">waiting_tcp_delete()</a>, <a class="el" href="worker_8c_source.html#l01115">worker_delete()</a>, and <a class="el" href="win__svc_8c_source.html#l00546">wsvc_desetup_worker()</a>.</p>

</div>
</div><p>
<a class="anchor" name="6b0ffc9baa38f111fb074e8f0fd5df69"></a><!-- doxytag: member="fake_event.c::comm_base_internal" ref="6b0ffc9baa38f111fb074e8f0fd5df69" args="(struct comm_base *b)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct event_base* comm_base_internal           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structcomm__base.html">comm_base</a> *&nbsp;</td>
          <td class="paramname"> <em>b</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td><code> [read]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Access internal data structure (for <a class="el" href="tube_8c.html" title="This file contains pipe service functions.">util/tube.c</a> on windows). 
<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>b,:</em>&nbsp;</td><td>comm base </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>event_base. Could be libevent, or internal event handler. </dd></dl>

<p>Referenced by <a class="el" href="win__svc_8c_source.html#l00526">wsvc_setup_worker()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d37fb55b6fb822953081d15f836382e5"></a><!-- doxytag: member="fake_event.c::daemon_remote_exec" ref="d37fb55b6fb822953081d15f836382e5" args="(struct worker *worker)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void daemon_remote_exec           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structworker.html">worker</a> *&nbsp;</td>
          <td class="paramname"> <em>worker</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Handle nonthreaded remote cmd execution. 
<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><a class="el" href="structworker.html" title="Structure holding working information for unbound.">worker</a>,:</em>&nbsp;</td><td>this <a class="el" href="structworker.html" title="Structure holding working information for unbound.">worker</a> (the remote <a class="el" href="structworker.html" title="Structure holding working information for unbound.">worker</a>). </td></tr>
  </table>
</dl>

<p>References <a class="el" href="worker_8h_source.html#l00087">worker::cmd</a>, <a class="el" href="remote_8c_source.html#l01483">execute_cmd()</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="tube_8c_source.html#l00317">tube_read_msg()</a>, <a class="el" href="log_8h_source.html#l00058">VERB_ALGO</a>, and <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>.</p>

</div>
</div><p>
<hr><h2>Variable Documentation</h2>
<a class="anchor" name="4055fba8ffe7bf84c3b710f38212c9bd"></a><!-- doxytag: member="fake_event.c::saved_scenario" ref="4055fba8ffe7bf84c3b710f38212c9bd" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structreplay__scenario.html">replay_scenario</a>* <a class="el" href="fake__event_8c.html#4055fba8ffe7bf84c3b710f38212c9bd">saved_scenario</a> = NULL<code> [static]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Global variable: the scenario. 
<p>
Saved here for when event_init is done. 
</div>
</div><p>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Tue Oct 13 06:46:31 2009 for unbound by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.9 </small></address>
</body>
</html>