Sophie

Sophie

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

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: services/outside_network.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.9 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="dir_d1ccb6fd7b4f0b6c4993c4e5b9d49242.html">services</a>
  </div>
</div>
<div class="contents">
<h1>outside_network.h File Reference</h1>This file has functions to send queries to authoritative servers, and wait for the <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> answer, with timeouts.  
<a href="#_details">More...</a>
<p>
<code>#include &quot;<a class="el" href="rbtree_8h.html">util/rbtree.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="netevent_8h.html">util/netevent.h</a>&quot;</code><br>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Data Structures</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structoutside__network.html">outside_network</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Send queries to outside servers and wait for answers from servers.  <a href="structoutside__network.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structport__if.html">port_if</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outgoing interface.  <a href="structport__if.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structport__comm.html">port_comm</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Outgoing commpoint for UDP port.  <a href="structport__comm.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpending.html">pending</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A query that has an answer <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> for it.  <a href="structpending.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structpending__tcp.html">pending_tcp</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pending TCP query to server.  <a href="structpending__tcp.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structwaiting__tcp.html">waiting_tcp</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Query waiting for TCP buffer.  <a href="structwaiting__tcp.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structservice__callback.html">service_callback</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Callback to party interested in serviced query results.  <a href="structservice__callback.html#_details">More...</a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structserviced__query.html">serviced_query</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Query service record.  <a href="structserviced__query.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structoutside__network.html">outside_network</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="outside__network_8h.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="outside__network_8h.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="outside__network_8h.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="outside__network_8h.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="outside__network_8h.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">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="outside__network_8h.html#4bcaa60e4185cf2c77548c8b3754847e">pending_delete</a> (struct <a class="el" href="structoutside__network.html">outside_network</a> *outnet, struct <a class="el" href="structpending.html">pending</a> *p)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> answer.  <a href="#4bcaa60e4185cf2c77548c8b3754847e"></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="outside__network_8h.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="outside__network_8h.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">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="outside__network_8h.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="outside__network_8h.html#45a55cb9fcf2079267798f9815b8a3cc">serviced_get_mem</a> (struct <a class="el" href="structserviced__query.html">serviced_query</a> *sq)</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="#45a55cb9fcf2079267798f9815b8a3cc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="60a536f56eced390f24c6a1c0cb82a91"></a><!-- doxytag: member="outside_network.h::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="outside__network_8h.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="outside_network.h::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="outside__network_8h.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="outside_network.h::pending_udp_timer_cb" ref="83fe907b76868a2f25240a7a17a6ac15" args="(void *arg)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="outside__network_8h.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="outside_network.h::outnet_tcptimer" ref="2ac58c9238d30c9d6fa56a6d6ff88447" args="(void *arg)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="outside__network_8h.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"><a class="anchor" name="b8f6d4944d98aa2cdc59425e875f86b6"></a><!-- doxytag: member="outside_network.h::serviced_udp_callback" ref="b8f6d4944d98aa2cdc59425e875f86b6" args="(struct comm_point *c, void *arg, int error, struct comm_reply *rep)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="outside__network_8h.html#b8f6d4944d98aa2cdc59425e875f86b6">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> *rep)</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="4d57701d3d8f465fcf1fcabf7a5709d4"></a><!-- doxytag: member="outside_network.h::serviced_tcp_callback" ref="4d57701d3d8f465fcf1fcabf7a5709d4" args="(struct comm_point *c, void *arg, int error, struct comm_reply *rep)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="outside__network_8h.html#4d57701d3d8f465fcf1fcabf7a5709d4">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> *rep)</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="1e4562f5d89d0d9eaa82f34a59286eb2"></a><!-- doxytag: member="outside_network.h::pending_cmp" ref="1e4562f5d89d0d9eaa82f34a59286eb2" args="(const void *key1, const void *key2)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="outside__network_8h.html#1e4562f5d89d0d9eaa82f34a59286eb2">pending_cmp</a> (const void *key1, const void *key2)</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="3c656f254f7ff1c34aaa9b6dc5580db7"></a><!-- doxytag: member="outside_network.h::serviced_cmp" ref="3c656f254f7ff1c34aaa9b6dc5580db7" args="(const void *key1, const void *key2)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="outside__network_8h.html#3c656f254f7ff1c34aaa9b6dc5580db7">serviced_cmp</a> (const void *key1, const void *key2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">compare function of serviced query rbtree <br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
This file has functions to send queries to authoritative servers, and wait for the <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> answer, with timeouts. 
<p>
<hr><h2>Function Documentation</h2>
<a class="anchor" name="7dae61f7536c7bca9417ca83d3a16924"></a><!-- doxytag: member="outside_network.h::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>

<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="e5ba3c53d231337f43998b8e85bf11f3"></a><!-- doxytag: member="outside_network.h::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>

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

</div>
</div><p>
<a class="anchor" name="309e70fd2cf62db0a91c3555ba903688"></a><!-- doxytag: member="outside_network.h::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>

<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="230c240552687c172582710df2b50661"></a><!-- doxytag: member="outside_network.h::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>

<p>Referenced by <a class="el" href="libworker_8c_source.html#l00654">libworker_send_packet()</a>, <a class="el" href="outside__network_8c_source.html#l01227">serviced_udp_send()</a>, and <a class="el" href="worker_8c_source.html#l01148">worker_send_packet()</a>.</p>

</div>
</div><p>
<a class="anchor" name="f3d5512bd312f499b7f09bf8265077c1"></a><!-- doxytag: member="outside_network.h::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>

<p>Referenced by <a class="el" href="libworker_8c_source.html#l00654">libworker_send_packet()</a>, <a class="el" href="outside__network_8c_source.html#l01425">serviced_tcp_initiate()</a>, and <a class="el" href="worker_8c_source.html#l01148">worker_send_packet()</a>.</p>

</div>
</div><p>
<a class="anchor" name="4bcaa60e4185cf2c77548c8b3754847e"></a><!-- doxytag: member="outside_network.h::pending_delete" ref="4bcaa60e4185cf2c77548c8b3754847e" args="(struct outside_network *outnet, struct pending *p)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pending_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>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structpending.html">pending</a> *&nbsp;</td>
          <td class="paramname"> <em>p</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> answer. 
<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>outside network the <a class="el" href="structpending.html" title="A query that has an answer pending for it.">pending</a> query is part of. Internal feature: if outnet is NULL, p is not unlinked from rbtree. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p,:</em>&nbsp;</td><td>deleted </td></tr>
  </table>
</dl>

<p>References <a class="el" href="fake__event_8c_source.html#l01158">comm_timer_delete()</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="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="outside__network_8h_source.html#l00112">outside_network::pending</a>, <a class="el" href="outside__network_8h_source.html#l00211">pending::pkt</a>, <a class="el" href="rbtree_8c_source.html#l00326">rbtree_delete()</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>, and <a class="el" href="outside__network_8h_source.html#l00109">outside_network::udp_wait_last</a>.</p>

<p>Referenced by <a class="el" href="outside__network_8c_source.html#l00276">outnet_send_wait_udp()</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_8c_source.html#l00592">pending_node_del()</a>, <a class="el" href="outside__network_8c_source.html#l00902">pending_udp_query()</a>, <a class="el" href="outside__network_8c_source.html#l00410">pending_udp_timer_cb()</a>, and <a class="el" href="outside__network_8c_source.html#l01122">serviced_delete()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7908708961b40556179845d57e495992"></a><!-- doxytag: member="outside_network.h::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>

<p>Referenced by <a class="el" href="libworker_8c_source.html#l00677">libworker_send_query()</a>, and <a class="el" href="worker_8c_source.html#l01172">worker_send_query()</a>.</p>

</div>
</div><p>
<a class="anchor" name="fba22c3a1d3e71a3913b22511d54aae3"></a><!-- doxytag: member="outside_network.h::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>

<p>Referenced by <a class="el" href="outbound__list_8c_source.html#l00053">outbound_list_clear()</a>, and <a class="el" href="outbound__list_8c_source.html#l00077">outbound_list_remove()</a>.</p>

</div>
</div><p>
<a class="anchor" name="2617256141980f2585958a8bf5ba9017"></a><!-- doxytag: member="outside_network.h::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>

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

</div>
</div><p>
<a class="anchor" name="45a55cb9fcf2079267798f9815b8a3cc"></a><!-- doxytag: member="outside_network.h::serviced_get_mem" ref="45a55cb9fcf2079267798f9815b8a3cc" args="(struct serviced_query *sq)" -->
<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>

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

</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>