Sophie

Sophie

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

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.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_25e37f0a75013b615a5ba63405adf018.html">daemon</a>
  </div>
</div>
<div class="contents">
<h1>remote.h 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>
<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="structrc__state.html">rc_state</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">a busy control command connection, SSL state  <a href="structrc__state.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="structdaemon__remote.html">daemon_remote</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The remote control tool state.  <a href="structdaemon__remote.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="553f6aa10f4d788a367cbb4aa2cd6b54"></a><!-- doxytag: member="remote.h::REMOTE_CONTROL_TCP_TIMEOUT" ref="553f6aa10f4d788a367cbb4aa2cd6b54" args="" -->
#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8h.html#553f6aa10f4d788a367cbb4aa2cd6b54">REMOTE_CONTROL_TCP_TIMEOUT</a>&nbsp;&nbsp;&nbsp;120</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">number of seconds timeout on incoming remote control handshake <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="structdaemon__remote.html">daemon_remote</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8h.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_8h.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">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8h.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">struct <a class="el" href="structlisten__port.html">listen_port</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8h.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">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8h.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">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8h.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="bc79c8bf5a2adfaab076ae9d441740e5"></a><!-- doxytag: member="remote.h::remote_accept_callback" ref="bc79c8bf5a2adfaab076ae9d441740e5" args="(struct comm_point *, void *, int, struct comm_reply *)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8h.html#bc79c8bf5a2adfaab076ae9d441740e5">remote_accept_callback</a> (struct <a class="el" href="structcomm__point.html">comm_point</a> *, void *, int, struct <a class="el" href="structcomm__reply.html">comm_reply</a> *)</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="fbc0de7bad76dcdc1499ed245319da23"></a><!-- doxytag: member="remote.h::remote_control_callback" ref="fbc0de7bad76dcdc1499ed245319da23" args="(struct comm_point *, void *, int, struct comm_reply *)" -->
int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8h.html#fbc0de7bad76dcdc1499ed245319da23">remote_control_callback</a> (struct <a class="el" href="structcomm__point.html">comm_point</a> *, void *, int, struct <a class="el" href="structcomm__reply.html">comm_reply</a> *)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">handle remote control data callbacks <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_8h.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">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8h.html#47fd8f9f1e5ed8f9c99ac46b60d41767">ssl_printf</a> (SSL *ssl, const char *format,...) ATTR_FORMAT(printf</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">printf style printing to the ssl connection  <a href="#47fd8f9f1e5ed8f9c99ac46b60d41767"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">int int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="remote_8h.html#cd5e3a9ad4ff22fcd6945468c7c4fbb8">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="#cd5e3a9ad4ff22fcd6945468c7c4fbb8"></a><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.h::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>References <a class="el" href="remote_8h_source.html#l00094">daemon_remote::ctx</a>, <a class="el" href="remote_8c_source.html#l00227">daemon_remote_delete()</a>, <a class="el" href="config__file_8c_source.html#l00881">fname_after_chroot()</a>, <a class="el" href="remote_8c_source.html#l00090">log_crypto_err()</a>, <a class="el" href="log_8c_source.html#l00241">log_err()</a>, <a class="el" href="remote_8h_source.html#l00090">daemon_remote::max_active</a>, <a class="el" href="config__file_8h_source.html#l00238">config_file::remote_control_enable</a>, <a class="el" href="config__file_8h_source.html#l00246">config_file::server_cert_file</a>, <a class="el" href="config__file_8h_source.html#l00244">config_file::server_key_file</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="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="54a5bd1d8c909682d94cd5a9d29d5f36"></a><!-- doxytag: member="remote.h::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>References <a class="el" href="remote_8h_source.html#l00094">daemon_remote::ctx</a>, and <a class="el" href="remote_8c_source.html#l00205">daemon_remote_clear()</a>.</p>

<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="9c33fc4690e14b7e485f9a41f1fb5113"></a><!-- doxytag: member="remote.h::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>References <a class="el" href="remote_8h_source.html#l00086">daemon_remote::accept_list</a>, <a class="el" href="remote_8h_source.html#l00088">daemon_remote::active</a>, <a class="el" href="remote_8h_source.html#l00092">daemon_remote::busy_list</a>, <a class="el" href="remote_8h_source.html#l00066">rc_state::c</a>, <a class="el" href="fake__event_8c_source.html#l01013">comm_point_delete()</a>, <a class="el" href="listen__dnsport_8c_source.html#l00585">listen_list_delete()</a>, <a class="el" href="remote_8h_source.html#l00064">rc_state::next</a>, <a class="el" href="remote_8h_source.html#l00070">rc_state::ssl</a>, and <a class="el" href="remote_8h_source.html#l00084">daemon_remote::worker</a>.</p>

<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="9c04050d7761d1302de6ed9ce599c9fd"></a><!-- doxytag: member="remote.h::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>References <a class="el" href="remote_8c_source.html#l00246">add_open()</a>, <a class="el" href="config__file_8h_source.html#l00240">config_file::control_ifs</a>, <a class="el" href="config__file_8h_source.html#l00242">config_file::control_port</a>, <a class="el" href="config__file_8h_source.html#l00069">config_file::do_ip4</a>, <a class="el" href="config__file_8h_source.html#l00071">config_file::do_ip6</a>, <a class="el" href="listen__dnsport_8c_source.html#l00709">listening_ports_free()</a>, <a class="el" href="log_8h_source.html#l00185">log_assert</a>, <a class="el" href="config__file_8h_source.html#l00280">config_strlist::next</a>, <a class="el" href="config__file_8h_source.html#l00238">config_file::remote_control_enable</a>, and <a class="el" href="config__file_8h_source.html#l00282">config_strlist::str</a>.</p>

<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.h::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>References <a class="el" href="remote_8c_source.html#l00339">accept_open()</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>, <a class="el" href="listen__dnsport_8h_source.html#l00094">listen_port::next</a>, and <a class="el" href="remote_8h_source.html#l00084">daemon_remote::worker</a>.</p>

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

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

<p>
Handle nonthreaded remote cmd execution. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em><a class="el" href="structworker.html" title="Structure holding working information for unbound.">worker</a>,:</em>&nbsp;</td><td>this <a class="el" href="structworker.html" title="Structure holding working information for unbound.">worker</a> (the remote <a class="el" href="structworker.html" title="Structure holding working information for unbound.">worker</a>). </td></tr>
  </table>
</dl>

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

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

</div>
</div><p>
<a class="anchor" name="a4d0a30a3f43d446192e0eff9dd289b7"></a><!-- doxytag: member="remote.h::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="47fd8f9f1e5ed8f9c99ac46b60d41767"></a><!-- doxytag: member="remote.h::ssl_printf" ref="47fd8f9f1e5ed8f9c99ac46b60d41767" args="(SSL *ssl, const char *format,...) ATTR_FORMAT(printf" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssl_printf           </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>format</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
printf style printing to the ssl connection 
<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 print to. Blocking. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>format,:</em>&nbsp;</td><td>printf style format string. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>success or false on a network failure. </dd></dl>

</div>
</div><p>
<a class="anchor" name="cd5e3a9ad4ff22fcd6945468c7c4fbb8"></a><!-- doxytag: member="remote.h::ssl_read_line" ref="cd5e3a9ad4ff22fcd6945468c7c4fbb8" args="(SSL *ssl, char *buf, size_t max)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int 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>
</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>