Sophie

Sophie

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

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: daemon/remote.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_25e37f0a75013b615a5ba63405adf018.html">daemon</a>
  </div>
</div>
<div class="contents">
<h1>remote.c File Reference</h1>This file contains the remote control functionality for the <a class="el" href="structdaemon.html" title="Structure holding worker list.">daemon</a>.  
<a href="#_details">More...</a>
<p>
<code>#include &quot;config.h&quot;</code><br>
<code>#include &quot;<a class="el" href="remote_8h.html">daemon/remote.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="worker_8h.html">daemon/worker.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="daemon_8h.html">daemon/daemon.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="stats_8h.html">daemon/stats.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="cachedump_8h.html">daemon/cachedump.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="log_8h.html">util/log.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="config__file_8h.html">util/config_file.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="module_8h.html">util/module.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="rrset_8h.html">services/cache/rrset.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="mesh_8h.html">services/mesh.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="localzone_8h.html">services/localzone.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="slabhash_8h.html">util/storage/slabhash.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="fptr__wlist_8h.html">util/fptr_wlist.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="dname_8h.html">util/data/dname.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="validator_8h.html">validator/validator.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="val__kcache_8h.html">validator/val_kcache.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="val__kentry_8h.html">validator/val_kentry.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="iterator_8h.html">iterator/iterator.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="iter__fwd_8h.html">iterator/iter_fwd.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="iter__delegpt_8h.html">iterator/iter_delegpt.h</a>&quot;</code><br>
<code>#include &quot;<a class="el" href="outbound__list_8h.html">services/outbound_list.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 &lt;sys/types.h&gt;</code><br>
<code>#include &lt;netdb.h&gt;</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="structdel__info.html">del_info</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Local info for deletion functions.  <a href="structdel__info.html#_details">More...</a><br></td></tr>
<tr><td colspan="2"><br><h2>Defines</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6f97489de939dc8bb35487cc23ee7ad2"></a><!-- doxytag: member="remote.c::SQ" ref="6f97489de939dc8bb35487cc23ee7ad2" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#6f97489de939dc8bb35487cc23ee7ad2">SQ</a>&nbsp;&nbsp;&nbsp;&quot;=&quot;</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">what to put on statistics lines between var and value, ": " or "=" <br></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="a74557176e78db3bed9560a1ce3f6be7"></a><!-- doxytag: member="remote.c::log_crypto_err" ref="a74557176e78db3bed9560a1ce3f6be7" args="(const char *str)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#a74557176e78db3bed9560a1ce3f6be7">log_crypto_err</a> (const char *str)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">log ssl crypto err <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="737cbff4a344db1ddecb8bb467698b15"></a><!-- doxytag: member="remote.c::timeval_subtract" ref="737cbff4a344db1ddecb8bb467698b15" args="(struct timeval *d, const struct timeval *end, const struct timeval *start)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#737cbff4a344db1ddecb8bb467698b15">timeval_subtract</a> (struct timeval *d, const struct timeval *end, const struct timeval *start)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">subtract timers and the values do not overflow or become negative <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7e6138c551e8c025b1b78d1181450d0c"></a><!-- doxytag: member="remote.c::timeval_divide" ref="7e6138c551e8c025b1b78d1181450d0c" args="(struct timeval *avg, const struct timeval *sum, size_t d)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#7e6138c551e8c025b1b78d1181450d0c">timeval_divide</a> (struct timeval *avg, const struct timeval *sum, size_t d)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">divide sum of timers to get average <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#38ce75f597fd29e9c16ca3f6e4995772">daemon_remote_create</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 new remote control state for the <a class="el" href="structdaemon.html" title="Structure holding worker list.">daemon</a>.  <a href="#38ce75f597fd29e9c16ca3f6e4995772"></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="remote_8c.html#9c33fc4690e14b7e485f9a41f1fb5113">daemon_remote_clear</a> (struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *rc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">remote control state to clear up.  <a href="#9c33fc4690e14b7e485f9a41f1fb5113"></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="remote_8c.html#54a5bd1d8c909682d94cd5a9d29d5f36">daemon_remote_delete</a> (struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *rc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">remote control state to delete.  <a href="#54a5bd1d8c909682d94cd5a9d29d5f36"></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="remote_8c.html#eb8c7138528b27a988cee52eded192c0">add_open</a> (const char *ip, int nr, struct <a class="el" href="structlisten__port.html">listen_port</a> **list, int noproto_is_err)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add and open a new control port.  <a href="#eb8c7138528b27a988cee52eded192c0"></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="remote_8c.html#9c04050d7761d1302de6ed9ce599c9fd">daemon_remote_open_ports</a> (struct <a class="el" href="structconfig__file.html">config_file</a> *cfg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Open and create listening ports for remote control.  <a href="#9c04050d7761d1302de6ed9ce599c9fd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="426af5627104123b35296b65d40dc0b1"></a><!-- doxytag: member="remote.c::accept_open" ref="426af5627104123b35296b65d40dc0b1" args="(struct daemon_remote *rc, int fd)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#426af5627104123b35296b65d40dc0b1">accept_open</a> (struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *rc, int fd)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">open accept commpoint <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#b01473810775dd2d8713c4f1bee63b95">daemon_remote_open_accept</a> (struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *rc, struct <a class="el" href="structlisten__port.html">listen_port</a> *ports, 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">Setup comm points for accepting remote control connections.  <a href="#b01473810775dd2d8713c4f1bee63b95"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="711cf8592b34f6d2195ee3bbf4591ff6"></a><!-- doxytag: member="remote.c::remote_accept_callback" ref="711cf8592b34f6d2195ee3bbf4591ff6" args="(struct comm_point *c, void *arg, int err, struct comm_reply *rep)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#711cf8592b34f6d2195ee3bbf4591ff6">remote_accept_callback</a> (struct <a class="el" href="structcomm__point.html">comm_point</a> *c, void *arg, int err, struct <a class="el" href="structcomm__reply.html">comm_reply</a> *rep)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">handle remote control accept callbacks <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9dfbb9ab74a08033aaf95350fc4e04df"></a><!-- doxytag: member="remote.c::state_list_remove_elem" ref="9dfbb9ab74a08033aaf95350fc4e04df" args="(struct rc_state **list, struct comm_point *c)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#9dfbb9ab74a08033aaf95350fc4e04df">state_list_remove_elem</a> (struct <a class="el" href="structrc__state.html">rc_state</a> **list, struct <a class="el" href="structcomm__point.html">comm_point</a> *c)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">delete from list <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f487f0be529254973cf98ce6c3451d9a"></a><!-- doxytag: member="remote.c::clean_point" ref="f487f0be529254973cf98ce6c3451d9a" args="(struct daemon_remote *rc, struct rc_state *s)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#f487f0be529254973cf98ce6c3451d9a">clean_point</a> (struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *rc, struct <a class="el" href="structrc__state.html">rc_state</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">decrease active count and remove commpoint from busy list <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#a4d0a30a3f43d446192e0eff9dd289b7">ssl_print_text</a> (SSL *ssl, const char *text)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Print fixed line of text over ssl connection in blocking mode.  <a href="#a4d0a30a3f43d446192e0eff9dd289b7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8ea12481396c1424b774a96f17f50436"></a><!-- doxytag: member="remote.c::ssl_print_vmsg" ref="8ea12481396c1424b774a96f17f50436" args="(SSL *ssl, const char *format, va_list args)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#8ea12481396c1424b774a96f17f50436">ssl_print_vmsg</a> (SSL *ssl, const char *format, va_list args)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">print text over the ssl connection <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="78d6e5218be79a9e6be840284bf3d417"></a><!-- doxytag: member="remote.c::ssl_printf" ref="78d6e5218be79a9e6be840284bf3d417" args="(SSL *ssl, const char *format,...)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#78d6e5218be79a9e6be840284bf3d417">ssl_printf</a> (SSL *ssl, const char *format,...)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">printf style printing to the ssl connection <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#0d8fa57b778e2235d604e4928ac9eaea">ssl_read_line</a> (SSL *ssl, char *buf, size_t max)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Read until <br>
 is encountered If SSL signals EOF, the string up to then is returned (without <br>
).  <a href="#0d8fa57b778e2235d604e4928ac9eaea"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5f39f34b983cbefbeeb7833784954936"></a><!-- doxytag: member="remote.c::skipwhite" ref="5f39f34b983cbefbeeb7833784954936" args="(char *str)" -->
static char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#5f39f34b983cbefbeeb7833784954936">skipwhite</a> (char *str)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">skip whitespace, return new pointer into string <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0bee5c00b3749cd0419a8c4c31c820f2"></a><!-- doxytag: member="remote.c::send_ok" ref="0bee5c00b3749cd0419a8c4c31c820f2" args="(SSL *ssl)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#0bee5c00b3749cd0419a8c4c31c820f2">send_ok</a> (SSL *ssl)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">send the OK to the control client <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="73e4b4f42219402e60c61900fef534ba"></a><!-- doxytag: member="remote.c::do_stop" ref="73e4b4f42219402e60c61900fef534ba" args="(SSL *ssl, struct daemon_remote *rc)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#73e4b4f42219402e60c61900fef534ba">do_stop</a> (SSL *ssl, struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *rc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">do the stop command <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7992d85e39bac673614c15fe20417b42"></a><!-- doxytag: member="remote.c::do_reload" ref="7992d85e39bac673614c15fe20417b42" args="(SSL *ssl, struct daemon_remote *rc)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#7992d85e39bac673614c15fe20417b42">do_reload</a> (SSL *ssl, struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *rc)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">do the reload command <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1d126b2456ca1ff1c98785e96489f063"></a><!-- doxytag: member="remote.c::do_verbosity" ref="1d126b2456ca1ff1c98785e96489f063" args="(SSL *ssl, char *str)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#1d126b2456ca1ff1c98785e96489f063">do_verbosity</a> (SSL *ssl, char *str)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">do the verbosity command <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="774b3990c8f259b84822a5d65c85304b"></a><!-- doxytag: member="remote.c::print_stats" ref="774b3990c8f259b84822a5d65c85304b" args="(SSL *ssl, const char *nm, struct stats_info *s)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#774b3990c8f259b84822a5d65c85304b">print_stats</a> (SSL *ssl, const char *nm, struct <a class="el" href="structstats__info.html">stats_info</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">print stats from statinfo <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="aebce1adfe089ac45f86ce6aaa246b09"></a><!-- doxytag: member="remote.c::print_thread_stats" ref="aebce1adfe089ac45f86ce6aaa246b09" args="(SSL *ssl, int i, struct stats_info *s)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#aebce1adfe089ac45f86ce6aaa246b09">print_thread_stats</a> (SSL *ssl, int i, struct <a class="el" href="structstats__info.html">stats_info</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">print stats for one thread <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9fe0adb8d7d7ee61477958d0ff7d0798"></a><!-- doxytag: member="remote.c::print_longnum" ref="9fe0adb8d7d7ee61477958d0ff7d0798" args="(SSL *ssl, char *desc, size_t x)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#9fe0adb8d7d7ee61477958d0ff7d0798">print_longnum</a> (SSL *ssl, char *desc, size_t x)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">print long number <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7d12a74df3a7587aae946bd831a7bf50"></a><!-- doxytag: member="remote.c::print_mem" ref="7d12a74df3a7587aae946bd831a7bf50" args="(SSL *ssl, struct worker *worker, struct daemon *daemon)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#7d12a74df3a7587aae946bd831a7bf50">print_mem</a> (SSL *ssl, struct <a class="el" href="structworker.html">worker</a> *<a class="el" href="structworker.html">worker</a>, struct <a class="el" href="structdaemon.html">daemon</a> *<a class="el" href="structdaemon.html">daemon</a>)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">print mem stats <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="353f75545dbaec68de57c99937228d95"></a><!-- doxytag: member="remote.c::print_uptime" ref="353f75545dbaec68de57c99937228d95" args="(SSL *ssl, struct worker *worker)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#353f75545dbaec68de57c99937228d95">print_uptime</a> (SSL *ssl, 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">print uptime stats <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5cb63258cab919c4e61ca70f3cb82daf"></a><!-- doxytag: member="remote.c::print_hist" ref="5cb63258cab919c4e61ca70f3cb82daf" args="(SSL *ssl, struct stats_info *s)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#5cb63258cab919c4e61ca70f3cb82daf">print_hist</a> (SSL *ssl, struct <a class="el" href="structstats__info.html">stats_info</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">print extended histogram <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="46d643633254ffdce9f6f20f47f6e7c1"></a><!-- doxytag: member="remote.c::print_ext" ref="46d643633254ffdce9f6f20f47f6e7c1" args="(SSL *ssl, struct stats_info *s)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#46d643633254ffdce9f6f20f47f6e7c1">print_ext</a> (SSL *ssl, struct <a class="el" href="structstats__info.html">stats_info</a> *s)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">print extended stats <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3e007239856a6a330f87cf77e581d132"></a><!-- doxytag: member="remote.c::do_stats" ref="3e007239856a6a330f87cf77e581d132" args="(SSL *ssl, struct daemon_remote *rc, int reset)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#3e007239856a6a330f87cf77e581d132">do_stats</a> (SSL *ssl, struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *rc, int reset)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">do the stats command <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="66da5ba3052962322fd1e72ee22aae42"></a><!-- doxytag: member="remote.c::parse_arg_name" ref="66da5ba3052962322fd1e72ee22aae42" args="(SSL *ssl, char *str, uint8_t **res, size_t *len, int *labs)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#66da5ba3052962322fd1e72ee22aae42">parse_arg_name</a> (SSL *ssl, char *str, uint8_t **res, size_t *len, int *labs)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">parse commandline argument domain name <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b858ede74232cd3dc28a0218761aac23"></a><!-- doxytag: member="remote.c::find_arg2" ref="b858ede74232cd3dc28a0218761aac23" args="(SSL *ssl, char *arg, char **arg2)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#b858ede74232cd3dc28a0218761aac23">find_arg2</a> (SSL *ssl, char *arg, char **arg2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">find second argument, modifies string <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fafecbacf8a5c0a0933de8bc2232a3ba"></a><!-- doxytag: member="remote.c::do_zone_add" ref="fafecbacf8a5c0a0933de8bc2232a3ba" args="(SSL *ssl, struct worker *worker, char *arg)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#fafecbacf8a5c0a0933de8bc2232a3ba">do_zone_add</a> (SSL *ssl, struct <a class="el" href="structworker.html">worker</a> *<a class="el" href="structworker.html">worker</a>, char *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a new zone. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8034a3f8adf947ceb198c948d839487f"></a><!-- doxytag: member="remote.c::do_zone_remove" ref="8034a3f8adf947ceb198c948d839487f" args="(SSL *ssl, struct worker *worker, char *arg)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#8034a3f8adf947ceb198c948d839487f">do_zone_remove</a> (SSL *ssl, struct <a class="el" href="structworker.html">worker</a> *<a class="el" href="structworker.html">worker</a>, char *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove a zone. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cd1542b9be6e89bb9fabb124741e687b"></a><!-- doxytag: member="remote.c::do_data_add" ref="cd1542b9be6e89bb9fabb124741e687b" args="(SSL *ssl, struct worker *worker, char *arg)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#cd1542b9be6e89bb9fabb124741e687b">do_data_add</a> (SSL *ssl, struct <a class="el" href="structworker.html">worker</a> *<a class="el" href="structworker.html">worker</a>, char *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add new RR data. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="34cbe4f76fa3ff747ebf17135039bba5"></a><!-- doxytag: member="remote.c::do_data_remove" ref="34cbe4f76fa3ff747ebf17135039bba5" args="(SSL *ssl, struct worker *worker, char *arg)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#34cbe4f76fa3ff747ebf17135039bba5">do_data_remove</a> (SSL *ssl, struct <a class="el" href="structworker.html">worker</a> *<a class="el" href="structworker.html">worker</a>, char *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Remove RR data. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="831a9ee7b77330380ce3eb7597bfdb77"></a><!-- doxytag: member="remote.c::do_lookup" ref="831a9ee7b77330380ce3eb7597bfdb77" args="(SSL *ssl, struct worker *worker, char *arg)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#831a9ee7b77330380ce3eb7597bfdb77">do_lookup</a> (SSL *ssl, struct <a class="el" href="structworker.html">worker</a> *<a class="el" href="structworker.html">worker</a>, char *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">cache lookup of nameservers <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f0a5b17f4fd6f0f2da7824217e7d804a"></a><!-- doxytag: member="remote.c::do_cache_remove" ref="f0a5b17f4fd6f0f2da7824217e7d804a" args="(struct worker *worker, uint8_t *nm, size_t nmlen, uint16_t t, uint16_t c)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#f0a5b17f4fd6f0f2da7824217e7d804a">do_cache_remove</a> (struct <a class="el" href="structworker.html">worker</a> *<a class="el" href="structworker.html">worker</a>, uint8_t *nm, size_t nmlen, uint16_t t, uint16_t c)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">flush something from rrset and msg caches <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="efedd4390a1cf167d94500d3f5830ace"></a><!-- doxytag: member="remote.c::do_flush_type" ref="efedd4390a1cf167d94500d3f5830ace" args="(SSL *ssl, struct worker *worker, char *arg)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#efedd4390a1cf167d94500d3f5830ace">do_flush_type</a> (SSL *ssl, struct <a class="el" href="structworker.html">worker</a> *<a class="el" href="structworker.html">worker</a>, char *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">flush a type <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="fa27fdfec8f52ff76d410cb5df8a6fca"></a><!-- doxytag: member="remote.c::do_flush_stats" ref="fa27fdfec8f52ff76d410cb5df8a6fca" args="(SSL *ssl, struct worker *worker)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#fa27fdfec8f52ff76d410cb5df8a6fca">do_flush_stats</a> (SSL *ssl, 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">flush statistics <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="74f93471b2a8ba397bda2e148c105add"></a><!-- doxytag: member="remote.c::do_flush_requestlist" ref="74f93471b2a8ba397bda2e148c105add" args="(SSL *ssl, struct worker *worker)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#74f93471b2a8ba397bda2e148c105add">do_flush_requestlist</a> (SSL *ssl, 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">flush requestlist <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1d7b00e6cdf311ba57c1632014e35cb3"></a><!-- doxytag: member="remote.c::zone_del_rrset" ref="1d7b00e6cdf311ba57c1632014e35cb3" args="(struct lruhash_entry *e, void *arg)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#1d7b00e6cdf311ba57c1632014e35cb3">zone_del_rrset</a> (struct <a class="el" href="structlruhash__entry.html">lruhash_entry</a> *e, void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">callback to delete rrsets in a zone <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c2a0642b14b4c2a126ce637f353e25fb"></a><!-- doxytag: member="remote.c::zone_del_msg" ref="c2a0642b14b4c2a126ce637f353e25fb" args="(struct lruhash_entry *e, void *arg)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#c2a0642b14b4c2a126ce637f353e25fb">zone_del_msg</a> (struct <a class="el" href="structlruhash__entry.html">lruhash_entry</a> *e, void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">callback to delete messages in a zone <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0836a62d48bcd22f4fb35a8d9c3cad72"></a><!-- doxytag: member="remote.c::zone_del_kcache" ref="0836a62d48bcd22f4fb35a8d9c3cad72" args="(struct lruhash_entry *e, void *arg)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#0836a62d48bcd22f4fb35a8d9c3cad72">zone_del_kcache</a> (struct <a class="el" href="structlruhash__entry.html">lruhash_entry</a> *e, void *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">callback to delete keys in zone <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="63aa4faa1101bfc98a5d004f75065a6a"></a><!-- doxytag: member="remote.c::do_flush_zone" ref="63aa4faa1101bfc98a5d004f75065a6a" args="(SSL *ssl, struct worker *worker, char *arg)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#63aa4faa1101bfc98a5d004f75065a6a">do_flush_zone</a> (SSL *ssl, struct <a class="el" href="structworker.html">worker</a> *<a class="el" href="structworker.html">worker</a>, char *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">remove all rrsets and keys from zone from cache <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="9d2f417965d9b4ac2c5c79e7383e37a9"></a><!-- doxytag: member="remote.c::do_flush_name" ref="9d2f417965d9b4ac2c5c79e7383e37a9" args="(SSL *ssl, struct worker *w, char *arg)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#9d2f417965d9b4ac2c5c79e7383e37a9">do_flush_name</a> (SSL *ssl, struct <a class="el" href="structworker.html">worker</a> *w, char *arg)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">remove name rrset from cache <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c0f34290ef8a9c4a6498a5d6247708e0"></a><!-- doxytag: member="remote.c::print_root_fwds" ref="c0f34290ef8a9c4a6498a5d6247708e0" args="(SSL *ssl, struct iter_forwards *fwds, uint8_t *root)" -->
static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#c0f34290ef8a9c4a6498a5d6247708e0">print_root_fwds</a> (SSL *ssl, struct <a class="el" href="structiter__forwards.html">iter_forwards</a> *fwds, uint8_t *root)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">print root forwards <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="40a133403090f9c89e37596e8b5ac56a"></a><!-- doxytag: member="remote.c::parse_delegpt" ref="40a133403090f9c89e37596e8b5ac56a" args="(SSL *ssl, struct regional *region, char *args, uint8_t *root)" -->
static struct <a class="el" href="structdelegpt.html">delegpt</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#40a133403090f9c89e37596e8b5ac56a">parse_delegpt</a> (SSL *ssl, struct <a class="el" href="structregional.html">regional</a> *region, char *args, uint8_t *root)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">parse args into <a class="el" href="structdelegpt.html" title="Delegation Point.">delegpt</a> <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e0f0409e5e34bfe9204614667b2bcaa4"></a><!-- doxytag: member="remote.c::do_forward" ref="e0f0409e5e34bfe9204614667b2bcaa4" args="(SSL *ssl, struct worker *worker, char *args)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#e0f0409e5e34bfe9204614667b2bcaa4">do_forward</a> (SSL *ssl, struct <a class="el" href="structworker.html">worker</a> *<a class="el" href="structworker.html">worker</a>, char *args)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">do the status command <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="17c0cc5848d2cb62849d0aee6b655b25"></a><!-- doxytag: member="remote.c::do_status" ref="17c0cc5848d2cb62849d0aee6b655b25" args="(SSL *ssl, struct worker *worker)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#17c0cc5848d2cb62849d0aee6b655b25">do_status</a> (SSL *ssl, 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">do the status command <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="4c457dd000146f065b7f2a23c28465aa"></a><!-- doxytag: member="remote.c::get_mesh_age" ref="4c457dd000146f065b7f2a23c28465aa" args="(struct mesh_state *m, char *buf, size_t len, struct module_env *env)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#4c457dd000146f065b7f2a23c28465aa">get_mesh_age</a> (struct <a class="el" href="structmesh__state.html">mesh_state</a> *m, char *buf, size_t len, struct <a class="el" href="structmodule__env.html">module_env</a> *env)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get age for the mesh state <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dcf78130c393aaa5cc28759104ea4335"></a><!-- doxytag: member="remote.c::get_mesh_status" ref="dcf78130c393aaa5cc28759104ea4335" args="(struct mesh_area *mesh, struct mesh_state *m, char *buf, size_t len)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#dcf78130c393aaa5cc28759104ea4335">get_mesh_status</a> (struct <a class="el" href="structmesh__area.html">mesh_area</a> *mesh, struct <a class="el" href="structmesh__state.html">mesh_state</a> *m, char *buf, size_t len)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get status of a mesh state <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a7b246ca55bd6b169370dcf5e2395fd3"></a><!-- doxytag: member="remote.c::do_dump_requestlist" ref="a7b246ca55bd6b169370dcf5e2395fd3" args="(SSL *ssl, struct worker *worker)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#a7b246ca55bd6b169370dcf5e2395fd3">do_dump_requestlist</a> (SSL *ssl, 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">do the dump_requestlist command <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b22867039fdae7fe9cfdbbb69d299260"></a><!-- doxytag: member="remote.c::distribute_cmd" ref="b22867039fdae7fe9cfdbbb69d299260" args="(struct daemon_remote *rc, SSL *ssl, char *cmd)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#b22867039fdae7fe9cfdbbb69d299260">distribute_cmd</a> (struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *rc, SSL *ssl, char *cmd)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">tell other processes to execute the command <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="6ba9d0f66de61f467fc5f3225b502fad"></a><!-- doxytag: member="remote.c::execute_cmd" ref="6ba9d0f66de61f467fc5f3225b502fad" args="(struct daemon_remote *rc, SSL *ssl, char *cmd, struct worker *worker)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#6ba9d0f66de61f467fc5f3225b502fad">execute_cmd</a> (struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *rc, SSL *ssl, char *cmd, 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">execute a remote control command <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_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 class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8c0c1289a02acbc12d2e7576c4f2dd81"></a><!-- doxytag: member="remote.c::handle_req" ref="8c0c1289a02acbc12d2e7576c4f2dd81" args="(struct daemon_remote *rc, struct rc_state *s, SSL *ssl)" -->
static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#8c0c1289a02acbc12d2e7576c4f2dd81">handle_req</a> (struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *rc, struct <a class="el" href="structrc__state.html">rc_state</a> *s, SSL *ssl)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">handle remote control request <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f4ec5726d3a305be2dc44f8fc745a134"></a><!-- doxytag: member="remote.c::remote_control_callback" ref="f4ec5726d3a305be2dc44f8fc745a134" args="(struct comm_point *c, void *arg, int err, struct comm_reply *rep)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#f4ec5726d3a305be2dc44f8fc745a134">remote_control_callback</a> (struct <a class="el" href="structcomm__point.html">comm_point</a> *c, void *arg, int err, struct <a class="el" href="structcomm__reply.html">comm_reply</a> *rep)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">handle remote control data callbacks <br></td></tr>
<tr><td colspan="2"><br><h2>Variables</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c1df297394280783c5d56d148b202725"></a><!-- doxytag: member="remote.c::inhibit_zero" ref="c1df297394280783c5d56d148b202725" args="" -->
static const int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8c.html#c1df297394280783c5d56d148b202725">inhibit_zero</a> = 1</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">if true, inhibits a lot of =0 lines from the stats output <br></td></tr>
</table>
<hr><h2>Detailed Description</h2>
This file contains the remote control functionality for the <a class="el" href="structdaemon.html" title="Structure holding worker list.">daemon</a>. 
<p>
The remote control can be performed using either the commandline unbound-control tool, or a SSLv3/TLS capable web browser. The channel is secured using SSLv3 or TLSv1, and certificates. Both the server and the client(control tool) have their own keys. <hr><h2>Function Documentation</h2>
<a class="anchor" name="38ce75f597fd29e9c16ca3f6e4995772"></a><!-- doxytag: member="remote.c::daemon_remote_create" ref="38ce75f597fd29e9c16ca3f6e4995772" args="(struct config_file *cfg)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">struct <a class="el" href="structdaemon__remote.html">daemon_remote</a>* daemon_remote_create           </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 new remote control state for the <a class="el" href="structdaemon.html" title="Structure holding worker list.">daemon</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>cfg,:</em>&nbsp;</td><td>config file with key file settings. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>new state, or NULL on failure. </dd></dl>

<p>Referenced by <a class="el" href="unbound_8c_source.html#l00338">perform_setup()</a>, and <a class="el" href="win__svc_8c_source.html#l00243">service_init()</a>.</p>

</div>
</div><p>
<a class="anchor" name="9c33fc4690e14b7e485f9a41f1fb5113"></a><!-- doxytag: member="remote.c::daemon_remote_clear" ref="9c33fc4690e14b7e485f9a41f1fb5113" args="(struct daemon_remote *rc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void daemon_remote_clear           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *&nbsp;</td>
          <td class="paramname"> <em>rc</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
remote control state to clear up. 
<p>
Busy and accept points are closed. Does not delete the rc itself, or the ssl context (with its keys). <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>rc,:</em>&nbsp;</td><td>state to clear. </td></tr>
  </table>
</dl>

<p>Referenced by <a class="el" href="daemon_8c_source.html#l00448">daemon_cleanup()</a>, and <a class="el" href="remote_8c_source.html#l00227">daemon_remote_delete()</a>.</p>

</div>
</div><p>
<a class="anchor" name="54a5bd1d8c909682d94cd5a9d29d5f36"></a><!-- doxytag: member="remote.c::daemon_remote_delete" ref="54a5bd1d8c909682d94cd5a9d29d5f36" args="(struct daemon_remote *rc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void daemon_remote_delete           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *&nbsp;</td>
          <td class="paramname"> <em>rc</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

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

<p>Referenced by <a class="el" href="daemon_8c_source.html#l00475">daemon_delete()</a>, and <a class="el" href="remote_8c_source.html#l00139">daemon_remote_create()</a>.</p>

</div>
</div><p>
<a class="anchor" name="eb8c7138528b27a988cee52eded192c0"></a><!-- doxytag: member="remote.c::add_open" ref="eb8c7138528b27a988cee52eded192c0" args="(const char *ip, int nr, struct listen_port **list, int noproto_is_err)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">static int add_open           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>ip</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>nr</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>list</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>noproto_is_err</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>
Add and open a new control port. 
<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>ip,:</em>&nbsp;</td><td>ip str </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>nr,:</em>&nbsp;</td><td>port nr </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>list,:</em>&nbsp;</td><td>list head </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>noproto_is_err,:</em>&nbsp;</td><td>if lack of protocol support is an error. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false on failure. </dd></dl>

<p>References <a class="el" href="listen__dnsport_8c_source.html#l00229">create_tcp_accept_sock()</a>, <a class="el" href="listen__dnsport_8h_source.html#l00096">listen_port::fd</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, and <a class="el" href="listen__dnsport_8h_source.html#l00094">listen_port::next</a>.</p>

<p>Referenced by <a class="el" href="remote_8c_source.html#l00309">daemon_remote_open_ports()</a>.</p>

</div>
</div><p>
<a class="anchor" name="9c04050d7761d1302de6ed9ce599c9fd"></a><!-- doxytag: member="remote.c::daemon_remote_open_ports" ref="9c04050d7761d1302de6ed9ce599c9fd" 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>* daemon_remote_open_ports           </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>
Open and create listening ports for remote control. 
<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>cfg,:</em>&nbsp;</td><td>config options. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>list of ports or NULL on failure. can be freed with <a class="el" href="listen__dnsport_8c.html#5cce26477bd2f47503c12ea36cb79814" title="Close and delete the (list of) listening ports.">listening_ports_free()</a>. </dd></dl>

<p>Referenced by <a class="el" href="daemon_8c_source.html#l00197">daemon_open_shared_ports()</a>.</p>

</div>
</div><p>
<a class="anchor" name="b01473810775dd2d8713c4f1bee63b95"></a><!-- doxytag: member="remote.c::daemon_remote_open_accept" ref="b01473810775dd2d8713c4f1bee63b95" args="(struct daemon_remote *rc, struct listen_port *ports, struct worker *worker)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int daemon_remote_open_accept           </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structdaemon__remote.html">daemon_remote</a> *&nbsp;</td>
          <td class="paramname"> <em>rc</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">struct <a class="el" href="structworker.html">worker</a> *&nbsp;</td>
          <td class="paramname"> <em>worker</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Setup comm points for accepting remote control connections. 
<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>rc,:</em>&nbsp;</td><td>state </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>ports,:</em>&nbsp;</td><td>already opened ports. </td></tr>
    <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><a class="el" href="structworker.html" title="Structure holding working information for unbound.">worker</a> with communication base. and links to command channels. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>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="a4d0a30a3f43d446192e0eff9dd289b7"></a><!-- doxytag: member="remote.c::ssl_print_text" ref="a4d0a30a3f43d446192e0eff9dd289b7" args="(SSL *ssl, const char *text)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssl_print_text           </td>
          <td>(</td>
          <td class="paramtype">SSL *&nbsp;</td>
          <td class="paramname"> <em>ssl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>text</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Print fixed line of text over ssl connection in blocking mode. 
<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>ssl,:</em>&nbsp;</td><td>print to </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>text,:</em>&nbsp;</td><td>the text. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false on connection failure. </dd></dl>

<p>References <a class="el" href="remote_8c_source.html#l00090">log_crypto_err()</a>, <a class="el" href="log_8h_source.html#l00056">VERB_QUERY</a>, and <a class="el" href="ldns-testpkts_8c.html#a557e5b23b2833d7c1ec0415a1bdd2b1">verbose()</a>.</p>

<p>Referenced by <a class="el" href="remote_8c_source.html#l00496">ssl_print_vmsg()</a>.</p>

</div>
</div><p>
<a class="anchor" name="0d8fa57b778e2235d604e4928ac9eaea"></a><!-- doxytag: member="remote.c::ssl_read_line" ref="0d8fa57b778e2235d604e4928ac9eaea" args="(SSL *ssl, char *buf, size_t max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssl_read_line           </td>
          <td>(</td>
          <td class="paramtype">SSL *&nbsp;</td>
          <td class="paramname"> <em>ssl</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&nbsp;</td>
          <td class="paramname"> <em>buf</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>max</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read until <br>
 is encountered If SSL signals EOF, the string up to then is returned (without <br>
). 
<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>ssl,:</em>&nbsp;</td><td>the SSL connection to read from. blocking. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>buf,:</em>&nbsp;</td><td>buffer to read to. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>max,:</em>&nbsp;</td><td>size of buffer. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false on connection failure. </dd></dl>

<p>References <a class="el" href="remote_8c_source.html#l00090">log_crypto_err()</a>, and <a class="el" href="log_8c_source.html#l00241">log_err()</a>.</p>

<p>Referenced by <a class="el" href="remote_8c_source.html#l01577">handle_req()</a>, and <a class="el" href="cachedump_8c_source.html#l00367">ssl_read_buf()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d37fb55b6fb822953081d15f836382e5"></a><!-- doxytag: member="remote.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>Referenced by <a class="el" href="worker_8c_source.html#l00326">worker_handle_control_cmd()</a>.</p>

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