PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
| Dir : /proc/thread-self/root/usr/share/doc/libssh-devel/html/ |
| Server: Linux server2.noticiasdecolima.com 4.18.0-553.30.1.el8_10.x86_64 #1 SMP Tue Nov 26 02:30:26 EST 2024 x86_64 IP: 107.161.180.42 |
| Dir : //proc/thread-self/root/usr/share/doc/libssh-devel/html/group__libssh__channel.html |
<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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.14"/>
<meta name="viewport" content="width=device-width, initial-scale=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="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<script src="striped_bg.js"></script>
<link href="that_style.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 id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">libssh
 <span id="projectnumber">0.9.6</span>
</div>
<div id="projectbrief">The SSH library</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#nested-classes">Data Structures</a> |
<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">
<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__channel__read__termination__struct.html">ssh_channel_read_termination_struct</a></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="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gada8ccda7bf65165fe145d3096a252dcc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gada8ccda7bf65165fe145d3096a252dcc">ssh_channel_new</a> (<a class="el" href="structssh__session__struct.html">ssh_session</a> session)</td></tr>
<tr class="memdesc:gada8ccda7bf65165fe145d3096a252dcc"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:gabb9c8cd95c0aab1a293e91d7b05f8fc4"><td class="memItemLeft" align="right" valign="top"><a id="gabb9c8cd95c0aab1a293e91d7b05f8fc4"></a>
uint32_t </td><td class="memItemRight" valign="bottom"><b>ssh_channel_new_id</b> (<a class="el" href="structssh__session__struct.html">ssh_session</a> session)</td></tr>
<tr class="separator:gabb9c8cd95c0aab1a293e91d7b05f8fc4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga1f817e943f01e76843f60f9f9ca970f9"><td class="memItemLeft" align="right" valign="top"><a id="ga1f817e943f01e76843f60f9f9ca970f9"></a>
 </td><td class="memItemRight" valign="bottom"><b>SSH_PACKET_CALLBACK</b> (ssh_packet_channel_open_conf)</td></tr>
<tr class="separator:ga1f817e943f01e76843f60f9f9ca970f9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga18df7b076dd041ef43e8f174eecdc02a"><td class="memItemLeft" align="right" valign="top"><a id="ga18df7b076dd041ef43e8f174eecdc02a"></a>
 </td><td class="memItemRight" valign="bottom"><b>SSH_PACKET_CALLBACK</b> (ssh_packet_channel_open_fail)</td></tr>
<tr class="separator:ga18df7b076dd041ef43e8f174eecdc02a"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga4c25383c95b09d1b583ef0a9db4b08e2"><td class="memItemLeft" align="right" valign="top"><a id="ga4c25383c95b09d1b583ef0a9db4b08e2"></a>
<a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td><td class="memItemRight" valign="bottom"><b>ssh_channel_from_local</b> (<a class="el" href="structssh__session__struct.html">ssh_session</a> session, uint32_t id)</td></tr>
<tr class="separator:ga4c25383c95b09d1b583ef0a9db4b08e2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga9ddc86ac082a2b8992426c70c0b9e2ef"><td class="memItemLeft" align="right" valign="top"><a id="ga9ddc86ac082a2b8992426c70c0b9e2ef"></a>
 </td><td class="memItemRight" valign="bottom"><b>SSH_PACKET_CALLBACK</b> (channel_rcv_change_window)</td></tr>
<tr class="separator:ga9ddc86ac082a2b8992426c70c0b9e2ef"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2a1924f01a292478aaf2f140a8a107e3"><td class="memItemLeft" align="right" valign="top"><a id="ga2a1924f01a292478aaf2f140a8a107e3"></a>
 </td><td class="memItemRight" valign="bottom"><b>SSH_PACKET_CALLBACK</b> (channel_rcv_data)</td></tr>
<tr class="separator:ga2a1924f01a292478aaf2f140a8a107e3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga21f963dbe5ac591cc181244f00a6a396"><td class="memItemLeft" align="right" valign="top"><a id="ga21f963dbe5ac591cc181244f00a6a396"></a>
 </td><td class="memItemRight" valign="bottom"><b>SSH_PACKET_CALLBACK</b> (channel_rcv_eof)</td></tr>
<tr class="separator:ga21f963dbe5ac591cc181244f00a6a396"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga174d7f6268abeab5bc5d427d3ba0fc90"><td class="memItemLeft" align="right" valign="top"><a id="ga174d7f6268abeab5bc5d427d3ba0fc90"></a>
 </td><td class="memItemRight" valign="bottom"><b>SSH_PACKET_CALLBACK</b> (channel_rcv_close)</td></tr>
<tr class="separator:ga174d7f6268abeab5bc5d427d3ba0fc90"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga04a182f13550058a18b9ba97d8d63ded"><td class="memItemLeft" align="right" valign="top"><a id="ga04a182f13550058a18b9ba97d8d63ded"></a>
 </td><td class="memItemRight" valign="bottom"><b>SSH_PACKET_CALLBACK</b> (channel_rcv_request)</td></tr>
<tr class="separator:ga04a182f13550058a18b9ba97d8d63ded"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3f6b844e236802c6780e7bcf0c0f3fce"><td class="memItemLeft" align="right" valign="top"><a id="ga3f6b844e236802c6780e7bcf0c0f3fce"></a>
int </td><td class="memItemRight" valign="bottom"><b>channel_default_bufferize</b> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, void *data, size_t len, bool is_stderr)</td></tr>
<tr class="separator:ga3f6b844e236802c6780e7bcf0c0f3fce"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf051dd30d75bf6dc45d1a5088cf970bd"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaf051dd30d75bf6dc45d1a5088cf970bd">ssh_channel_open_session</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:gaf051dd30d75bf6dc45d1a5088cf970bd"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga6c4d4f5436dd5be58973606c6bcd8bb4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga6c4d4f5436dd5be58973606c6bcd8bb4">ssh_channel_open_auth_agent</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:ga6c4d4f5436dd5be58973606c6bcd8bb4"><td class="mdescLeft"> </td><td class="mdescRight">Open an agent authentication forwarding channel. This type of channel can be opened by a server towards a client in order to provide SSH-Agent services to the server-side process. This channel can only be opened if the client claimed support by sending a channel request beforehand. <a href="#ga6c4d4f5436dd5be58973606c6bcd8bb4">More...</a><br /></td></tr>
<tr class="separator:ga6c4d4f5436dd5be58973606c6bcd8bb4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae86b0704a1f2bdebb268b55567f7f47b"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gae86b0704a1f2bdebb268b55567f7f47b">ssh_channel_open_forward</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, const char *remotehost, int remoteport, const char *sourcehost, int localport)</td></tr>
<tr class="memdesc:gae86b0704a1f2bdebb268b55567f7f47b"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga93ddd5055eb3322d38c70986aa63c673"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga93ddd5055eb3322d38c70986aa63c673">ssh_channel_open_forward_unix</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, const char *remotepath, const char *sourcehost, int localport)</td></tr>
<tr class="memdesc:ga93ddd5055eb3322d38c70986aa63c673"><td class="mdescLeft"> </td><td class="mdescRight">Open a TCP/IP - UNIX domain socket forwarding channel. <a href="#ga93ddd5055eb3322d38c70986aa63c673">More...</a><br /></td></tr>
<tr class="separator:ga93ddd5055eb3322d38c70986aa63c673"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad1417f9eae8928fed20faafe2d9dbfff"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gad1417f9eae8928fed20faafe2d9dbfff">ssh_channel_free</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:gad1417f9eae8928fed20faafe2d9dbfff"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga1e7211251562c5e1ec64647236caa745"><td class="memItemLeft" align="right" valign="top"><a id="ga1e7211251562c5e1ec64647236caa745"></a>
void </td><td class="memItemRight" valign="bottom"><b>ssh_channel_do_free</b> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="separator:ga1e7211251562c5e1ec64647236caa745"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga072f82fdf3e50514f747653af2c99004"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga072f82fdf3e50514f747653af2c99004">ssh_channel_send_eof</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:ga072f82fdf3e50514f747653af2c99004"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga238f07e0455456a5bfd8a49ead917732"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga238f07e0455456a5bfd8a49ead917732">ssh_channel_close</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:ga238f07e0455456a5bfd8a49ead917732"><td class="mdescLeft"> </td><td class="mdescRight">Close a channel. <a href="#ga238f07e0455456a5bfd8a49ead917732">More...</a><br /></td></tr>
<tr class="separator:ga238f07e0455456a5bfd8a49ead917732"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae61fe034965d58e1fb6da1bee98de191"><td class="memItemLeft" align="right" valign="top"><a id="gae61fe034965d58e1fb6da1bee98de191"></a>
int </td><td class="memItemRight" valign="bottom"><b>ssh_channel_flush</b> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="separator:gae61fe034965d58e1fb6da1bee98de191"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadf53c5a5b501086af26d06cba3f1491f"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gadf53c5a5b501086af26d06cba3f1491f">ssh_channel_window_size</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:gadf53c5a5b501086af26d06cba3f1491f"><td class="mdescLeft"> </td><td class="mdescRight">Get the remote window size. <a href="#gadf53c5a5b501086af26d06cba3f1491f">More...</a><br /></td></tr>
<tr class="separator:gadf53c5a5b501086af26d06cba3f1491f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5d658df773ba854b35ff9f905341e2fb"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga5d658df773ba854b35ff9f905341e2fb">ssh_channel_write</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, const void *data, uint32_t len)</td></tr>
<tr class="memdesc:ga5d658df773ba854b35ff9f905341e2fb"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:gaaafcda943c96ddb91e5c28c0bdee7045"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaaafcda943c96ddb91e5c28c0bdee7045">ssh_channel_is_open</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:gaaafcda943c96ddb91e5c28c0bdee7045"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:gab2720b44cb7f1dfe2b38ffe07c2f45c7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gab2720b44cb7f1dfe2b38ffe07c2f45c7">ssh_channel_is_closed</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:gab2720b44cb7f1dfe2b38ffe07c2f45c7"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:gab535264029443d77214c0615a0788b0a"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gab535264029443d77214c0615a0788b0a">ssh_channel_is_eof</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:gab535264029443d77214c0615a0788b0a"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga1c00ed18679d9a8c5b971260b5df13a2"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga1c00ed18679d9a8c5b971260b5df13a2">ssh_channel_set_blocking</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, int blocking)</td></tr>
<tr class="memdesc:ga1c00ed18679d9a8c5b971260b5df13a2"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga198e96d111ee3dd2a0551fe10bd3ce16"><td class="memItemLeft" align="right" valign="top"><a id="ga198e96d111ee3dd2a0551fe10bd3ce16"></a>
 </td><td class="memItemRight" valign="bottom"><b>SSH_PACKET_CALLBACK</b> (ssh_packet_channel_success)</td></tr>
<tr class="separator:ga198e96d111ee3dd2a0551fe10bd3ce16"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gad05566d70f79b960a8ffdddbd65600cb"><td class="memItemLeft" align="right" valign="top"><a id="gad05566d70f79b960a8ffdddbd65600cb"></a>
 </td><td class="memItemRight" valign="bottom"><b>SSH_PACKET_CALLBACK</b> (ssh_packet_channel_failure)</td></tr>
<tr class="separator:gad05566d70f79b960a8ffdddbd65600cb"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gabb175414352256e1602286e0ab50886c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gabb175414352256e1602286e0ab50886c">ssh_channel_request_pty_size</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, const char *terminal, int col, int row)</td></tr>
<tr class="memdesc:gabb175414352256e1602286e0ab50886c"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga37c1cec33fe5a2f184768aba52e3a0db"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga37c1cec33fe5a2f184768aba52e3a0db">ssh_channel_request_pty</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:ga37c1cec33fe5a2f184768aba52e3a0db"><td class="mdescLeft"> </td><td class="mdescRight">Request a PTY. <a href="#ga37c1cec33fe5a2f184768aba52e3a0db">More...</a><br /></td></tr>
<tr class="separator:ga37c1cec33fe5a2f184768aba52e3a0db"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf5d55c90f3d98c583df23d21905c1127"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaf5d55c90f3d98c583df23d21905c1127">ssh_channel_change_pty_size</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, int cols, int rows)</td></tr>
<tr class="memdesc:gaf5d55c90f3d98c583df23d21905c1127"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:gaed4c5fb30c9df2b2548421ccf4e81bf1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaed4c5fb30c9df2b2548421ccf4e81bf1">ssh_channel_request_shell</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:gaed4c5fb30c9df2b2548421ccf4e81bf1"><td class="mdescLeft"> </td><td class="mdescRight">Request a shell. <a href="#gaed4c5fb30c9df2b2548421ccf4e81bf1">More...</a><br /></td></tr>
<tr class="separator:gaed4c5fb30c9df2b2548421ccf4e81bf1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga06024b070f9b2a3d6964b79ae36695b7"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga06024b070f9b2a3d6964b79ae36695b7">ssh_channel_request_subsystem</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, const char *subsys)</td></tr>
<tr class="memdesc:ga06024b070f9b2a3d6964b79ae36695b7"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga3d2a402cddd799036006294eb61649fe"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga3d2a402cddd799036006294eb61649fe">ssh_channel_request_sftp</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:ga3d2a402cddd799036006294eb61649fe"><td class="mdescLeft"> </td><td class="mdescRight">Request sftp subsystem on the channel. <a href="#ga3d2a402cddd799036006294eb61649fe">More...</a><br /></td></tr>
<tr class="separator:ga3d2a402cddd799036006294eb61649fe"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadfa34624c28164bd73453cd04aa64c1f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gadfa34624c28164bd73453cd04aa64c1f">ssh_channel_request_x11</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, int single_connection, const char *protocol, const char *cookie, int screen_number)</td></tr>
<tr class="memdesc:gadfa34624c28164bd73453cd04aa64c1f"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga548bd0f77a50b7c8180942544b375866"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga548bd0f77a50b7c8180942544b375866">ssh_channel_accept_x11</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, int timeout_ms)</td></tr>
<tr class="memdesc:ga548bd0f77a50b7c8180942544b375866"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:gab2e28b520b8f8fe5ff5626de2a4113d9"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gab2e28b520b8f8fe5ff5626de2a4113d9">ssh_channel_request_auth_agent</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:gab2e28b520b8f8fe5ff5626de2a4113d9"><td class="mdescLeft"> </td><td class="mdescRight">Send an "auth-agent-req" channel request over an existing session channel. <a href="#gab2e28b520b8f8fe5ff5626de2a4113d9">More...</a><br /></td></tr>
<tr class="separator:gab2e28b520b8f8fe5ff5626de2a4113d9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadf43d7b10268fb16127d1dc441bbd226"><td class="memItemLeft" align="right" valign="top"><a id="gadf43d7b10268fb16127d1dc441bbd226"></a>
 </td><td class="memItemRight" valign="bottom"><b>SSH_PACKET_CALLBACK</b> (ssh_request_success)</td></tr>
<tr class="separator:gadf43d7b10268fb16127d1dc441bbd226"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga8518f0b33a413a4b6d55d78816fb092d"><td class="memItemLeft" align="right" valign="top"><a id="ga8518f0b33a413a4b6d55d78816fb092d"></a>
 </td><td class="memItemRight" valign="bottom"><b>SSH_PACKET_CALLBACK</b> (ssh_request_denied)</td></tr>
<tr class="separator:ga8518f0b33a413a4b6d55d78816fb092d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga814cf8a82b4098b8994f9029fed572c0"><td class="memItemLeft" align="right" valign="top"><a id="ga814cf8a82b4098b8994f9029fed572c0"></a>
int </td><td class="memItemRight" valign="bottom"><b>ssh_global_request</b> (<a class="el" href="structssh__session__struct.html">ssh_session</a> session, const char *request, <a class="el" href="structssh__buffer__struct.html">ssh_buffer</a> buffer, int reply)</td></tr>
<tr class="separator:ga814cf8a82b4098b8994f9029fed572c0"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga758cda957227751870c8772df46e5b39"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga758cda957227751870c8772df46e5b39">ssh_channel_listen_forward</a> (<a class="el" href="structssh__session__struct.html">ssh_session</a> session, const char *address, int port, int *bound_port)</td></tr>
<tr class="memdesc:ga758cda957227751870c8772df46e5b39"><td class="mdescLeft"> </td><td class="mdescRight">Sends the "tcpip-forward" global request to ask the server to begin listening for inbound connections. <a href="#ga758cda957227751870c8772df46e5b39">More...</a><br /></td></tr>
<tr class="separator:ga758cda957227751870c8772df46e5b39"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga041a495f0230bb017cdf7459e6773664"><td class="memItemLeft" align="right" valign="top"><a id="ga041a495f0230bb017cdf7459e6773664"></a>
int </td><td class="memItemRight" valign="bottom"><b>ssh_forward_listen</b> (<a class="el" href="structssh__session__struct.html">ssh_session</a> session, const char *address, int port, int *bound_port)</td></tr>
<tr class="separator:ga041a495f0230bb017cdf7459e6773664"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga205d5ea76fb140075ebb1c20b8f193d3"><td class="memItemLeft" align="right" valign="top"><a id="ga205d5ea76fb140075ebb1c20b8f193d3"></a>
<a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td><td class="memItemRight" valign="bottom"><b>ssh_forward_accept</b> (<a class="el" href="structssh__session__struct.html">ssh_session</a> session, int timeout_ms)</td></tr>
<tr class="separator:ga205d5ea76fb140075ebb1c20b8f193d3"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga490e4b0a7adc022507b7f165b336afe4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga490e4b0a7adc022507b7f165b336afe4">ssh_channel_accept_forward</a> (<a class="el" href="structssh__session__struct.html">ssh_session</a> session, int timeout_ms, int *destination_port)</td></tr>
<tr class="memdesc:ga490e4b0a7adc022507b7f165b336afe4"><td class="mdescLeft"> </td><td class="mdescRight">Accept an incoming TCP/IP forwarding channel and get information about incomming connection. <a href="#ga490e4b0a7adc022507b7f165b336afe4">More...</a><br /></td></tr>
<tr class="separator:ga490e4b0a7adc022507b7f165b336afe4"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga3bff751afc5ecb5bbf9d6447e4e5370f"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga3bff751afc5ecb5bbf9d6447e4e5370f">ssh_channel_cancel_forward</a> (<a class="el" href="structssh__session__struct.html">ssh_session</a> session, const char *address, int port)</td></tr>
<tr class="memdesc:ga3bff751afc5ecb5bbf9d6447e4e5370f"><td class="mdescLeft"> </td><td class="mdescRight">Sends the "cancel-tcpip-forward" global request to ask the server to cancel the tcpip-forward request. <a href="#ga3bff751afc5ecb5bbf9d6447e4e5370f">More...</a><br /></td></tr>
<tr class="separator:ga3bff751afc5ecb5bbf9d6447e4e5370f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac474d071d80e725c8b5633cb1d35c010"><td class="memItemLeft" align="right" valign="top"><a id="gac474d071d80e725c8b5633cb1d35c010"></a>
int </td><td class="memItemRight" valign="bottom"><b>ssh_forward_cancel</b> (<a class="el" href="structssh__session__struct.html">ssh_session</a> session, const char *address, int port)</td></tr>
<tr class="separator:gac474d071d80e725c8b5633cb1d35c010"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga7aede2f9af4c494ff9e41fc08a4572f1"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga7aede2f9af4c494ff9e41fc08a4572f1">ssh_channel_request_env</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, const char *name, const char *value)</td></tr>
<tr class="memdesc:ga7aede2f9af4c494ff9e41fc08a4572f1"><td class="mdescLeft"> </td><td class="mdescRight">Set environment variables. <a href="#ga7aede2f9af4c494ff9e41fc08a4572f1">More...</a><br /></td></tr>
<tr class="separator:ga7aede2f9af4c494ff9e41fc08a4572f1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga567d509183ade0a77190f390e2b5747d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga567d509183ade0a77190f390e2b5747d">ssh_channel_request_exec</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, const char *cmd)</td></tr>
<tr class="memdesc:ga567d509183ade0a77190f390e2b5747d"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:gaa98315fca818b561970a6950683f4053"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaa98315fca818b561970a6950683f4053">ssh_channel_request_send_signal</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, const char *sig)</td></tr>
<tr class="memdesc:gaa98315fca818b561970a6950683f4053"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:gaef198ad0dcf0968aa2a449c8898d985e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaef198ad0dcf0968aa2a449c8898d985e">ssh_channel_request_send_break</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, uint32_t length)</td></tr>
<tr class="memdesc:gaef198ad0dcf0968aa2a449c8898d985e"><td class="mdescLeft"> </td><td class="mdescRight">Send a break signal to the server (as described in RFC 4335). <a href="#gaef198ad0dcf0968aa2a449c8898d985e">More...</a><br /></td></tr>
<tr class="separator:gaef198ad0dcf0968aa2a449c8898d985e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab391f5c978cb1bc8df3ebd061f38e8c5"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gab391f5c978cb1bc8df3ebd061f38e8c5">channel_read_buffer</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, <a class="el" href="structssh__buffer__struct.html">ssh_buffer</a> buffer, uint32_t count, int is_stderr)</td></tr>
<tr class="memdesc:gab391f5c978cb1bc8df3ebd061f38e8c5"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:gac92381c4c5d4a7eab35f6e84686f033d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gac92381c4c5d4a7eab35f6e84686f033d">ssh_channel_read</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, void *dest, uint32_t count, int is_stderr)</td></tr>
<tr class="memdesc:gac92381c4c5d4a7eab35f6e84686f033d"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga2f4e02cb3b3adbc30a534623164068fd"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga2f4e02cb3b3adbc30a534623164068fd">ssh_channel_read_timeout</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, void *dest, uint32_t count, int is_stderr, int timeout_ms)</td></tr>
<tr class="memdesc:ga2f4e02cb3b3adbc30a534623164068fd"><td class="mdescLeft"> </td><td class="mdescRight">Reads data from a channel. <a href="#ga2f4e02cb3b3adbc30a534623164068fd">More...</a><br /></td></tr>
<tr class="separator:ga2f4e02cb3b3adbc30a534623164068fd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaaca5a3fbe9839c3ffb37b746afc35f4c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gaaca5a3fbe9839c3ffb37b746afc35f4c">ssh_channel_read_nonblocking</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, void *dest, uint32_t count, int is_stderr)</td></tr>
<tr class="memdesc:gaaca5a3fbe9839c3ffb37b746afc35f4c"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga157f7d1df5de07ec6c6976e2034ba6e2"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga157f7d1df5de07ec6c6976e2034ba6e2">ssh_channel_poll</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, int is_stderr)</td></tr>
<tr class="memdesc:ga157f7d1df5de07ec6c6976e2034ba6e2"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:gab56c7b7959e4c23959f2989468811661"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gab56c7b7959e4c23959f2989468811661">ssh_channel_poll_timeout</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, int timeout, int is_stderr)</td></tr>
<tr class="memdesc:gab56c7b7959e4c23959f2989468811661"><td class="mdescLeft"> </td><td class="mdescRight">Polls a channel for data to read, waiting for a certain timeout. <a href="#gab56c7b7959e4c23959f2989468811661">More...</a><br /></td></tr>
<tr class="separator:gab56c7b7959e4c23959f2989468811661"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga747aa5315575aa7ac9d8367c7372d8dd"><td class="memItemLeft" align="right" valign="top"><a class="el" href="structssh__session__struct.html">ssh_session</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga747aa5315575aa7ac9d8367c7372d8dd">ssh_channel_get_session</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:ga747aa5315575aa7ac9d8367c7372d8dd"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga9eea019dd0bbaa8a817fff2c762d1a2d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga9eea019dd0bbaa8a817fff2c762d1a2d">ssh_channel_get_exit_status</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel)</td></tr>
<tr class="memdesc:ga9eea019dd0bbaa8a817fff2c762d1a2d"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:ga1026cfa48ecfc0b4898d4ea443acfc5d"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga1026cfa48ecfc0b4898d4ea443acfc5d">ssh_channel_select</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> *readchans, <a class="el" href="structssh__channel__struct.html">ssh_channel</a> *writechans, <a class="el" href="structssh__channel__struct.html">ssh_channel</a> *exceptchans, struct timeval *timeout)</td></tr>
<tr class="memdesc:ga1026cfa48ecfc0b4898d4ea443acfc5d"><td class="mdescLeft"> </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"> </td></tr>
<tr class="memitem:gab0649fe21b7a900b4a8e10ecb3401395"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gab0649fe21b7a900b4a8e10ecb3401395">ssh_channel_set_counter</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, <a class="el" href="structssh__counter__struct.html">ssh_counter</a> counter)</td></tr>
<tr class="memdesc:gab0649fe21b7a900b4a8e10ecb3401395"><td class="mdescLeft"> </td><td class="mdescRight">Set the channel data counter. <a href="#gab0649fe21b7a900b4a8e10ecb3401395">More...</a><br /></td></tr>
<tr class="separator:gab0649fe21b7a900b4a8e10ecb3401395"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga7ebd0ed490ee4485c6d5feb7d22bc162"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga7ebd0ed490ee4485c6d5feb7d22bc162">ssh_channel_write_stderr</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, const void *data, uint32_t len)</td></tr>
<tr class="memdesc:ga7ebd0ed490ee4485c6d5feb7d22bc162"><td class="mdescLeft"> </td><td class="mdescRight">Blocking write on a channel stderr. <a href="#ga7ebd0ed490ee4485c6d5feb7d22bc162">More...</a><br /></td></tr>
<tr class="separator:ga7ebd0ed490ee4485c6d5feb7d22bc162"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga9f66bf86a741ba17fe097dcb0594260e"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#ga9f66bf86a741ba17fe097dcb0594260e">ssh_channel_open_reverse_forward</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, const char *remotehost, int remoteport, const char *sourcehost, int localport)</td></tr>
<tr class="memdesc:ga9f66bf86a741ba17fe097dcb0594260e"><td class="mdescLeft"> </td><td class="mdescRight">Open a TCP/IP reverse forwarding channel. <a href="#ga9f66bf86a741ba17fe097dcb0594260e">More...</a><br /></td></tr>
<tr class="separator:ga9f66bf86a741ba17fe097dcb0594260e"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gae4aa2cb2a96cfe13712150517d6a90da"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gae4aa2cb2a96cfe13712150517d6a90da">ssh_channel_open_x11</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, const char *orig_addr, int orig_port)</td></tr>
<tr class="memdesc:gae4aa2cb2a96cfe13712150517d6a90da"><td class="mdescLeft"> </td><td class="mdescRight">Open a X11 channel. <a href="#gae4aa2cb2a96cfe13712150517d6a90da">More...</a><br /></td></tr>
<tr class="separator:gae4aa2cb2a96cfe13712150517d6a90da"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadc35e456e45b92c1e1da0fff8b6dfec9"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gadc35e456e45b92c1e1da0fff8b6dfec9">ssh_channel_request_send_exit_status</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, int exit_status)</td></tr>
<tr class="memdesc:gadc35e456e45b92c1e1da0fff8b6dfec9"><td class="mdescLeft"> </td><td class="mdescRight">Send the exit status to the remote process. <a href="#gadc35e456e45b92c1e1da0fff8b6dfec9">More...</a><br /></td></tr>
<tr class="separator:gadc35e456e45b92c1e1da0fff8b6dfec9"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gabd3a5c8ef800f6c6ffdcc5f62557434c"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__libssh__channel.html#gabd3a5c8ef800f6c6ffdcc5f62557434c">ssh_channel_request_send_exit_signal</a> (<a class="el" href="structssh__channel__struct.html">ssh_channel</a> channel, const char *sig, int core, const char *errmsg, const char *lang)</td></tr>
<tr class="memdesc:gabd3a5c8ef800f6c6ffdcc5f62557434c"><td class="mdescLeft"> </td><td class="mdescRight">Send an exit signal to remote process (RFC 4254, section 6.10). <a href="#gabd3a5c8ef800f6c6ffdcc5f62557434c">More...</a><br /></td></tr>
<tr class="separator:gabd3a5c8ef800f6c6ffdcc5f62557434c"><td class="memSeparator" colspan="2"> </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 id="gab391f5c978cb1bc8df3ebd061f38e8c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab391f5c978cb1bc8df3ebd061f38e8c5">◆ </a></span>channel_read_buffer()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int channel_read_buffer </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__buffer__struct.html">ssh_buffer</a> </td>
<td class="paramname"><em>buffer</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t </td>
<td class="paramname"><em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>is_stderr</em> </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#_deprecated000001">Deprecated:</a></b></dt><dd>Please use ssh_channel_read instead </dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This function doesn't work in nonblocking/timeout mode </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>
</div>
</div>
<a id="ga490e4b0a7adc022507b7f165b336afe4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga490e4b0a7adc022507b7f165b336afe4">◆ </a></span>ssh_channel_accept_forward()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> ssh_channel_accept_forward </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__session__struct.html">ssh_session</a> </td>
<td class="paramname"><em>session</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>timeout_ms</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>destination_port</em> </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 and get information about incomming connection. </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>
<tr><td class="paramdir">[in]</td><td class="paramname">destination_port</td><td>A pointer to destination port or NULL.</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>
</div>
</div>
<a id="ga548bd0f77a50b7c8180942544b375866"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga548bd0f77a50b7c8180942544b375866">◆ </a></span>ssh_channel_accept_x11()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> ssh_channel_accept_x11 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>timeout_ms</em> </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>
</div>
</div>
<a id="ga3bff751afc5ecb5bbf9d6447e4e5370f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3bff751afc5ecb5bbf9d6447e4e5370f">◆ </a></span>ssh_channel_cancel_forward()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_cancel_forward </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__session__struct.html">ssh_session</a> </td>
<td class="paramname"><em>session</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>port</em> </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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again. </dd></dl>
</div>
</div>
<a id="gaf5d55c90f3d98c583df23d21905c1127"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf5d55c90f3d98c583df23d21905c1127">◆ </a></span>ssh_channel_change_pty_size()</h2>
<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"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>cols</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>rows</em> </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 occurred.</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>
</div>
</div>
<a id="ga238f07e0455456a5bfd8a49ead917732"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga238f07e0455456a5bfd8a49ead917732">◆ </a></span>ssh_channel_close()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_close </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </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 occurred.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__libssh__channel.html#gad1417f9eae8928fed20faafe2d9dbfff" title="Close and free a channel. ">ssh_channel_free()</a> </dd>
<dd>
<a class="el" href="group__libssh__channel.html#gab535264029443d77214c0615a0788b0a" title="Check if remote has sent an EOF. ">ssh_channel_is_eof()</a> </dd></dl>
</div>
</div>
<a id="gad1417f9eae8928fed20faafe2d9dbfff"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gad1417f9eae8928fed20faafe2d9dbfff">◆ </a></span>ssh_channel_free()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_channel_free </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </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>
</div>
</div>
<a id="ga9eea019dd0bbaa8a817fff2c762d1a2d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9eea019dd0bbaa8a817fff2c762d1a2d">◆ </a></span>ssh_channel_get_exit_status()</h2>
<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"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </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 (yet), or SSH_ERROR on error. </dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>This function may block until a timeout (or never) if the other side is not willing to close the channel.</dd></dl>
<p>If you're looking for an async handling of this register a callback for the exit status.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__libssh__callbacks.html#ga6f834b43c812f871c7252bfbbb4ef6f4" title="SSH channel exit status callback. Called when a channel has received an exit status. ">ssh_channel_exit_status_callback</a> </dd></dl>
</div>
</div>
<a id="ga747aa5315575aa7ac9d8367c7372d8dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga747aa5315575aa7ac9d8367c7372d8dd">◆ </a></span>ssh_channel_get_session()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structssh__session__struct.html">ssh_session</a> ssh_channel_get_session </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </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 id="gab2720b44cb7f1dfe2b38ffe07c2f45c7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab2720b44cb7f1dfe2b38ffe07c2f45c7">◆ </a></span>ssh_channel_is_closed()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_is_closed </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </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><a class="el" href="group__libssh__channel.html#gaaafcda943c96ddb91e5c28c0bdee7045" title="Check if the channel is open or not. ">ssh_channel_is_open()</a> </dd></dl>
</div>
</div>
<a id="gab535264029443d77214c0615a0788b0a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab535264029443d77214c0615a0788b0a">◆ </a></span>ssh_channel_is_eof()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_is_eof </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </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>
</div>
</div>
<a id="gaaafcda943c96ddb91e5c28c0bdee7045"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaaafcda943c96ddb91e5c28c0bdee7045">◆ </a></span>ssh_channel_is_open()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_is_open </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </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><a class="el" href="group__libssh__channel.html#gab2720b44cb7f1dfe2b38ffe07c2f45c7" title="Check if the channel is closed or not. ">ssh_channel_is_closed()</a> </dd></dl>
</div>
</div>
<a id="ga758cda957227751870c8772df46e5b39"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga758cda957227751870c8772df46e5b39">◆ </a></span>ssh_channel_listen_forward()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_listen_forward </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__session__struct.html">ssh_session</a> </td>
<td class="paramname"><em>session</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>address</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>port</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int * </td>
<td class="paramname"><em>bound_port</em> </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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again. </dd></dl>
</div>
</div>
<a id="gada8ccda7bf65165fe145d3096a252dcc"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gada8ccda7bf65165fe145d3096a252dcc">◆ </a></span>ssh_channel_new()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> ssh_channel_new </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__session__struct.html">ssh_session</a> </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>
</div>
</div>
<a id="ga6c4d4f5436dd5be58973606c6bcd8bb4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga6c4d4f5436dd5be58973606c6bcd8bb4">◆ </a></span>ssh_channel_open_auth_agent()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_open_auth_agent </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Open an agent authentication forwarding channel. This type of channel can be opened by a server towards a client in order to provide SSH-Agent services to the server-side process. This channel can only be opened if the client claimed support by sending a channel request beforehand. </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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__libssh__channel.html#gae86b0704a1f2bdebb268b55567f7f47b" title="Open a TCP/IP forwarding channel. ">ssh_channel_open_forward()</a> </dd></dl>
</div>
</div>
<a id="gae86b0704a1f2bdebb268b55567f7f47b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae86b0704a1f2bdebb268b55567f7f47b">◆ </a></span>ssh_channel_open_forward()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_open_forward </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>remotehost</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>remoteport</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>sourcehost</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>localport</em> </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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.</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>
</div>
</div>
<a id="ga93ddd5055eb3322d38c70986aa63c673"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga93ddd5055eb3322d38c70986aa63c673">◆ </a></span>ssh_channel_open_forward_unix()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_open_forward_unix </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>remotepath</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>sourcehost</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>localport</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Open a TCP/IP - UNIX domain socket 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">remotepath</td><td>The UNIX socket path on the remote machine</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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.</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>
<dd>
Requires support of OpenSSH for UNIX domain socket forwarding. </dd></dl>
</div>
</div>
<a id="ga9f66bf86a741ba17fe097dcb0594260e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga9f66bf86a741ba17fe097dcb0594260e">◆ </a></span>ssh_channel_open_reverse_forward()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_open_reverse_forward </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>remotehost</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>remoteport</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>sourcehost</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>localport</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Open a TCP/IP reverse 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 source host (your local computer). It's optional and for logging purpose.</td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">localport</td><td>The source port (your local computer). It's optional and for logging purpose.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.</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>
</div>
</div>
<a id="gaf051dd30d75bf6dc45d1a5088cf970bd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf051dd30d75bf6dc45d1a5088cf970bd">◆ </a></span>ssh_channel_open_session()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_open_session </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__libssh__channel.html#gae86b0704a1f2bdebb268b55567f7f47b" title="Open a TCP/IP forwarding channel. ">ssh_channel_open_forward()</a> </dd>
<dd>
<a class="el" href="group__libssh__channel.html#ga7aede2f9af4c494ff9e41fc08a4572f1" title="Set environment variables. ">ssh_channel_request_env()</a> </dd>
<dd>
<a class="el" href="group__libssh__channel.html#gaed4c5fb30c9df2b2548421ccf4e81bf1" title="Request a shell. ">ssh_channel_request_shell()</a> </dd>
<dd>
<a class="el" href="group__libssh__channel.html#ga567d509183ade0a77190f390e2b5747d" title="Run a shell command without an interactive shell. ">ssh_channel_request_exec()</a> </dd></dl>
</div>
</div>
<a id="gae4aa2cb2a96cfe13712150517d6a90da"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gae4aa2cb2a96cfe13712150517d6a90da">◆ </a></span>ssh_channel_open_x11()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_open_x11 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>orig_addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>orig_port</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Open a X11 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">orig_addr</td><td>The source host (the local server).</td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">orig_port</td><td>The source port (the local server).</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again. </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>
</div>
</div>
<a id="ga157f7d1df5de07ec6c6976e2034ba6e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga157f7d1df5de07ec6c6976e2034ba6e2">◆ </a></span>ssh_channel_poll()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_poll </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>is_stderr</em> </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><a class="el" href="group__libssh__channel.html#gab535264029443d77214c0615a0788b0a" title="Check if remote has sent an EOF. ">ssh_channel_is_eof()</a> </dd></dl>
</div>
</div>
<a id="gab56c7b7959e4c23959f2989468811661"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab56c7b7959e4c23959f2989468811661">◆ </a></span>ssh_channel_poll_timeout()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_poll_timeout </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>timeout</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>is_stderr</em> </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, waiting for a certain timeout. </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">timeout</td><td>Set an upper limit on the time for which this function will block, in milliseconds. Specifying a negative value means an infinite timeout. This parameter is passed to the poll() function. </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 (timeout elapsed), SSH_EOF on end of file, 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><a class="el" href="group__libssh__channel.html#gab535264029443d77214c0615a0788b0a" title="Check if remote has sent an EOF. ">ssh_channel_is_eof()</a> </dd></dl>
</div>
</div>
<a id="gac92381c4c5d4a7eab35f6e84686f033d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac92381c4c5d4a7eab35f6e84686f033d">◆ </a></span>ssh_channel_read()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_read </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t </td>
<td class="paramname"><em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>is_stderr</em> </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. In nonblocking mode it Can return 0 if no data is available or SSH_AGAIN.</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>
</div>
</div>
<a id="gaaca5a3fbe9839c3ffb37b746afc35f4c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaaca5a3fbe9839c3ffb37b746afc35f4c">◆ </a></span>ssh_channel_read_nonblocking()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_read_nonblocking </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t </td>
<td class="paramname"><em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>is_stderr</em> </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 <= 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><a class="el" href="group__libssh__channel.html#gab535264029443d77214c0615a0788b0a" title="Check if remote has sent an EOF. ">ssh_channel_is_eof()</a> </dd></dl>
</div>
</div>
<a id="ga2f4e02cb3b3adbc30a534623164068fd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2f4e02cb3b3adbc30a534623164068fd">◆ </a></span>ssh_channel_read_timeout()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_read_timeout </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">void * </td>
<td class="paramname"><em>dest</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t </td>
<td class="paramname"><em>count</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>is_stderr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>timeout_ms</em> </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>
<tr><td class="paramdir">[in]</td><td class="paramname">timeout_ms</td><td>A timeout in milliseconds. A value of -1 means infinite timeout.</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. In nonblocking mode it Can return 0 if no data is available or SSH_AGAIN.</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>
</div>
</div>
<a id="gab2e28b520b8f8fe5ff5626de2a4113d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab2e28b520b8f8fe5ff5626de2a4113d9">◆ </a></span>ssh_channel_request_auth_agent()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_request_auth_agent </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send an "auth-agent-req" channel request over an existing session channel. </p>
<p>This client-side request will enable forwarding the agent over an secure tunnel. When the server is ready to open one authentication agent channel, an ssh_channel_open_request_auth_agent_callback event will be generated.</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>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success, SSH_ERROR if an error occurred </dd></dl>
</div>
</div>
<a id="ga7aede2f9af4c494ff9e41fc08a4572f1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7aede2f9af4c494ff9e41fc08a4572f1">◆ </a></span>ssh_channel_request_env()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_request_env </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>name</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </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 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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again. </dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>Some environment variables may be refused by security reasons. </dd></dl>
</div>
</div>
<a id="ga567d509183ade0a77190f390e2b5747d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga567d509183ade0a77190f390e2b5747d">◆ </a></span>ssh_channel_request_exec()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_request_exec </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>cmd</em> </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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.</dd></dl>
<p>Example: </p><div class="fragment"><div class="line">rc = <a class="code" href="group__libssh__channel.html#ga567d509183ade0a77190f390e2b5747d">ssh_channel_request_exec</a>(channel, <span class="stringliteral">"ps aux"</span>);</div><div class="line"><span class="keywordflow">if</span> (rc > 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 = <a class="code" href="group__libssh__channel.html#gac92381c4c5d4a7eab35f6e84686f033d">ssh_channel_read</a>(channel, buffer, <span class="keyword">sizeof</span>(buffer), 0)) > 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><a class="el" href="group__libssh__channel.html#gaed4c5fb30c9df2b2548421ccf4e81bf1" title="Request a shell. ">ssh_channel_request_shell()</a> </dd></dl>
</div>
</div>
<a id="ga37c1cec33fe5a2f184768aba52e3a0db"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga37c1cec33fe5a2f184768aba52e3a0db">◆ </a></span>ssh_channel_request_pty()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_request_pty </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.</dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__libssh__channel.html#gabb175414352256e1602286e0ab50886c" title="Request a pty with a specific type and size. ">ssh_channel_request_pty_size()</a> </dd></dl>
</div>
</div>
<a id="gabb175414352256e1602286e0ab50886c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabb175414352256e1602286e0ab50886c">◆ </a></span>ssh_channel_request_pty_size()</h2>
<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"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>terminal</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>col</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>row</em> </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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again. </dd></dl>
</div>
</div>
<a id="gaef198ad0dcf0968aa2a449c8898d985e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaef198ad0dcf0968aa2a449c8898d985e">◆ </a></span>ssh_channel_request_send_break()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_request_send_break </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t </td>
<td class="paramname"><em>length</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a break signal to the server (as described in RFC 4335). </p>
<p>Sends a break signal to the remote process. Note, that remote system may not support breaks. In such a case this request will be silently ignored. Only SSH-v2 is supported.</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 break to.</td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">length</td><td>The break-length in milliseconds to send.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success, SSH_ERROR if an error occurred (including attempts to send signal via SSH-v1 session). </dd></dl>
</div>
</div>
<a id="gabd3a5c8ef800f6c6ffdcc5f62557434c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabd3a5c8ef800f6c6ffdcc5f62557434c">◆ </a></span>ssh_channel_request_send_exit_signal()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_request_send_exit_signal </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>sig</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>core</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>errmsg</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>lang</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send an exit signal to remote process (RFC 4254, section 6.10). </p>
<p>This sends the exit status of 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>
<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) (e.g. "TERM" or "KILL"). </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">core</td><td>A boolean to tell if a core was dumped </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">errmsg</td><td>A CRLF explanation text about the error condition </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">lang</td><td>The language used in the message (format: RFC 3066)</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success, SSH_ERROR if an error occurred (including attempts to send signal via SSH-v1 session). </dd></dl>
</div>
</div>
<a id="gadc35e456e45b92c1e1da0fff8b6dfec9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadc35e456e45b92c1e1da0fff8b6dfec9">◆ </a></span>ssh_channel_request_send_exit_status()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_request_send_exit_status </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>exit_status</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Send the exit status to the remote process. </p>
<p>Sends the exit status to the remote process (as described in RFC 4254, section 6.10). Only SSH-v2 is supported (I'm not sure about SSH-v1).</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 exit status.</td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">exit_status</td><td>The exit status to send</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success, SSH_ERROR if an error occurred. (including attempts to send exit status via SSH-v1 session). </dd></dl>
</div>
</div>
<a id="gaa98315fca818b561970a6950683f4053"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaa98315fca818b561970a6950683f4053">◆ </a></span>ssh_channel_request_send_signal()</h2>
<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"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>sig</em> </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 -> ABRT <br />
SIGALRM -> ALRM <br />
SIGFPE -> FPE <br />
SIGHUP -> HUP <br />
SIGILL -> ILL <br />
SIGINT -> INT <br />
SIGKILL -> KILL <br />
SIGPIPE -> PIPE <br />
SIGQUIT -> QUIT <br />
SIGSEGV -> SEGV <br />
SIGTERM -> TERM <br />
SIGUSR1 -> USR1 <br />
SIGUSR2 -> USR2 <br />
</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success, SSH_ERROR if an error occurred (including attempts to send signal via SSH-v1 session). </dd></dl>
</div>
</div>
<a id="ga3d2a402cddd799036006294eb61649fe"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga3d2a402cddd799036006294eb61649fe">◆ </a></span>ssh_channel_request_sftp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_request_sftp </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Request sftp subsystem on the 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 request the sftp subsystem.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>You should use <a class="el" href="group__libssh__sftp.html#gae84eeb5a1af9d49db10f17a060151e97" title="Creates a new sftp session. ">sftp_new()</a> which does this for you. </dd></dl>
</div>
</div>
<a id="gaed4c5fb30c9df2b2548421ccf4e81bf1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaed4c5fb30c9df2b2548421ccf4e81bf1">◆ </a></span>ssh_channel_request_shell()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_request_shell </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again. </dd></dl>
</div>
</div>
<a id="ga06024b070f9b2a3d6964b79ae36695b7"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga06024b070f9b2a3d6964b79ae36695b7">◆ </a></span>ssh_channel_request_subsystem()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_request_subsystem </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>subsys</em> </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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.</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#gae84eeb5a1af9d49db10f17a060151e97" title="Creates a new sftp session. ">sftp_new()</a>. </dd></dl>
</div>
</div>
<a id="gadfa34624c28164bd73453cd04aa64c1f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadfa34624c28164bd73453cd04aa64c1f">◆ </a></span>ssh_channel_request_x11()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_request_x11 </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>single_connection</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>protocol</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const char * </td>
<td class="paramname"><em>cookie</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int </td>
<td class="paramname"><em>screen_number</em> </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 occurred, SSH_AGAIN if in nonblocking mode and call has to be done again. </dd></dl>
</div>
</div>
<a id="ga1026cfa48ecfc0b4898d4ea443acfc5d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1026cfa48ecfc0b4898d4ea443acfc5d">◆ </a></span>ssh_channel_select()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_select </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> * </td>
<td class="paramname"><em>readchans</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> * </td>
<td class="paramname"><em>writechans</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> * </td>
<td class="paramname"><em>exceptchans</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">struct timeval * </td>
<td class="paramname"><em>timeout</em> </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, or SSH_ERROR on error. </dd></dl>
</div>
</div>
<a id="ga072f82fdf3e50514f747653af2c99004"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga072f82fdf3e50514f747653af2c99004">◆ </a></span>ssh_channel_send_eof()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_send_eof </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </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 occurred.</dd></dl>
<p>Example: </p><div class="fragment"><div class="line">rc = <a class="code" href="group__libssh__channel.html#ga072f82fdf3e50514f747653af2c99004">ssh_channel_send_eof</a>(channel);</div><div class="line"><span class="keywordflow">if</span> (rc == SSH_ERROR) {</div><div class="line"> <span class="keywordflow">return</span> -1;</div><div class="line">}</div><div class="line"><span class="keywordflow">while</span>(!<a class="code" href="group__libssh__channel.html#gab535264029443d77214c0615a0788b0a">ssh_channel_is_eof</a>(channel)) {</div><div class="line"> rc = <a class="code" href="group__libssh__channel.html#gac92381c4c5d4a7eab35f6e84686f033d">ssh_channel_read</a>(channel, buf, <span class="keyword">sizeof</span>(buf), 0);</div><div class="line"> <span class="keywordflow">if</span> (rc == SSH_ERROR) {</div><div class="line"> <span class="keywordflow">return</span> -1;</div><div class="line"> }</div><div class="line">}</div><div class="line"><a class="code" href="group__libssh__channel.html#ga238f07e0455456a5bfd8a49ead917732">ssh_channel_close</a>(channel);</div></div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="group__libssh__channel.html#ga238f07e0455456a5bfd8a49ead917732" title="Close a channel. ">ssh_channel_close()</a> </dd>
<dd>
<a class="el" href="group__libssh__channel.html#gad1417f9eae8928fed20faafe2d9dbfff" title="Close and free a channel. ">ssh_channel_free()</a> </dd>
<dd>
<a class="el" href="group__libssh__channel.html#gab535264029443d77214c0615a0788b0a" title="Check if remote has sent an EOF. ">ssh_channel_is_eof()</a> </dd></dl>
</div>
</div>
<a id="ga1c00ed18679d9a8c5b971260b5df13a2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga1c00ed18679d9a8c5b971260b5df13a2">◆ </a></span>ssh_channel_set_blocking()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_channel_set_blocking </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</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>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="section warning"><dt>Warning</dt><dd>A side-effect of this is to put the whole session in non-blocking mode. </dd></dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__libssh__session.html#ga2a29cff08855611be84d050e5bec73bc" title="Set the session in blocking/nonblocking mode. ">ssh_set_blocking()</a> </dd></dl>
</div>
</div>
<a id="gab0649fe21b7a900b4a8e10ecb3401395"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab0649fe21b7a900b4a8e10ecb3401395">◆ </a></span>ssh_channel_set_counter()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void ssh_channel_set_counter </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="structssh__counter__struct.html">ssh_counter</a> </td>
<td class="paramname"><em>counter</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Set the channel data counter. </p>
<div class="fragment"><div class="line"><span class="keyword">struct </span><a class="code" href="structssh__counter__struct.html">ssh_counter_struct</a> counter = {</div><div class="line"> .in_bytes = 0,</div><div class="line"> .out_bytes = 0,</div><div class="line"> .in_packets = 0,</div><div class="line"> .out_packets = 0</div><div class="line">};</div><div class="line"></div><div class="line"><a class="code" href="group__libssh__channel.html#gab0649fe21b7a900b4a8e10ecb3401395">ssh_channel_set_counter</a>(channel, &counter);</div></div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">channel</td><td>The SSH channel.</td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">counter</td><td>Counter for bytes handled by the channel. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="gadf53c5a5b501086af26d06cba3f1491f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadf53c5a5b501086af26d06cba3f1491f">◆ </a></span>ssh_channel_window_size()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint32_t ssh_channel_window_size </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the remote window size. </p>
<p>This is the maximum amounts of bytes the remote side expects us to send before growing the window again.</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 query.</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>The remote window size</dd></dl>
<dl class="section warning"><dt>Warning</dt><dd>A nonzero return value does not guarantee the socket is ready to send that much data. Buffering may happen in the local SSH packet buffer, so beware of really big window sizes.</dd>
<dd>
A zero return value means ssh_channel_write (default settings) will block until the window grows back. </dd></dl>
</div>
</div>
<a id="ga5d658df773ba854b35ff9f905341e2fb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5d658df773ba854b35ff9f905341e2fb">◆ </a></span>ssh_channel_write()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_write </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t </td>
<td class="paramname"><em>len</em> </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><a class="el" href="group__libssh__channel.html#gac92381c4c5d4a7eab35f6e84686f033d" title="Reads data from a channel. ">ssh_channel_read()</a> </dd></dl>
</div>
</div>
<a id="ga7ebd0ed490ee4485c6d5feb7d22bc162"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7ebd0ed490ee4485c6d5feb7d22bc162">◆ </a></span>ssh_channel_write_stderr()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int ssh_channel_write_stderr </td>
<td>(</td>
<td class="paramtype"><a class="el" href="structssh__channel__struct.html">ssh_channel</a> </td>
<td class="paramname"><em>channel</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const void * </td>
<td class="paramname"><em>data</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">uint32_t </td>
<td class="paramname"><em>len</em> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Blocking write on a channel stderr. </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><a class="el" href="group__libssh__channel.html#gac92381c4c5d4a7eab35f6e84686f033d" title="Reads data from a channel. ">ssh_channel_read()</a> </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.14
</small></address>
</body>
</html>