<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.3.1"/> <title>libssh: The libssh server API</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">libssh  <span id="projectnumber">0.5.5</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.3.1 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#nested-classes">Data Structures</a> | <a href="#typedef-members">Typedefs</a> | <a href="#func-members">Functions</a> </div> <div class="headertitle"> <div class="title">The libssh server API</div> </div> </div><!--header--> <div class="contents"> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> Data Structures</h2></td></tr> <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="structssh__bind__callbacks__struct.html">ssh_bind_callbacks</a></td></tr> <tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">These are the callbacks exported by the ssh_bind structure. <a href="structssh__bind__callbacks__struct.html#details">More...</a><br/></td></tr> <tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> Typedefs</h2></td></tr> <tr class="memitem:ga90527ccc50e1ad6be167b89cd054d01a"><td class="memItemLeft" align="right" valign="top">typedef void(* </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#ga90527ccc50e1ad6be167b89cd054d01a">ssh_bind_incoming_connection_callback</a> )(ssh_bind sshbind, void *userdata)</td></tr> <tr class="memdesc:ga90527ccc50e1ad6be167b89cd054d01a"><td class="mdescLeft"> </td><td class="mdescRight">Incoming connection callback. <a href="#ga90527ccc50e1ad6be167b89cd054d01a">More...</a><br/></td></tr> <tr class="separator:ga90527ccc50e1ad6be167b89cd054d01a"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> Functions</h2></td></tr> <tr class="memitem:ga6609243446f1650243101e0a779dc822"><td class="memItemLeft" align="right" valign="top">LIBSSH_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#ga6609243446f1650243101e0a779dc822">ssh_bind_accept</a> (ssh_bind ssh_bind_o, ssh_session session)</td></tr> <tr class="memdesc:ga6609243446f1650243101e0a779dc822"><td class="mdescLeft"> </td><td class="mdescRight">Accept an incoming ssh connection and initialize the session. <a href="#ga6609243446f1650243101e0a779dc822">More...</a><br/></td></tr> <tr class="separator:ga6609243446f1650243101e0a779dc822"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gab69593f009137ccabafc18a98bd55546"><td class="memItemLeft" align="right" valign="top">LIBSSH_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#gab69593f009137ccabafc18a98bd55546">ssh_bind_fd_toaccept</a> (ssh_bind ssh_bind_o)</td></tr> <tr class="memdesc:gab69593f009137ccabafc18a98bd55546"><td class="mdescLeft"> </td><td class="mdescRight">Allow the file descriptor to accept new sessions. <a href="#gab69593f009137ccabafc18a98bd55546">More...</a><br/></td></tr> <tr class="separator:gab69593f009137ccabafc18a98bd55546"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaa7650d22d982a82bf328345c04948cdf"><td class="memItemLeft" align="right" valign="top">LIBSSH_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#gaa7650d22d982a82bf328345c04948cdf">ssh_bind_free</a> (ssh_bind ssh_bind_o)</td></tr> <tr class="memdesc:gaa7650d22d982a82bf328345c04948cdf"><td class="mdescLeft"> </td><td class="mdescRight">Free a ssh servers bind. <a href="#gaa7650d22d982a82bf328345c04948cdf">More...</a><br/></td></tr> <tr class="separator:gaa7650d22d982a82bf328345c04948cdf"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga2b0d1842bf3892ce8b5ebd6c0c7db735"><td class="memItemLeft" align="right" valign="top">LIBSSH_API socket_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#ga2b0d1842bf3892ce8b5ebd6c0c7db735">ssh_bind_get_fd</a> (ssh_bind ssh_bind_o)</td></tr> <tr class="memdesc:ga2b0d1842bf3892ce8b5ebd6c0c7db735"><td class="mdescLeft"> </td><td class="mdescRight">Recover the file descriptor from the session. <a href="#ga2b0d1842bf3892ce8b5ebd6c0c7db735">More...</a><br/></td></tr> <tr class="separator:ga2b0d1842bf3892ce8b5ebd6c0c7db735"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaee5406f486d73aad765cab4c445f2f63"><td class="memItemLeft" align="right" valign="top">LIBSSH_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#gaee5406f486d73aad765cab4c445f2f63">ssh_bind_listen</a> (ssh_bind ssh_bind_o)</td></tr> <tr class="memdesc:gaee5406f486d73aad765cab4c445f2f63"><td class="mdescLeft"> </td><td class="mdescRight">Start listening to the socket. <a href="#gaee5406f486d73aad765cab4c445f2f63">More...</a><br/></td></tr> <tr class="separator:gaee5406f486d73aad765cab4c445f2f63"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga4e4edf0cfd185a335d08e6e610aed77e"><td class="memItemLeft" align="right" valign="top">LIBSSH_API ssh_bind </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#ga4e4edf0cfd185a335d08e6e610aed77e">ssh_bind_new</a> (void)</td></tr> <tr class="memdesc:ga4e4edf0cfd185a335d08e6e610aed77e"><td class="mdescLeft"> </td><td class="mdescRight">Creates a new SSH server bind. <a href="#ga4e4edf0cfd185a335d08e6e610aed77e">More...</a><br/></td></tr> <tr class="separator:ga4e4edf0cfd185a335d08e6e610aed77e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ga44466ff79106eb04e66d60d64b76d7e2"><td class="memItemLeft" align="right" valign="top">LIBSSH_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#ga44466ff79106eb04e66d60d64b76d7e2">ssh_bind_options_set</a> (ssh_bind sshbind, enum ssh_bind_options_e type, const void *value)</td></tr> <tr class="memdesc:ga44466ff79106eb04e66d60d64b76d7e2"><td class="mdescLeft"> </td><td class="mdescRight">Set the options for the current SSH server bind. <a href="#ga44466ff79106eb04e66d60d64b76d7e2">More...</a><br/></td></tr> <tr class="separator:ga44466ff79106eb04e66d60d64b76d7e2"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaf7e6f23c6934892d6a96011456b6c280"><td class="memItemLeft" align="right" valign="top">LIBSSH_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#gaf7e6f23c6934892d6a96011456b6c280">ssh_bind_set_blocking</a> (ssh_bind ssh_bind_o, int blocking)</td></tr> <tr class="memdesc:gaf7e6f23c6934892d6a96011456b6c280"><td class="mdescLeft"> </td><td class="mdescRight">Set the session to blocking/nonblocking mode. <a href="#gaf7e6f23c6934892d6a96011456b6c280">More...</a><br/></td></tr> <tr class="separator:gaf7e6f23c6934892d6a96011456b6c280"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaaa9bf406809735d4afc75ecd482ba89d"><td class="memItemLeft" align="right" valign="top">LIBSSH_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#gaaa9bf406809735d4afc75ecd482ba89d">ssh_bind_set_callbacks</a> (ssh_bind sshbind, ssh_bind_callbacks callbacks, void *userdata)</td></tr> <tr class="memdesc:gaaa9bf406809735d4afc75ecd482ba89d"><td class="mdescLeft"> </td><td class="mdescRight">Set the callback for this bind. <a href="#gaaa9bf406809735d4afc75ecd482ba89d">More...</a><br/></td></tr> <tr class="separator:gaaa9bf406809735d4afc75ecd482ba89d"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gacbba3e298a4493c7b9bfbee514df199c"><td class="memItemLeft" align="right" valign="top">LIBSSH_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#gacbba3e298a4493c7b9bfbee514df199c">ssh_bind_set_fd</a> (ssh_bind ssh_bind_o, socket_t fd)</td></tr> <tr class="memdesc:gacbba3e298a4493c7b9bfbee514df199c"><td class="mdescLeft"> </td><td class="mdescRight">Set the file descriptor for a session. <a href="#gacbba3e298a4493c7b9bfbee514df199c">More...</a><br/></td></tr> <tr class="separator:gacbba3e298a4493c7b9bfbee514df199c"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gab60c37350653eb3b65a99ac089c55830"><td class="memItemLeft" align="right" valign="top">LIBSSH_API int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#gab60c37350653eb3b65a99ac089c55830">ssh_handle_key_exchange</a> (ssh_session session)</td></tr> <tr class="memdesc:gab60c37350653eb3b65a99ac089c55830"><td class="mdescLeft"> </td><td class="mdescRight">Handles the key exchange and set up encryption. <a href="#gab60c37350653eb3b65a99ac089c55830">More...</a><br/></td></tr> <tr class="separator:gab60c37350653eb3b65a99ac089c55830"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:gaccad877b20fca2d4a7eda5bebc1f5af1"><td class="memItemLeft" align="right" valign="top">LIBSSH_API void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__server.html#gaccad877b20fca2d4a7eda5bebc1f5af1">ssh_set_message_callback</a> (ssh_session session, int(*ssh_bind_message_callback)(ssh_session session, ssh_message msg, void *data), void *data)</td></tr> <tr class="memdesc:gaccad877b20fca2d4a7eda5bebc1f5af1"><td class="mdescLeft"> </td><td class="mdescRight">defines the ssh_message callback <a href="#gaccad877b20fca2d4a7eda5bebc1f5af1">More...</a><br/></td></tr> <tr class="separator:gaccad877b20fca2d4a7eda5bebc1f5af1"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <h2 class="groupheader">Typedef Documentation</h2> <a class="anchor" id="ga90527ccc50e1ad6be167b89cd054d01a"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef void(* ssh_bind_incoming_connection_callback)(ssh_bind sshbind, void *userdata)</td> </tr> </table> </div><div class="memdoc"> <p>Incoming connection callback. </p> <p>This callback is called when a ssh_bind has a new incoming connection. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">sshbind</td><td>Current sshbind session handler </td></tr> <tr><td class="paramname">message</td><td>the actual message </td></tr> <tr><td class="paramname">userdata</td><td>Userdata to be passed to the callback function. </td></tr> </table> </dd> </dl> </div> </div> <h2 class="groupheader">Function Documentation</h2> <a class="anchor" id="ga6609243446f1650243101e0a779dc822"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ssh_bind_accept </td> <td>(</td> <td class="paramtype">ssh_bind </td> <td class="paramname"><em>ssh_bind_o</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">ssh_session </td> <td class="paramname"><em>session</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Accept an incoming ssh connection and initialize the session. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ssh_bind_o</td><td>The ssh server bind to accept a connection. </td></tr> <tr><td class="paramname">session</td><td>A preallocated ssh session </td></tr> </table> </dd> </dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__libssh__session.html#gaadadc0f9601547c30db7c4d62017d32c" title="Create a new ssh session.">ssh_new</a> </dd></dl> <dl class="section return"><dt>Returns</dt><dd>SSH_OK when a connection is established </dd></dl> <p>References <a class="el" href="group__libssh__auth.html#ga083af6f8d42a71fab6185137bf155de2">privatekey_free()</a>.</p> </div> </div> <a class="anchor" id="gab69593f009137ccabafc18a98bd55546"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ssh_bind_fd_toaccept </td> <td>(</td> <td class="paramtype">ssh_bind </td> <td class="paramname"><em>ssh_bind_o</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Allow the file descriptor to accept new sessions. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ssh_bind_o</td><td>The ssh server bind to use. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="gaa7650d22d982a82bf328345c04948cdf"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ssh_bind_free </td> <td>(</td> <td class="paramtype">ssh_bind </td> <td class="paramname"><em>ssh_bind_o</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Free a ssh servers bind. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ssh_bind_o</td><td>The ssh server bind to free. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ga2b0d1842bf3892ce8b5ebd6c0c7db735"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">socket_t ssh_bind_get_fd </td> <td>(</td> <td class="paramtype">ssh_bind </td> <td class="paramname"><em>ssh_bind_o</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Recover the file descriptor from the session. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ssh_bind_o</td><td>The ssh server bind to get the fd from.</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>The file descriptor. </dd></dl> </div> </div> <a class="anchor" id="gaee5406f486d73aad765cab4c445f2f63"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ssh_bind_listen </td> <td>(</td> <td class="paramtype">ssh_bind </td> <td class="paramname"><em>ssh_bind_o</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Start listening to the socket. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ssh_bind_o</td><td>The ssh server bind to use.</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>0 on success, < 0 on error. </dd></dl> <p>References <a class="el" href="group__libssh.html#ga3ebf8d6920e563f3b032e3cd5277598e">ssh_init()</a>.</p> </div> </div> <a class="anchor" id="ga4e4edf0cfd185a335d08e6e610aed77e"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ssh_bind ssh_bind_new </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Creates a new SSH server bind. </p> <dl class="section return"><dt>Returns</dt><dd>A newly allocated ssh_bind session pointer. </dd></dl> </div> </div> <a class="anchor" id="ga44466ff79106eb04e66d60d64b76d7e2"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">LIBSSH_API int ssh_bind_options_set </td> <td>(</td> <td class="paramtype">ssh_bind </td> <td class="paramname"><em>sshbind</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">enum ssh_bind_options_e </td> <td class="paramname"><em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"><em>value</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Set the options for the current SSH server bind. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">sshbind</td><td>The ssh server bind to configure.</td></tr> <tr><td class="paramname">type</td><td>The option type to set. This could be one of the following:</td></tr> </table> </dd> </dl> <ul> <li>SSH_BIND_OPTIONS_BINDADDR The ip address to bind (const char *).</li> </ul> <ul> <li>SSH_BIND_OPTIONS_BINDPORT The port to bind (unsigned int).</li> </ul> <ul> <li>SSH_BIND_OPTIONS_BINDPORT_STR The port to bind (const char *).</li> </ul> <ul> <li>SSH_BIND_OPTIONS_HOSTKEY This specifies the file containing the private host key used by SSHv1. (const char *).</li> </ul> <ul> <li>SSH_BIND_OPTIONS_DSAKEY This specifies the file containing the private host dsa key used by SSHv2. (const char *).</li> </ul> <ul> <li>SSH_BIND_OPTIONS_RSAKEY This specifies the file containing the private host dsa key used by SSHv2. (const char *).</li> </ul> <ul> <li>SSH_BIND_OPTIONS_BANNER That the server banner (version string) for SSH. (const char *).</li> </ul> <ul> <li>SSH_BIND_OPTIONS_LOG_VERBOSITY Set the session logging verbosity (int).<br/> <br/> The verbosity of the messages. Every log smaller or equal to verbosity will be shown.<ul> <li>SSH_LOG_NOLOG: No logging</li> <li>SSH_LOG_RARE: Rare conditions or warnings</li> <li>SSH_LOG_ENTRY: API-accessible entrypoints</li> <li>SSH_LOG_PACKET: Packet id and size</li> <li>SSH_LOG_FUNCTIONS: Function entering and leaving</li> </ul> </li> </ul> <ul> <li>SSH_BIND_OPTIONS_LOG_VERBOSITY_STR Set the session logging verbosity (const char *).<br/> <br/> The verbosity of the messages. Every log smaller or equal to verbosity will be shown.<ul> <li>SSH_LOG_NOLOG: No logging</li> <li>SSH_LOG_RARE: Rare conditions or warnings</li> <li>SSH_LOG_ENTRY: API-accessible entrypoints</li> <li>SSH_LOG_PACKET: Packet id and size</li> <li>SSH_LOG_FUNCTIONS: Function entering and leaving <br/> See the corresponding numbers in <a class="el" href="libssh_8h_source.html">libssh.h</a>.</li> </ul> </li> </ul> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">value</td><td>The value to set. This is a generic pointer and the datatype which is used should be set according to the type set.</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>SSH_OK on success, SSH_ERROR on invalid option or parameter. </dd></dl> </div> </div> <a class="anchor" id="gaf7e6f23c6934892d6a96011456b6c280"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ssh_bind_set_blocking </td> <td>(</td> <td class="paramtype">ssh_bind </td> <td class="paramname"><em>ssh_bind_o</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"><em>blocking</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Set the session to blocking/nonblocking mode. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ssh_bind_o</td><td>The ssh server bind to use.</td></tr> <tr><td class="paramname">blocking</td><td>Zero for nonblocking mode. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="gaaa9bf406809735d4afc75ecd482ba89d"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ssh_bind_set_callbacks </td> <td>(</td> <td class="paramtype">ssh_bind </td> <td class="paramname"><em>sshbind</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">ssh_bind_callbacks </td> <td class="paramname"><em>callbacks</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>userdata</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Set the callback for this bind. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir">[in]</td><td class="paramname">sshbind</td><td>The bind to set the callback on.</td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">callbacks</td><td>An already set up ssh_bind_callbacks instance.</td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">userdata</td><td>A pointer to private data to pass to the callbacks.</td></tr> </table> </dd> </dl> <dl class="section return"><dt>Returns</dt><dd>SSH_OK on success, SSH_ERROR if an error occured.</dd></dl> <div class="fragment"><div class="line"><span class="keyword">struct </span><a class="code" href="structssh__callbacks__struct.html" title="The structure to replace libssh functions with appropriate callbacks.">ssh_callbacks_struct</a> cb = {</div> <div class="line"> .<a class="code" href="structssh__callbacks__struct.html#a319d5838c0e75ed3917ea5021a3f8448" title="User-provided data.">userdata</a> = data,</div> <div class="line"> .auth_function = my_auth_function</div> <div class="line">};</div> <div class="line"><a class="code" href="group__libssh__callbacks.html#gafe09b81e5346f0babe288dc38113d289" title="Initializes an ssh_callbacks_struct A call to this macro is mandatory when you have set a new ssh_cal...">ssh_callbacks_init</a>(&cb);</div> <div class="line"><a class="code" href="group__libssh__server.html#gaaa9bf406809735d4afc75ecd482ba89d" title="Set the callback for this bind.">ssh_bind_set_callbacks</a>(session, &cb);</div> </div><!-- fragment --> </div> </div> <a class="anchor" id="gacbba3e298a4493c7b9bfbee514df199c"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ssh_bind_set_fd </td> <td>(</td> <td class="paramtype">ssh_bind </td> <td class="paramname"><em>ssh_bind_o</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">socket_t </td> <td class="paramname"><em>fd</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>Set the file descriptor for a session. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">ssh_bind_o</td><td>The ssh server bind to set the fd.</td></tr> <tr><td class="paramname">fd</td><td>The file descriptssh_bind B </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="gab60c37350653eb3b65a99ac089c55830"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int ssh_handle_key_exchange </td> <td>(</td> <td class="paramtype">ssh_session </td> <td class="paramname"><em>session</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Handles the key exchange and set up encryption. </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramname">session</td><td>A connected ssh session </td></tr> </table> </dd> </dl> <dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__libssh__server.html#ga6609243446f1650243101e0a779dc822" title="Accept an incoming ssh connection and initialize the session.">ssh_bind_accept</a> </dd></dl> <dl class="section return"><dt>Returns</dt><dd>SSH_OK if the key exchange was successful </dd></dl> <p>References <a class="el" href="group__libssh__log.html#ga0bb252b81e0c497fc559c9e4007cf6c5">ssh_log()</a>, and <a class="el" href="group__libssh__log.html#gga06fc87d81c62e9abb8790b6e5713c55ba6445dfe21592d69d9741d319538b6673">SSH_LOG_PACKET</a>.</p> </div> </div> <a class="anchor" id="gaccad877b20fca2d4a7eda5bebc1f5af1"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ssh_set_message_callback </td> <td>(</td> <td class="paramtype">ssh_session </td> <td class="paramname"><em>session</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int(*)(ssh_session session, ssh_message msg, void *data) </td> <td class="paramname"><em>ssh_bind_message_callback</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"><em>data</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div><div class="memdoc"> <p>defines the ssh_message callback </p> <dl class="params"><dt>Parameters</dt><dd> <table class="params"> <tr><td class="paramdir"></td><td class="paramname">session</td><td>the current ssh session </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">ssh_bind_message_callback</td><td>a function pointer to a callback taking the current ssh session and received message as parameters. the function returns 0 if the message has been parsed and treated successfully, 1 otherwise (libssh must take care of the response). </td></tr> <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>void pointer to be passed to callback functions </td></tr> </table> </dd> </dl> </div> </div> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.3.1 </small></address> </body> </html>