Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > ee8fafc31a7ba3ce3ae4499cedf4e1bc > files > 65

libssh-devel-0.5.5-1.fc18.i686.rpm

<!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 SSH channel functions</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
   &#160;<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&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;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="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">The SSH channel functions<div class="ingroups"><a class="el" href="group__libssh.html">The libssh API</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>Functions that manage a SSH channel.  
<a href="#details">More...</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gab391f5c978cb1bc8df3ebd061f38e8c5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gab391f5c978cb1bc8df3ebd061f38e8c5">channel_read_buffer</a> (ssh_channel channel, ssh_buffer buffer, uint32_t count, int is_stderr)</td></tr>
<tr class="memdesc:gab391f5c978cb1bc8df3ebd061f38e8c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Read data from a channel into a buffer.  <a href="#gab391f5c978cb1bc8df3ebd061f38e8c5">More...</a><br/></td></tr>
<tr class="separator:gab391f5c978cb1bc8df3ebd061f38e8c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga548bd0f77a50b7c8180942544b375866"><td class="memItemLeft" align="right" valign="top">ssh_channel&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga548bd0f77a50b7c8180942544b375866">ssh_channel_accept_x11</a> (ssh_channel channel, int timeout_ms)</td></tr>
<tr class="memdesc:ga548bd0f77a50b7c8180942544b375866"><td class="mdescLeft">&#160;</td><td class="mdescRight">Accept an X11 forwarding channel.  <a href="#ga548bd0f77a50b7c8180942544b375866">More...</a><br/></td></tr>
<tr class="separator:ga548bd0f77a50b7c8180942544b375866"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf5d55c90f3d98c583df23d21905c1127"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaf5d55c90f3d98c583df23d21905c1127">ssh_channel_change_pty_size</a> (ssh_channel channel, int cols, int rows)</td></tr>
<tr class="memdesc:gaf5d55c90f3d98c583df23d21905c1127"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change the size of the terminal associated to a channel.  <a href="#gaf5d55c90f3d98c583df23d21905c1127">More...</a><br/></td></tr>
<tr class="separator:gaf5d55c90f3d98c583df23d21905c1127"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga238f07e0455456a5bfd8a49ead917732"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga238f07e0455456a5bfd8a49ead917732">ssh_channel_close</a> (ssh_channel channel)</td></tr>
<tr class="memdesc:ga238f07e0455456a5bfd8a49ead917732"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close a channel.  <a href="#ga238f07e0455456a5bfd8a49ead917732">More...</a><br/></td></tr>
<tr class="separator:ga238f07e0455456a5bfd8a49ead917732"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gad1417f9eae8928fed20faafe2d9dbfff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gad1417f9eae8928fed20faafe2d9dbfff">ssh_channel_free</a> (ssh_channel channel)</td></tr>
<tr class="memdesc:gad1417f9eae8928fed20faafe2d9dbfff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Close and free a channel.  <a href="#gad1417f9eae8928fed20faafe2d9dbfff">More...</a><br/></td></tr>
<tr class="separator:gad1417f9eae8928fed20faafe2d9dbfff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga9eea019dd0bbaa8a817fff2c762d1a2d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga9eea019dd0bbaa8a817fff2c762d1a2d">ssh_channel_get_exit_status</a> (ssh_channel channel)</td></tr>
<tr class="memdesc:ga9eea019dd0bbaa8a817fff2c762d1a2d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the exit status of the channel (error code from the executed instruction).  <a href="#ga9eea019dd0bbaa8a817fff2c762d1a2d">More...</a><br/></td></tr>
<tr class="separator:ga9eea019dd0bbaa8a817fff2c762d1a2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga747aa5315575aa7ac9d8367c7372d8dd"><td class="memItemLeft" align="right" valign="top">ssh_session&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga747aa5315575aa7ac9d8367c7372d8dd">ssh_channel_get_session</a> (ssh_channel channel)</td></tr>
<tr class="memdesc:ga747aa5315575aa7ac9d8367c7372d8dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Recover the session in which belongs a channel.  <a href="#ga747aa5315575aa7ac9d8367c7372d8dd">More...</a><br/></td></tr>
<tr class="separator:ga747aa5315575aa7ac9d8367c7372d8dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab2720b44cb7f1dfe2b38ffe07c2f45c7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gab2720b44cb7f1dfe2b38ffe07c2f45c7">ssh_channel_is_closed</a> (ssh_channel channel)</td></tr>
<tr class="memdesc:gab2720b44cb7f1dfe2b38ffe07c2f45c7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the channel is closed or not.  <a href="#gab2720b44cb7f1dfe2b38ffe07c2f45c7">More...</a><br/></td></tr>
<tr class="separator:gab2720b44cb7f1dfe2b38ffe07c2f45c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gab535264029443d77214c0615a0788b0a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gab535264029443d77214c0615a0788b0a">ssh_channel_is_eof</a> (ssh_channel channel)</td></tr>
<tr class="memdesc:gab535264029443d77214c0615a0788b0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if remote has sent an EOF.  <a href="#gab535264029443d77214c0615a0788b0a">More...</a><br/></td></tr>
<tr class="separator:gab535264029443d77214c0615a0788b0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaafcda943c96ddb91e5c28c0bdee7045"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaaafcda943c96ddb91e5c28c0bdee7045">ssh_channel_is_open</a> (ssh_channel channel)</td></tr>
<tr class="memdesc:gaaafcda943c96ddb91e5c28c0bdee7045"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check if the channel is open or not.  <a href="#gaaafcda943c96ddb91e5c28c0bdee7045">More...</a><br/></td></tr>
<tr class="separator:gaaafcda943c96ddb91e5c28c0bdee7045"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gada8ccda7bf65165fe145d3096a252dcc"><td class="memItemLeft" align="right" valign="top">ssh_channel&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gada8ccda7bf65165fe145d3096a252dcc">ssh_channel_new</a> (ssh_session session)</td></tr>
<tr class="memdesc:gada8ccda7bf65165fe145d3096a252dcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allocate a new channel.  <a href="#gada8ccda7bf65165fe145d3096a252dcc">More...</a><br/></td></tr>
<tr class="separator:gada8ccda7bf65165fe145d3096a252dcc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gae86b0704a1f2bdebb268b55567f7f47b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gae86b0704a1f2bdebb268b55567f7f47b">ssh_channel_open_forward</a> (ssh_channel channel, const char *remotehost, int remoteport, const char *sourcehost, int localport)</td></tr>
<tr class="memdesc:gae86b0704a1f2bdebb268b55567f7f47b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a TCP/IP forwarding channel.  <a href="#gae86b0704a1f2bdebb268b55567f7f47b">More...</a><br/></td></tr>
<tr class="separator:gae86b0704a1f2bdebb268b55567f7f47b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaf051dd30d75bf6dc45d1a5088cf970bd"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaf051dd30d75bf6dc45d1a5088cf970bd">ssh_channel_open_session</a> (ssh_channel channel)</td></tr>
<tr class="memdesc:gaf051dd30d75bf6dc45d1a5088cf970bd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Open a session channel (suited for a shell, not TCP forwarding).  <a href="#gaf051dd30d75bf6dc45d1a5088cf970bd">More...</a><br/></td></tr>
<tr class="separator:gaf051dd30d75bf6dc45d1a5088cf970bd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga157f7d1df5de07ec6c6976e2034ba6e2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga157f7d1df5de07ec6c6976e2034ba6e2">ssh_channel_poll</a> (ssh_channel channel, int is_stderr)</td></tr>
<tr class="memdesc:ga157f7d1df5de07ec6c6976e2034ba6e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Polls a channel for data to read.  <a href="#ga157f7d1df5de07ec6c6976e2034ba6e2">More...</a><br/></td></tr>
<tr class="separator:ga157f7d1df5de07ec6c6976e2034ba6e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac92381c4c5d4a7eab35f6e84686f033d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gac92381c4c5d4a7eab35f6e84686f033d">ssh_channel_read</a> (ssh_channel channel, void *dest, uint32_t count, int is_stderr)</td></tr>
<tr class="memdesc:gac92381c4c5d4a7eab35f6e84686f033d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Reads data from a channel.  <a href="#gac92381c4c5d4a7eab35f6e84686f033d">More...</a><br/></td></tr>
<tr class="separator:gac92381c4c5d4a7eab35f6e84686f033d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaaca5a3fbe9839c3ffb37b746afc35f4c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaaca5a3fbe9839c3ffb37b746afc35f4c">ssh_channel_read_nonblocking</a> (ssh_channel channel, void *dest, uint32_t count, int is_stderr)</td></tr>
<tr class="memdesc:gaaca5a3fbe9839c3ffb37b746afc35f4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Do a nonblocking read on the channel.  <a href="#gaaca5a3fbe9839c3ffb37b746afc35f4c">More...</a><br/></td></tr>
<tr class="separator:gaaca5a3fbe9839c3ffb37b746afc35f4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga7aede2f9af4c494ff9e41fc08a4572f1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga7aede2f9af4c494ff9e41fc08a4572f1">ssh_channel_request_env</a> (ssh_channel channel, const char *name, const char *value)</td></tr>
<tr class="memdesc:ga7aede2f9af4c494ff9e41fc08a4572f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set environment variables.  <a href="#ga7aede2f9af4c494ff9e41fc08a4572f1">More...</a><br/></td></tr>
<tr class="separator:ga7aede2f9af4c494ff9e41fc08a4572f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga567d509183ade0a77190f390e2b5747d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga567d509183ade0a77190f390e2b5747d">ssh_channel_request_exec</a> (ssh_channel channel, const char *cmd)</td></tr>
<tr class="memdesc:ga567d509183ade0a77190f390e2b5747d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run a shell command without an interactive shell.  <a href="#ga567d509183ade0a77190f390e2b5747d">More...</a><br/></td></tr>
<tr class="separator:ga567d509183ade0a77190f390e2b5747d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga37c1cec33fe5a2f184768aba52e3a0db"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga37c1cec33fe5a2f184768aba52e3a0db">ssh_channel_request_pty</a> (ssh_channel channel)</td></tr>
<tr class="memdesc:ga37c1cec33fe5a2f184768aba52e3a0db"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request a PTY.  <a href="#ga37c1cec33fe5a2f184768aba52e3a0db">More...</a><br/></td></tr>
<tr class="separator:ga37c1cec33fe5a2f184768aba52e3a0db"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gabb175414352256e1602286e0ab50886c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gabb175414352256e1602286e0ab50886c">ssh_channel_request_pty_size</a> (ssh_channel channel, const char *terminal, int col, int row)</td></tr>
<tr class="memdesc:gabb175414352256e1602286e0ab50886c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request a pty with a specific type and size.  <a href="#gabb175414352256e1602286e0ab50886c">More...</a><br/></td></tr>
<tr class="separator:gabb175414352256e1602286e0ab50886c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaa98315fca818b561970a6950683f4053"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaa98315fca818b561970a6950683f4053">ssh_channel_request_send_signal</a> (ssh_channel channel, const char *sig)</td></tr>
<tr class="memdesc:gaa98315fca818b561970a6950683f4053"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send a signal to remote process (as described in RFC 4254, section 6.9).  <a href="#gaa98315fca818b561970a6950683f4053">More...</a><br/></td></tr>
<tr class="separator:gaa98315fca818b561970a6950683f4053"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gaed4c5fb30c9df2b2548421ccf4e81bf1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaed4c5fb30c9df2b2548421ccf4e81bf1">ssh_channel_request_shell</a> (ssh_channel channel)</td></tr>
<tr class="memdesc:gaed4c5fb30c9df2b2548421ccf4e81bf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request a shell.  <a href="#gaed4c5fb30c9df2b2548421ccf4e81bf1">More...</a><br/></td></tr>
<tr class="separator:gaed4c5fb30c9df2b2548421ccf4e81bf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga06024b070f9b2a3d6964b79ae36695b7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga06024b070f9b2a3d6964b79ae36695b7">ssh_channel_request_subsystem</a> (ssh_channel channel, const char *subsys)</td></tr>
<tr class="memdesc:ga06024b070f9b2a3d6964b79ae36695b7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request a subsystem (for example "sftp").  <a href="#ga06024b070f9b2a3d6964b79ae36695b7">More...</a><br/></td></tr>
<tr class="separator:ga06024b070f9b2a3d6964b79ae36695b7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gadfa34624c28164bd73453cd04aa64c1f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gadfa34624c28164bd73453cd04aa64c1f">ssh_channel_request_x11</a> (ssh_channel channel, int single_connection, const char *protocol, const char *cookie, int screen_number)</td></tr>
<tr class="memdesc:gadfa34624c28164bd73453cd04aa64c1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends the "x11-req" channel request over an existing session channel.  <a href="#gadfa34624c28164bd73453cd04aa64c1f">More...</a><br/></td></tr>
<tr class="separator:gadfa34624c28164bd73453cd04aa64c1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1026cfa48ecfc0b4898d4ea443acfc5d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga1026cfa48ecfc0b4898d4ea443acfc5d">ssh_channel_select</a> (ssh_channel *readchans, ssh_channel *writechans, ssh_channel *exceptchans, struct timeval *timeout)</td></tr>
<tr class="memdesc:ga1026cfa48ecfc0b4898d4ea443acfc5d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Act like the standard select(2) on channels.  <a href="#ga1026cfa48ecfc0b4898d4ea443acfc5d">More...</a><br/></td></tr>
<tr class="separator:ga1026cfa48ecfc0b4898d4ea443acfc5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga072f82fdf3e50514f747653af2c99004"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga072f82fdf3e50514f747653af2c99004">ssh_channel_send_eof</a> (ssh_channel channel)</td></tr>
<tr class="memdesc:ga072f82fdf3e50514f747653af2c99004"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send an end of file on the channel.  <a href="#ga072f82fdf3e50514f747653af2c99004">More...</a><br/></td></tr>
<tr class="separator:ga072f82fdf3e50514f747653af2c99004"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga1c00ed18679d9a8c5b971260b5df13a2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga1c00ed18679d9a8c5b971260b5df13a2">ssh_channel_set_blocking</a> (ssh_channel channel, int blocking)</td></tr>
<tr class="memdesc:ga1c00ed18679d9a8c5b971260b5df13a2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Put the channel into blocking or nonblocking mode.  <a href="#ga1c00ed18679d9a8c5b971260b5df13a2">More...</a><br/></td></tr>
<tr class="separator:ga1c00ed18679d9a8c5b971260b5df13a2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga5d658df773ba854b35ff9f905341e2fb"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga5d658df773ba854b35ff9f905341e2fb">ssh_channel_write</a> (ssh_channel channel, const void *data, uint32_t len)</td></tr>
<tr class="memdesc:ga5d658df773ba854b35ff9f905341e2fb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Blocking write on a channel.  <a href="#ga5d658df773ba854b35ff9f905341e2fb">More...</a><br/></td></tr>
<tr class="separator:ga5d658df773ba854b35ff9f905341e2fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga205d5ea76fb140075ebb1c20b8f193d3"><td class="memItemLeft" align="right" valign="top">ssh_channel&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga205d5ea76fb140075ebb1c20b8f193d3">ssh_forward_accept</a> (ssh_session session, int timeout_ms)</td></tr>
<tr class="memdesc:ga205d5ea76fb140075ebb1c20b8f193d3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Accept an incoming TCP/IP forwarding channel.  <a href="#ga205d5ea76fb140075ebb1c20b8f193d3">More...</a><br/></td></tr>
<tr class="separator:ga205d5ea76fb140075ebb1c20b8f193d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:gac474d071d80e725c8b5633cb1d35c010"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gac474d071d80e725c8b5633cb1d35c010">ssh_forward_cancel</a> (ssh_session session, const char *address, int port)</td></tr>
<tr class="memdesc:gac474d071d80e725c8b5633cb1d35c010"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends the "cancel-tcpip-forward" global request to ask the server to cancel the tcpip-forward request.  <a href="#gac474d071d80e725c8b5633cb1d35c010">More...</a><br/></td></tr>
<tr class="separator:gac474d071d80e725c8b5633cb1d35c010"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ga041a495f0230bb017cdf7459e6773664"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga041a495f0230bb017cdf7459e6773664">ssh_forward_listen</a> (ssh_session session, const char *address, int port, int *bound_port)</td></tr>
<tr class="memdesc:ga041a495f0230bb017cdf7459e6773664"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends the "tcpip-forward" global request to ask the server to begin listening for inbound connections.  <a href="#ga041a495f0230bb017cdf7459e6773664">More...</a><br/></td></tr>
<tr class="separator:ga041a495f0230bb017cdf7459e6773664"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>Functions that manage a SSH channel. </p>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="gab391f5c978cb1bc8df3ebd061f38e8c5"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int channel_read_buffer </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ssh_buffer&#160;</td>
          <td class="paramname"><em>buffer</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>is_stderr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Read data from a channel into a buffer. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to read from.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">buffer</td><td>The buffer which will get the data.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>The count of bytes to be read. If it is bigger than 0, the exact size will be read, else (bytes=0) it will return once anything is available.</td></tr>
    <tr><td class="paramdir"></td><td class="paramname">is_stderr</td><td>A boolean value to mark reading from the stderr stream.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of bytes read, 0 on end of file or SSH_ERROR on error. </dd></dl>
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>Please use ssh_channel_read instead </dd></dl>
<dl class="section see"><dt>See Also</dt><dd><a class="el" href="group__libssh__channel.html#gac92381c4c5d4a7eab35f6e84686f033d" title="Reads data from a channel.">ssh_channel_read</a> </dd></dl>

<p>References <a class="el" href="group__libssh__channel.html#gab535264029443d77214c0615a0788b0a">ssh_channel_is_eof()</a>, <a class="el" href="group__libssh__channel.html#ga157f7d1df5de07ec6c6976e2034ba6e2">ssh_channel_poll()</a>, and <a class="el" href="group__libssh__channel.html#gac92381c4c5d4a7eab35f6e84686f033d">ssh_channel_read()</a>.</p>

</div>
</div>
<a class="anchor" id="ga548bd0f77a50b7c8180942544b375866"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ssh_channel ssh_channel_accept_x11 </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>timeout_ms</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Accept an X11 forwarding channel. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>An x11-enabled session channel.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">timeout_ms</td><td>Timeout in milliseconds.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A newly created channel, or NULL if no X11 request from the server. </dd></dl>

<p>Referenced by <a class="el" href="classssh_1_1Channel.html#a62000c16999e74525d296f0a1cb19c95">ssh::Channel::acceptX11()</a>.</p>

</div>
</div>
<a class="anchor" id="gaf5d55c90f3d98c583df23d21905c1127"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_change_pty_size </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>cols</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>rows</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Change the size of the terminal associated to a channel. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to change the size.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cols</td><td>The new number of columns.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">rows</td><td>The new number of rows.</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>
<dl class="section warning"><dt>Warning</dt><dd>Do not call it from a signal handler if you are not sure any other libssh function using the same channel/session is running at same time (not 100% threadsafe). </dd></dl>

<p>References <a class="el" href="group__libssh__buffer.html#ga608cf73226454f21e8b2f9f1d838c5fc">ssh_buffer_free()</a>, and <a class="el" href="group__libssh__buffer.html#ga7ecc914104a5bf0da485d3e42f6a7d3b">ssh_buffer_new()</a>.</p>

<p>Referenced by <a class="el" href="classssh_1_1Channel.html#a196b0eab10bf168330f569ff3881562c">ssh::Channel::changePtySize()</a>.</p>

</div>
</div>
<a class="anchor" id="ga238f07e0455456a5bfd8a49ead917732"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_close </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Close a channel. </p>
<p>This sends an end of file and then closes the channel. You won't be able to recover any data the server was going to send or was in buffers.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to close.</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>
<dl class="section see"><dt>See Also</dt><dd>channel_free() </dd>
<dd>
channel_eof() </dd></dl>

<p>References <a class="el" href="group__libssh__channel.html#ga072f82fdf3e50514f747653af2c99004">ssh_channel_send_eof()</a>, <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>

<p>Referenced by <a class="el" href="classssh_1_1Channel.html#ad14405b4e8c3a8e3d37a49ed793aadde">ssh::Channel::close()</a>, and <a class="el" href="group__libssh__channel.html#gad1417f9eae8928fed20faafe2d9dbfff">ssh_channel_free()</a>.</p>

</div>
</div>
<a class="anchor" id="gad1417f9eae8928fed20faafe2d9dbfff"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ssh_channel_free </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Close and free a channel. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to free.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section warning"><dt>Warning</dt><dd>Any data unread on this channel will be lost. </dd></dl>

<p>References <a class="el" href="group__libssh__buffer.html#ga608cf73226454f21e8b2f9f1d838c5fc">ssh_buffer_free()</a>, and <a class="el" href="group__libssh__channel.html#ga238f07e0455456a5bfd8a49ead917732">ssh_channel_close()</a>.</p>

<p>Referenced by <a class="el" href="group__libssh__session.html#ga0f048a4c0dbe02cfb7e9c5b6d0db0f27">ssh_disconnect()</a>, and <a class="el" href="group__libssh__session.html#gae5af27a98a7488e9f5ded6b37c274156">ssh_free()</a>.</p>

</div>
</div>
<a class="anchor" id="ga9eea019dd0bbaa8a817fff2c762d1a2d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_get_exit_status </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Get the exit status of the channel (error code from the executed instruction). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to get the status from.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The exit status, -1 if no exit status has been returned or eof not sent. </dd></dl>

</div>
</div>
<a class="anchor" id="ga747aa5315575aa7ac9d8367c7372d8dd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ssh_session ssh_channel_get_session </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Recover the session in which belongs a channel. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to recover the session from.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The session pointer. </dd></dl>

</div>
</div>
<a class="anchor" id="gab2720b44cb7f1dfe2b38ffe07c2f45c7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_is_closed </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Check if the channel is closed or not. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to check.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if channel is opened, nonzero otherwise.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd>channel_is_open() </dd></dl>

<p>Referenced by <a class="el" href="classssh_1_1Channel.html#a38880d18d0fc357be0f4f8b8ef1c92ef">ssh::Channel::isClosed()</a>.</p>

</div>
</div>
<a class="anchor" id="gab535264029443d77214c0615a0788b0a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_is_eof </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Check if remote has sent an EOF. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to check.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if there is no EOF, nonzero otherwise. </dd></dl>

<p>Referenced by <a class="el" href="group__libssh__channel.html#gab391f5c978cb1bc8df3ebd061f38e8c5">channel_read_buffer()</a>, <a class="el" href="classssh_1_1Channel.html#a3bb4131d82cc033d75f65a5137053532">ssh::Channel::isEof()</a>, and <a class="el" href="group__libssh__scp.html#gaba59cd8cc77d219cac93f865445c6e47">ssh_scp_pull_request()</a>.</p>

</div>
</div>
<a class="anchor" id="gaaafcda943c96ddb91e5c28c0bdee7045"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_is_open </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Check if the channel is open or not. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to check.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>0 if channel is closed, nonzero otherwise.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd>channel_is_closed() </dd></dl>

<p>Referenced by <a class="el" href="classssh_1_1Channel.html#aa2794c09f819f3132b241aa6b72b0664">ssh::Channel::isOpen()</a>.</p>

</div>
</div>
<a class="anchor" id="gada8ccda7bf65165fe145d3096a252dcc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ssh_channel ssh_channel_new </td>
          <td>(</td>
          <td class="paramtype">ssh_session&#160;</td>
          <td class="paramname"><em>session</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Allocate a new channel. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">session</td><td>The ssh session to use.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A pointer to a newly allocated channel, NULL on error. </dd></dl>

<p>References <a class="el" href="group__libssh__buffer.html#ga608cf73226454f21e8b2f9f1d838c5fc">ssh_buffer_free()</a>, and <a class="el" href="group__libssh__buffer.html#ga7ecc914104a5bf0da485d3e42f6a7d3b">ssh_buffer_new()</a>.</p>

</div>
</div>
<a class="anchor" id="gae86b0704a1f2bdebb268b55567f7f47b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_open_forward </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>remotehost</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>remoteport</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sourcehost</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>localport</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a TCP/IP forwarding channel. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>An allocated channel.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">remotehost</td><td>The remote host to connected (host name or IP).</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">remoteport</td><td>The remote port.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">sourcehost</td><td>The numeric IP address of the machine from where the connection request originates. This is mostly for logging purposes.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">localport</td><td>The port on the host from where the connection originated. This is mostly for logging purposes.</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>
<dl class="section warning"><dt>Warning</dt><dd>This function does not bind the local port and does not automatically forward the content of a socket to the channel. You still have to use channel_read and channel_write for this. </dd></dl>

<p>References <a class="el" href="group__libssh__buffer.html#ga608cf73226454f21e8b2f9f1d838c5fc">ssh_buffer_free()</a>, <a class="el" href="group__libssh__buffer.html#ga7ecc914104a5bf0da485d3e42f6a7d3b">ssh_buffer_new()</a>, <a class="el" href="group__libssh__string.html#gacd9c4eb69f7ecfdcf709deb8dde6a5a8">ssh_string_free()</a>, and <a class="el" href="group__libssh__string.html#ga4154ea16ba2dc5bd5dcb2579686aaac2">ssh_string_from_char()</a>.</p>

</div>
</div>
<a class="anchor" id="gaf051dd30d75bf6dc45d1a5088cf970bd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_open_session </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Open a session channel (suited for a shell, not TCP forwarding). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>An allocated channel.</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>
<dl class="section see"><dt>See Also</dt><dd>channel_open_forward() </dd>
<dd>
channel_request_env() </dd>
<dd>
channel_request_shell() </dd>
<dd>
channel_request_exec() </dd></dl>

</div>
</div>
<a class="anchor" id="ga157f7d1df5de07ec6c6976e2034ba6e2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_poll </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>is_stderr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Polls a channel for data to read. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to poll.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">is_stderr</td><td>A boolean to select the stderr stream.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of bytes available for reading, 0 if nothing is available or SSH_ERROR on error.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>When the channel is in EOF state, the function returns SSH_EOF.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd>channel_is_eof() </dd></dl>

<p>Referenced by <a class="el" href="group__libssh__channel.html#gab391f5c978cb1bc8df3ebd061f38e8c5">channel_read_buffer()</a>, <a class="el" href="group__libssh__channel.html#gaaca5a3fbe9839c3ffb37b746afc35f4c">ssh_channel_read_nonblocking()</a>, <a class="el" href="group__libssh__scp.html#ga11f48e2cf62bcec20d9232ed3ca41752">ssh_scp_write()</a>, and <a class="el" href="group__libssh__session.html#ga86cbf041bced56d18a2a5248c46cecb4">ssh_select()</a>.</p>

</div>
</div>
<a class="anchor" id="gac92381c4c5d4a7eab35f6e84686f033d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_read </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>is_stderr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Reads data from a channel. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to read from.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dest</td><td>The destination buffer which will get the data.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>The count of bytes to be read.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">is_stderr</td><td>A boolean value to mark reading from the stderr flow.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of bytes read, 0 on end of file or SSH_ERROR on error.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This function may return less than count bytes of data, and won't block until count bytes have been read. </dd>
<dd>
The read function using a buffer has been renamed to <a class="el" href="group__libssh__channel.html#gab391f5c978cb1bc8df3ebd061f38e8c5" title="Read data from a channel into a buffer.">channel_read_buffer()</a>. </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#gga06fc87d81c62e9abb8790b6e5713c55ba75fa79e63947b66462db977d9b5ae27c">SSH_LOG_PROTOCOL</a>.</p>

<p>Referenced by <a class="el" href="group__libssh__channel.html#gab391f5c978cb1bc8df3ebd061f38e8c5">channel_read_buffer()</a>, <a class="el" href="group__libssh__channel.html#gaaca5a3fbe9839c3ffb37b746afc35f4c">ssh_channel_read_nonblocking()</a>, <a class="el" href="group__libssh__scp.html#ga2ca698c1e49612c083d9f8a72df52188">ssh_scp_leave_directory()</a>, <a class="el" href="group__libssh__scp.html#gaa584f03d4e3d582ac10a3a19818ec56d">ssh_scp_push_directory()</a>, <a class="el" href="group__libssh__scp.html#ga544f4b9c525071910110ada94148adc6">ssh_scp_push_file()</a>, <a class="el" href="group__libssh__scp.html#ga10bf627407959b51a7c39b37e8d46460">ssh_scp_read()</a>, <a class="el" href="group__libssh__scp.html#ga0be44d8a450767d92668d36d1beb43b9">ssh_scp_read_string()</a>, and <a class="el" href="group__libssh__scp.html#ga11f48e2cf62bcec20d9232ed3ca41752">ssh_scp_write()</a>.</p>

</div>
</div>
<a class="anchor" id="gaaca5a3fbe9839c3ffb37b746afc35f4c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_read_nonblocking </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>dest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>count</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>is_stderr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Do a nonblocking read on the channel. </p>
<p>A nonblocking read on the specified channel. it will return &lt;= count bytes of data read atomically.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to read from.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">dest</td><td>A pointer to a destination buffer.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>The count of bytes of data to be read.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">is_stderr</td><td>A boolean to select the stderr stream.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of bytes read, 0 if nothing is available or SSH_ERROR on error.</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Don't forget to check for EOF as it would return 0 here.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd>channel_is_eof() </dd></dl>

<p>References <a class="el" href="group__libssh__channel.html#ga157f7d1df5de07ec6c6976e2034ba6e2">ssh_channel_poll()</a>, and <a class="el" href="group__libssh__channel.html#gac92381c4c5d4a7eab35f6e84686f033d">ssh_channel_read()</a>.</p>

</div>
</div>
<a class="anchor" id="ga7aede2f9af4c494ff9e41fc08a4572f1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_request_env </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>name</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>value</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Set environment variables. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to set the environment variables.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>The name of the variable.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The value to set.</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>
<dl class="section warning"><dt>Warning</dt><dd>Some environment variables may be refused by security reasons. </dd></dl>

<p>References <a class="el" href="group__libssh__buffer.html#ga608cf73226454f21e8b2f9f1d838c5fc">ssh_buffer_free()</a>, <a class="el" href="group__libssh__buffer.html#ga7ecc914104a5bf0da485d3e42f6a7d3b">ssh_buffer_new()</a>, <a class="el" href="group__libssh__string.html#gacd9c4eb69f7ecfdcf709deb8dde6a5a8">ssh_string_free()</a>, and <a class="el" href="group__libssh__string.html#ga4154ea16ba2dc5bd5dcb2579686aaac2">ssh_string_from_char()</a>.</p>

</div>
</div>
<a class="anchor" id="ga567d509183ade0a77190f390e2b5747d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_request_exec </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>cmd</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Run a shell command without an interactive shell. </p>
<p>This is similar to 'sh -c command'.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to execute the command.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cmd</td><td>The command to execute (e.g. "ls ~/ -al | grep -i reports").</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">rc = channel_request_exec(channel, <span class="stringliteral">&quot;ps aux&quot;</span>);</div>
<div class="line"><span class="keywordflow">if</span> (rc &gt; 0) {</div>
<div class="line">  <span class="keywordflow">return</span> -1;</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="keywordflow">while</span> ((rc = channel_read(channel, buffer, <span class="keyword">sizeof</span>(buffer), 0)) &gt; 0) {</div>
<div class="line">  <span class="keywordflow">if</span> (fwrite(buffer, 1, rc, stdout) != (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) rc) {</div>
<div class="line">    <span class="keywordflow">return</span> -1;</div>
<div class="line">  }</div>
<div class="line">}</div>
</div><!-- fragment --><dl class="section see"><dt>See Also</dt><dd>channel_request_shell() </dd></dl>

<p>References <a class="el" href="group__libssh__buffer.html#ga608cf73226454f21e8b2f9f1d838c5fc">ssh_buffer_free()</a>, <a class="el" href="group__libssh__buffer.html#ga7ecc914104a5bf0da485d3e42f6a7d3b">ssh_buffer_new()</a>, <a class="el" href="group__libssh__string.html#gacd9c4eb69f7ecfdcf709deb8dde6a5a8">ssh_string_free()</a>, and <a class="el" href="group__libssh__string.html#ga4154ea16ba2dc5bd5dcb2579686aaac2">ssh_string_from_char()</a>.</p>

</div>
</div>
<a class="anchor" id="ga37c1cec33fe5a2f184768aba52e3a0db"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_request_pty </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request a PTY. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to send the request.</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>
<dl class="section see"><dt>See Also</dt><dd>channel_request_pty_size() </dd></dl>

<p>References <a class="el" href="group__libssh__channel.html#gabb175414352256e1602286e0ab50886c">ssh_channel_request_pty_size()</a>.</p>

</div>
</div>
<a class="anchor" id="gabb175414352256e1602286e0ab50886c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_request_pty_size </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>terminal</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>col</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>row</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request a pty with a specific type and size. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to sent the request.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">terminal</td><td>The terminal type ("vt100, xterm,...").</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">col</td><td>The number of columns.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">row</td><td>The number of rows.</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>

<p>References <a class="el" href="group__libssh__buffer.html#ga608cf73226454f21e8b2f9f1d838c5fc">ssh_buffer_free()</a>, <a class="el" href="group__libssh__buffer.html#ga7ecc914104a5bf0da485d3e42f6a7d3b">ssh_buffer_new()</a>, <a class="el" href="group__libssh__string.html#gacd9c4eb69f7ecfdcf709deb8dde6a5a8">ssh_string_free()</a>, and <a class="el" href="group__libssh__string.html#ga4154ea16ba2dc5bd5dcb2579686aaac2">ssh_string_from_char()</a>.</p>

<p>Referenced by <a class="el" href="group__libssh__channel.html#ga37c1cec33fe5a2f184768aba52e3a0db">ssh_channel_request_pty()</a>.</p>

</div>
</div>
<a class="anchor" id="gaa98315fca818b561970a6950683f4053"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_request_send_signal </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>sig</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Send a signal to remote process (as described in RFC 4254, section 6.9). </p>
<p>Sends a signal 'sig' to the remote process. Note, that remote system may not support signals concept. In such a case this request will be silently ignored. Only SSH-v2 is supported (I'm not sure about SSH-v1).</p>
<p>OpenSSH doesn't support signals yet, see: <a href="https://bugzilla.mindrot.org/show_bug.cgi?id=1424">https://bugzilla.mindrot.org/show_bug.cgi?id=1424</a></p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to send signal.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">sig</td><td>The signal to send (without SIG prefix) <br/>
<br/>
 SIGABRT -&gt; ABRT <br/>
 SIGALRM -&gt; ALRM <br/>
 SIGFPE -&gt; FPE <br/>
 SIGHUP -&gt; HUP <br/>
 SIGILL -&gt; ILL <br/>
 SIGINT -&gt; INT <br/>
 SIGKILL -&gt; KILL <br/>
 SIGPIPE -&gt; PIPE <br/>
 SIGQUIT -&gt; QUIT <br/>
 SIGSEGV -&gt; SEGV <br/>
 SIGTERM -&gt; TERM <br/>
 SIGUSR1 -&gt; USR1 <br/>
 SIGUSR2 -&gt; USR2 <br/>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success, SSH_ERROR if an error occured (including attempts to send signal via SSH-v1 session). </dd></dl>

<p>References <a class="el" href="group__libssh__buffer.html#ga608cf73226454f21e8b2f9f1d838c5fc">ssh_buffer_free()</a>, <a class="el" href="group__libssh__buffer.html#ga7ecc914104a5bf0da485d3e42f6a7d3b">ssh_buffer_new()</a>, <a class="el" href="group__libssh__string.html#gacd9c4eb69f7ecfdcf709deb8dde6a5a8">ssh_string_free()</a>, and <a class="el" href="group__libssh__string.html#ga4154ea16ba2dc5bd5dcb2579686aaac2">ssh_string_from_char()</a>.</p>

</div>
</div>
<a class="anchor" id="gaed4c5fb30c9df2b2548421ccf4e81bf1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_request_shell </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request a shell. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to send the request.</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>
</div>
<a class="anchor" id="ga06024b070f9b2a3d6964b79ae36695b7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_request_subsystem </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>subsys</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Request a subsystem (for example "sftp"). </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to send the request.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">subsys</td><td>The subsystem to request (for example "sftp").</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>
<dl class="section warning"><dt>Warning</dt><dd>You normally don't have to call it for sftp, see <a class="el" href="group__libssh__sftp.html#ga32c8e182e97352e1aa8a20443c320d7f" title="Start a new sftp session.">sftp_new()</a>. </dd></dl>

<p>References <a class="el" href="group__libssh__buffer.html#ga608cf73226454f21e8b2f9f1d838c5fc">ssh_buffer_free()</a>, <a class="el" href="group__libssh__buffer.html#ga7ecc914104a5bf0da485d3e42f6a7d3b">ssh_buffer_new()</a>, <a class="el" href="group__libssh__string.html#gacd9c4eb69f7ecfdcf709deb8dde6a5a8">ssh_string_free()</a>, and <a class="el" href="group__libssh__string.html#ga4154ea16ba2dc5bd5dcb2579686aaac2">ssh_string_from_char()</a>.</p>

</div>
</div>
<a class="anchor" id="gadfa34624c28164bd73453cd04aa64c1f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_request_x11 </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>single_connection</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>protocol</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>cookie</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>screen_number</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sends the "x11-req" channel request over an existing session channel. </p>
<p>This will enable redirecting the display of the remote X11 applications to local X server over an secure tunnel.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>An existing session channel where the remote X11 applications are going to be executed.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">single_connection</td><td>A boolean to mark only one X11 app will be redirected.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">protocol</td><td>A x11 authentication protocol. Pass NULL to use the default value MIT-MAGIC-COOKIE-1.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cookie</td><td>A x11 authentication cookie. Pass NULL to generate a random cookie.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">screen_number</td><td>The screen number.</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>

<p>References <a class="el" href="group__libssh__buffer.html#ga608cf73226454f21e8b2f9f1d838c5fc">ssh_buffer_free()</a>, <a class="el" href="group__libssh__buffer.html#ga7ecc914104a5bf0da485d3e42f6a7d3b">ssh_buffer_new()</a>, <a class="el" href="group__libssh__string.html#gacd9c4eb69f7ecfdcf709deb8dde6a5a8">ssh_string_free()</a>, and <a class="el" href="group__libssh__string.html#ga4154ea16ba2dc5bd5dcb2579686aaac2">ssh_string_from_char()</a>.</p>

</div>
</div>
<a class="anchor" id="ga1026cfa48ecfc0b4898d4ea443acfc5d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_select </td>
          <td>(</td>
          <td class="paramtype">ssh_channel *&#160;</td>
          <td class="paramname"><em>readchans</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ssh_channel *&#160;</td>
          <td class="paramname"><em>writechans</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">ssh_channel *&#160;</td>
          <td class="paramname"><em>exceptchans</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct timeval *&#160;</td>
          <td class="paramname"><em>timeout</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Act like the standard select(2) on channels. </p>
<p>The list of pointers are then actualized and will only contain pointers to channels that are respectively readable, writable or have an exception to trap.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">readchans</td><td>A NULL pointer or an array of channel pointers, terminated by a NULL.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">writechans</td><td>A NULL pointer or an array of channel pointers, terminated by a NULL.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">exceptchans</td><td>A NULL pointer or an array of channel pointers, terminated by a NULL.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>Timeout as defined by select(2).</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on a successful operation, SSH_EINTR if the select(2) syscall was interrupted, then relaunch the function. </dd></dl>

</div>
</div>
<a class="anchor" id="ga072f82fdf3e50514f747653af2c99004"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_send_eof </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Send an end of file on the channel. </p>
<p>This doesn't close the channel. You may still read from it but not write.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to send the eof to.</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>
<dl class="section see"><dt>See Also</dt><dd>channel_close() </dd>
<dd>
channel_free() </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>

<p>Referenced by <a class="el" href="group__libssh__channel.html#ga238f07e0455456a5bfd8a49ead917732">ssh_channel_close()</a>.</p>

</div>
</div>
<a class="anchor" id="ga1c00ed18679d9a8c5b971260b5df13a2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ssh_channel_set_blocking </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>blocking</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Put the channel into blocking or nonblocking mode. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to use.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">blocking</td><td>A boolean for blocking or nonblocking.</td></tr>
  </table>
  </dd>
</dl>
<dl class="bug"><dt><b><a class="el" href="bug.html#_bug000001">Bug:</a></b></dt><dd>This functionality is still under development and doesn't work correctly. </dd></dl>

</div>
</div>
<a class="anchor" id="ga5d658df773ba854b35ff9f905341e2fb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_channel_write </td>
          <td>(</td>
          <td class="paramtype">ssh_channel&#160;</td>
          <td class="paramname"><em>channel</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const void *&#160;</td>
          <td class="paramname"><em>data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>len</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Blocking write on a channel. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The channel to write to.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">data</td><td>A pointer to the data to write.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">len</td><td>The length of the buffer to write to.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The number of bytes written, SSH_ERROR on error.</dd></dl>
<dl class="section see"><dt>See Also</dt><dd>channel_read() </dd></dl>

<p>Referenced by <a class="el" href="group__libssh__scp.html#gad3bb38b15f02597cc1e155c526a51e51">ssh_scp_accept_request()</a>, <a class="el" href="group__libssh__scp.html#gad36438c6b1e235d96cec43ca350e9b4f">ssh_scp_deny_request()</a>, <a class="el" href="group__libssh__scp.html#ga2ca698c1e49612c083d9f8a72df52188">ssh_scp_leave_directory()</a>, <a class="el" href="group__libssh__scp.html#gaba59cd8cc77d219cac93f865445c6e47">ssh_scp_pull_request()</a>, <a class="el" href="group__libssh__scp.html#gaa584f03d4e3d582ac10a3a19818ec56d">ssh_scp_push_directory()</a>, <a class="el" href="group__libssh__scp.html#ga544f4b9c525071910110ada94148adc6">ssh_scp_push_file()</a>, <a class="el" href="group__libssh__scp.html#ga10bf627407959b51a7c39b37e8d46460">ssh_scp_read()</a>, <a class="el" href="group__libssh__scp.html#ga11f48e2cf62bcec20d9232ed3ca41752">ssh_scp_write()</a>, and <a class="el" href="classssh_1_1Channel.html#a06cf7ffd971eff87783a169444fa09a2">ssh::Channel::write()</a>.</p>

</div>
</div>
<a class="anchor" id="ga205d5ea76fb140075ebb1c20b8f193d3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ssh_channel ssh_forward_accept </td>
          <td>(</td>
          <td class="paramtype">ssh_session&#160;</td>
          <td class="paramname"><em>session</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>timeout_ms</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Accept an incoming TCP/IP forwarding channel. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">session</td><td>The ssh session to use.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">timeout_ms</td><td>A timeout in milliseconds.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Newly created channel, or NULL if no incoming channel request from the server </dd></dl>

<p>Referenced by <a class="el" href="classssh_1_1Session.html#a6cd5318d71a3850a87b87bdfd89a5983">ssh::Session::acceptForward()</a>.</p>

</div>
</div>
<a class="anchor" id="gac474d071d80e725c8b5633cb1d35c010"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_forward_cancel </td>
          <td>(</td>
          <td class="paramtype">ssh_session&#160;</td>
          <td class="paramname"><em>session</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>port</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sends the "cancel-tcpip-forward" global request to ask the server to cancel the tcpip-forward request. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">session</td><td>The ssh session to send the request.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">address</td><td>The bound address on the server.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>The bound port on the server.</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>

<p>References <a class="el" href="group__libssh__buffer.html#ga608cf73226454f21e8b2f9f1d838c5fc">ssh_buffer_free()</a>, <a class="el" href="group__libssh__buffer.html#ga7ecc914104a5bf0da485d3e42f6a7d3b">ssh_buffer_new()</a>, <a class="el" href="group__libssh__string.html#gacd9c4eb69f7ecfdcf709deb8dde6a5a8">ssh_string_free()</a>, and <a class="el" href="group__libssh__string.html#ga4154ea16ba2dc5bd5dcb2579686aaac2">ssh_string_from_char()</a>.</p>

</div>
</div>
<a class="anchor" id="ga041a495f0230bb017cdf7459e6773664"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int ssh_forward_listen </td>
          <td>(</td>
          <td class="paramtype">ssh_session&#160;</td>
          <td class="paramname"><em>session</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&#160;</td>
          <td class="paramname"><em>address</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>port</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>bound_port</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Sends the "tcpip-forward" global request to ask the server to begin listening for inbound connections. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">session</td><td>The ssh session to send the request.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">address</td><td>The address to bind to on the server. Pass NULL to bind to all available addresses on all protocol families supported by the server.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">port</td><td>The port to bind to on the server. Pass 0 to ask the server to allocate the next available unprivileged port number</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">bound_port</td><td>The pointer to get actual bound port. Pass NULL to ignore.</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>

<p>References <a class="el" href="group__libssh__buffer.html#ga608cf73226454f21e8b2f9f1d838c5fc">ssh_buffer_free()</a>, <a class="el" href="group__libssh__buffer.html#ga7ecc914104a5bf0da485d3e42f6a7d3b">ssh_buffer_new()</a>, <a class="el" href="group__libssh__string.html#gacd9c4eb69f7ecfdcf709deb8dde6a5a8">ssh_string_free()</a>, and <a class="el" href="group__libssh__string.html#ga4154ea16ba2dc5bd5dcb2579686aaac2">ssh_string_from_char()</a>.</p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<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>