libssh  0.8.3
The SSH library
Data Structures | Functions
The SSH channel functions
Collaboration diagram for The SSH channel functions:

Data Structures

struct  ssh_channel_read_termination_struct
 

Functions

ssh_channel ssh_channel_new (ssh_session session)
 Allocate a new channel. More...
 
uint32_t ssh_channel_new_id (ssh_session session)
 
 SSH_PACKET_CALLBACK (ssh_packet_channel_open_conf)
 
 SSH_PACKET_CALLBACK (ssh_packet_channel_open_fail)
 
ssh_channel ssh_channel_from_local (ssh_session session, uint32_t id)
 
 SSH_PACKET_CALLBACK (channel_rcv_change_window)
 
 SSH_PACKET_CALLBACK (channel_rcv_data)
 
 SSH_PACKET_CALLBACK (channel_rcv_eof)
 
 SSH_PACKET_CALLBACK (channel_rcv_close)
 
 SSH_PACKET_CALLBACK (channel_rcv_request)
 
int channel_default_bufferize (ssh_channel channel, void *data, int len, int is_stderr)
 
int ssh_channel_open_session (ssh_channel channel)
 Open a session channel (suited for a shell, not TCP forwarding). More...
 
int ssh_channel_open_auth_agent (ssh_channel channel)
 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. More...
 
int ssh_channel_open_forward (ssh_channel channel, const char *remotehost, int remoteport, const char *sourcehost, int localport)
 Open a TCP/IP forwarding channel. More...
 
void ssh_channel_free (ssh_channel channel)
 Close and free a channel. More...
 
void ssh_channel_do_free (ssh_channel channel)
 
int ssh_channel_send_eof (ssh_channel channel)
 Send an end of file on the channel. More...
 
int ssh_channel_close (ssh_channel channel)
 Close a channel. More...
 
int ssh_channel_flush (ssh_channel channel)
 
uint32_t ssh_channel_window_size (ssh_channel channel)
 Get the remote window size. More...
 
int ssh_channel_write (ssh_channel channel, const void *data, uint32_t len)
 Blocking write on a channel. More...
 
int ssh_channel_is_open (ssh_channel channel)
 Check if the channel is open or not. More...
 
int ssh_channel_is_closed (ssh_channel channel)
 Check if the channel is closed or not. More...
 
int ssh_channel_is_eof (ssh_channel channel)
 Check if remote has sent an EOF. More...
 
void ssh_channel_set_blocking (ssh_channel channel, int blocking)
 Put the channel into blocking or nonblocking mode. More...
 
 SSH_PACKET_CALLBACK (ssh_packet_channel_success)
 
 SSH_PACKET_CALLBACK (ssh_packet_channel_failure)
 
int ssh_channel_request_pty_size (ssh_channel channel, const char *terminal, int col, int row)
 Request a pty with a specific type and size. More...
 
int ssh_channel_request_pty (ssh_channel channel)
 Request a PTY. More...
 
int ssh_channel_change_pty_size (ssh_channel channel, int cols, int rows)
 Change the size of the terminal associated to a channel. More...
 
int ssh_channel_request_shell (ssh_channel channel)
 Request a shell. More...
 
int ssh_channel_request_subsystem (ssh_channel channel, const char *subsys)
 Request a subsystem (for example "sftp"). More...
 
int ssh_channel_request_sftp (ssh_channel channel)
 
int ssh_channel_request_x11 (ssh_channel channel, int single_connection, const char *protocol, const char *cookie, int screen_number)
 Sends the "x11-req" channel request over an existing session channel. More...
 
ssh_channel ssh_channel_accept_x11 (ssh_channel channel, int timeout_ms)
 Accept an X11 forwarding channel. More...
 
int ssh_channel_request_auth_agent (ssh_channel channel)
 Send an "auth-agent-req" channel request over an existing session channel. More...
 
 SSH_PACKET_CALLBACK (ssh_request_success)
 
 SSH_PACKET_CALLBACK (ssh_request_denied)
 
int ssh_channel_listen_forward (ssh_session session, const char *address, int port, int *bound_port)
 Sends the "tcpip-forward" global request to ask the server to begin listening for inbound connections. More...
 
int ssh_forward_listen (ssh_session session, const char *address, int port, int *bound_port)
 
ssh_channel ssh_forward_accept (ssh_session session, int timeout_ms)
 
ssh_channel ssh_channel_accept_forward (ssh_session session, int timeout_ms, int *destination_port)
 Accept an incoming TCP/IP forwarding channel and get information about incomming connection. More...
 
int ssh_channel_cancel_forward (ssh_session session, const char *address, int port)
 Sends the "cancel-tcpip-forward" global request to ask the server to cancel the tcpip-forward request. More...
 
int ssh_forward_cancel (ssh_session session, const char *address, int port)
 
int ssh_channel_request_env (ssh_channel channel, const char *name, const char *value)
 Set environment variables. More...
 
int ssh_channel_request_exec (ssh_channel channel, const char *cmd)
 Run a shell command without an interactive shell. More...
 
int ssh_channel_request_send_signal (ssh_channel channel, const char *sig)
 Send a signal to remote process (as described in RFC 4254, section 6.9). More...
 
int ssh_channel_request_send_break (ssh_channel channel, uint32_t length)
 Send a break signal to the server (as described in RFC 4335). More...
 
int channel_read_buffer (ssh_channel channel, ssh_buffer buffer, uint32_t count, int is_stderr)
 Read data from a channel into a buffer. More...
 
int ssh_channel_read (ssh_channel channel, void *dest, uint32_t count, int is_stderr)
 Reads data from a channel. More...
 
int ssh_channel_read_timeout (ssh_channel channel, void *dest, uint32_t count, int is_stderr, int timeout_ms)
 Reads data from a channel. More...
 
int ssh_channel_read_nonblocking (ssh_channel channel, void *dest, uint32_t count, int is_stderr)
 Do a nonblocking read on the channel. More...
 
int ssh_channel_poll (ssh_channel channel, int is_stderr)
 Polls a channel for data to read. More...
 
int ssh_channel_poll_timeout (ssh_channel channel, int timeout, int is_stderr)
 Polls a channel for data to read, waiting for a certain timeout. More...
 
ssh_session ssh_channel_get_session (ssh_channel channel)
 Recover the session in which belongs a channel. More...
 
int ssh_channel_get_exit_status (ssh_channel channel)
 Get the exit status of the channel (error code from the executed instruction). More...
 
int ssh_channel_select (ssh_channel *readchans, ssh_channel *writechans, ssh_channel *exceptchans, struct timeval *timeout)
 Act like the standard select(2) on channels. More...
 
void ssh_channel_set_counter (ssh_channel channel, ssh_counter counter)
 Set the channel data counter. More...
 
int ssh_channel_write_stderr (ssh_channel channel, const void *data, uint32_t len)
 Blocking write on a channel stderr. More...
 

Detailed Description

Functions that manage a SSH channel.

Function Documentation

◆ channel_read_buffer()

int channel_read_buffer ( ssh_channel  channel,
ssh_buffer  buffer,
uint32_t  count,
int  is_stderr 
)

Read data from a channel into a buffer.

Parameters
[in]channelThe channel to read from.
[in]bufferThe buffer which will get the data.
[in]countThe 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.
is_stderrA boolean value to mark reading from the stderr stream.
Returns
The number of bytes read, 0 on end of file or SSH_ERROR on error.
Deprecated:
Please use ssh_channel_read instead
Warning
This function doesn't work in nonblocking/timeout mode
See also
ssh_channel_read

◆ ssh_channel_accept_forward()

ssh_channel ssh_channel_accept_forward ( ssh_session  session,
int  timeout_ms,
int *  destination_port 
)

Accept an incoming TCP/IP forwarding channel and get information about incomming connection.

Parameters
[in]sessionThe ssh session to use.
[in]timeout_msA timeout in milliseconds.
[in]destination_portA pointer to destination port or NULL.
Returns
Newly created channel, or NULL if no incoming channel request from the server

◆ ssh_channel_accept_x11()

ssh_channel ssh_channel_accept_x11 ( ssh_channel  channel,
int  timeout_ms 
)

Accept an X11 forwarding channel.

Parameters
[in]channelAn x11-enabled session channel.
[in]timeout_msTimeout in milliseconds.
Returns
A newly created channel, or NULL if no X11 request from the server.

◆ ssh_channel_cancel_forward()

int ssh_channel_cancel_forward ( ssh_session  session,
const char *  address,
int  port 
)

Sends the "cancel-tcpip-forward" global request to ask the server to cancel the tcpip-forward request.

Parameters
[in]sessionThe ssh session to send the request.
[in]addressThe bound address on the server.
[in]portThe bound port on the server.
Returns
SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.

◆ ssh_channel_change_pty_size()

int ssh_channel_change_pty_size ( ssh_channel  channel,
int  cols,
int  rows 
)

Change the size of the terminal associated to a channel.

Parameters
[in]channelThe channel to change the size.
[in]colsThe new number of columns.
[in]rowsThe new number of rows.
Returns
SSH_OK on success, SSH_ERROR if an error occurred.
Warning
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).

◆ ssh_channel_close()

int ssh_channel_close ( ssh_channel  channel)

Close a channel.

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.

Parameters
[in]channelThe channel to close.
Returns
SSH_OK on success, SSH_ERROR if an error occurred.
See also
ssh_channel_free()
ssh_channel_is_eof()

◆ ssh_channel_free()

void ssh_channel_free ( ssh_channel  channel)

Close and free a channel.

Parameters
[in]channelThe channel to free.
Warning
Any data unread on this channel will be lost.

◆ ssh_channel_get_exit_status()

int ssh_channel_get_exit_status ( ssh_channel  channel)

Get the exit status of the channel (error code from the executed instruction).

Parameters
[in]channelThe channel to get the status from.
Returns
The exit status, -1 if no exit status has been returned (yet).
Warning
This function may block until a timeout (or never) if the other side is not willing to close the channel.

If you're looking for an async handling of this register a callback for the exit status.

See also
ssh_channel_exit_status_callback

◆ ssh_channel_get_session()

ssh_session ssh_channel_get_session ( ssh_channel  channel)

Recover the session in which belongs a channel.

Parameters
[in]channelThe channel to recover the session from.
Returns
The session pointer.

◆ ssh_channel_is_closed()

int ssh_channel_is_closed ( ssh_channel  channel)

Check if the channel is closed or not.

Parameters
[in]channelThe channel to check.
Returns
0 if channel is opened, nonzero otherwise.
See also
ssh_channel_is_open()

◆ ssh_channel_is_eof()

int ssh_channel_is_eof ( ssh_channel  channel)

Check if remote has sent an EOF.

Parameters
[in]channelThe channel to check.
Returns
0 if there is no EOF, nonzero otherwise.

◆ ssh_channel_is_open()

int ssh_channel_is_open ( ssh_channel  channel)

Check if the channel is open or not.

Parameters
[in]channelThe channel to check.
Returns
0 if channel is closed, nonzero otherwise.
See also
ssh_channel_is_closed()

◆ ssh_channel_listen_forward()

int ssh_channel_listen_forward ( ssh_session  session,
const char *  address,
int  port,
int *  bound_port 
)

Sends the "tcpip-forward" global request to ask the server to begin listening for inbound connections.

Parameters
[in]sessionThe ssh session to send the request.
[in]addressThe address to bind to on the server. Pass NULL to bind to all available addresses on all protocol families supported by the server.
[in]portThe port to bind to on the server. Pass 0 to ask the server to allocate the next available unprivileged port number
[in]bound_portThe pointer to get actual bound port. Pass NULL to ignore.
Returns
SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.

◆ ssh_channel_new()

ssh_channel ssh_channel_new ( ssh_session  session)

Allocate a new channel.

Parameters
[in]sessionThe ssh session to use.
Returns
A pointer to a newly allocated channel, NULL on error.

◆ ssh_channel_open_auth_agent()

int ssh_channel_open_auth_agent ( ssh_channel  channel)

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.

Parameters
[in]channelAn allocated channel.
Returns
SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.
See also
ssh_channel_open_forward()

◆ ssh_channel_open_forward()

int ssh_channel_open_forward ( ssh_channel  channel,
const char *  remotehost,
int  remoteport,
const char *  sourcehost,
int  localport 
)

Open a TCP/IP forwarding channel.

Parameters
[in]channelAn allocated channel.
[in]remotehostThe remote host to connected (host name or IP).
[in]remoteportThe remote port.
[in]sourcehostThe numeric IP address of the machine from where the connection request originates. This is mostly for logging purposes.
[in]localportThe port on the host from where the connection originated. This is mostly for logging purposes.
Returns
SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.
Warning
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.

◆ ssh_channel_open_session()

int ssh_channel_open_session ( ssh_channel  channel)

Open a session channel (suited for a shell, not TCP forwarding).

Parameters
[in]channelAn allocated channel.
Returns
SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.
See also
ssh_channel_open_forward()
ssh_channel_request_env()
ssh_channel_request_shell()
ssh_channel_request_exec()

◆ ssh_channel_poll()

int ssh_channel_poll ( ssh_channel  channel,
int  is_stderr 
)

Polls a channel for data to read.

Parameters
[in]channelThe channel to poll.
[in]is_stderrA boolean to select the stderr stream.
Returns
The number of bytes available for reading, 0 if nothing is available or SSH_ERROR on error.
Warning
When the channel is in EOF state, the function returns SSH_EOF.
See also
ssh_channel_is_eof()

◆ ssh_channel_poll_timeout()

int ssh_channel_poll_timeout ( ssh_channel  channel,
int  timeout,
int  is_stderr 
)

Polls a channel for data to read, waiting for a certain timeout.

Parameters
[in]channelThe channel to poll.
[in]timeoutSet 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.
[in]is_stderrA boolean to select the stderr stream.
Returns
The number of bytes available for reading, 0 if nothing is available (timeout elapsed), SSH_EOF on end of file, SSH_ERROR on error.
Warning
When the channel is in EOF state, the function returns SSH_EOF.
See also
ssh_channel_is_eof()

◆ ssh_channel_read()

int ssh_channel_read ( ssh_channel  channel,
void *  dest,
uint32_t  count,
int  is_stderr 
)

Reads data from a channel.

Parameters
[in]channelThe channel to read from.
[in]destThe destination buffer which will get the data.
[in]countThe count of bytes to be read.
[in]is_stderrA boolean value to mark reading from the stderr flow.
Returns
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.
Warning
This function may return less than count bytes of data, and won't block until count bytes have been read.
The read function using a buffer has been renamed to channel_read_buffer().

◆ ssh_channel_read_nonblocking()

int ssh_channel_read_nonblocking ( ssh_channel  channel,
void *  dest,
uint32_t  count,
int  is_stderr 
)

Do a nonblocking read on the channel.

A nonblocking read on the specified channel. it will return <= count bytes of data read atomically.

Parameters
[in]channelThe channel to read from.
[in]destA pointer to a destination buffer.
[in]countThe count of bytes of data to be read.
[in]is_stderrA boolean to select the stderr stream.
Returns
The number of bytes read, 0 if nothing is available or SSH_ERROR on error.
Warning
Don't forget to check for EOF as it would return 0 here.
See also
ssh_channel_is_eof()

◆ ssh_channel_read_timeout()

int ssh_channel_read_timeout ( ssh_channel  channel,
void *  dest,
uint32_t  count,
int  is_stderr,
int  timeout_ms 
)

Reads data from a channel.

Parameters
[in]channelThe channel to read from.
[in]destThe destination buffer which will get the data.
[in]countThe count of bytes to be read.
[in]is_stderrA boolean value to mark reading from the stderr flow.
[in]timeout_msA timeout in milliseconds. A value of -1 means infinite timeout.
Returns
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.
Warning
This function may return less than count bytes of data, and won't block until count bytes have been read.
The read function using a buffer has been renamed to channel_read_buffer().

◆ ssh_channel_request_auth_agent()

int ssh_channel_request_auth_agent ( ssh_channel  channel)

Send an "auth-agent-req" channel request over an existing session channel.

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.

Parameters
[in]channelThe channel to send signal.
Returns
SSH_OK on success, SSH_ERROR if an error occurred

◆ ssh_channel_request_env()

int ssh_channel_request_env ( ssh_channel  channel,
const char *  name,
const char *  value 
)

Set environment variables.

Parameters
[in]channelThe channel to set the environment variables.
[in]nameThe name of the variable.
[in]valueThe value to set.
Returns
SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.
Warning
Some environment variables may be refused by security reasons.

◆ ssh_channel_request_exec()

int ssh_channel_request_exec ( ssh_channel  channel,
const char *  cmd 
)

Run a shell command without an interactive shell.

This is similar to 'sh -c command'.

Parameters
[in]channelThe channel to execute the command.
[in]cmdThe command to execute (e.g. "ls ~/ -al | grep -i reports").
Returns
SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.

Example:

rc = channel_request_exec(channel, "ps aux");
if (rc > 0) {
return -1;
}
while ((rc = channel_read(channel, buffer, sizeof(buffer), 0)) > 0) {
if (fwrite(buffer, 1, rc, stdout) != (unsigned int) rc) {
return -1;
}
}
See also
ssh_channel_request_shell()

◆ ssh_channel_request_pty()

int ssh_channel_request_pty ( ssh_channel  channel)

Request a PTY.

Parameters
[in]channelThe channel to send the request.
Returns
SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.
See also
ssh_channel_request_pty_size()

◆ ssh_channel_request_pty_size()

int ssh_channel_request_pty_size ( ssh_channel  channel,
const char *  terminal,
int  col,
int  row 
)

Request a pty with a specific type and size.

Parameters
[in]channelThe channel to sent the request.
[in]terminalThe terminal type ("vt100, xterm,...").
[in]colThe number of columns.
[in]rowThe number of rows.
Returns
SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.

◆ ssh_channel_request_send_break()

int ssh_channel_request_send_break ( ssh_channel  channel,
uint32_t  length 
)

Send a break signal to the server (as described in RFC 4335).

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.

Parameters
[in]channelThe channel to send the break to.
[in]lengthThe break-length in milliseconds to send.
Returns
SSH_OK on success, SSH_ERROR if an error occurred (including attempts to send signal via SSH-v1 session).

◆ ssh_channel_request_send_signal()

int ssh_channel_request_send_signal ( ssh_channel  channel,
const char *  sig 
)

Send a signal to remote process (as described in RFC 4254, section 6.9).

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).

OpenSSH doesn't support signals yet, see: https://bugzilla.mindrot.org/show_bug.cgi?id=1424

Parameters
[in]channelThe channel to send signal.
[in]sigThe signal to send (without SIG prefix)

SIGABRT -> ABRT
SIGALRM -> ALRM
SIGFPE -> FPE
SIGHUP -> HUP
SIGILL -> ILL
SIGINT -> INT
SIGKILL -> KILL
SIGPIPE -> PIPE
SIGQUIT -> QUIT
SIGSEGV -> SEGV
SIGTERM -> TERM
SIGUSR1 -> USR1
SIGUSR2 -> USR2
Returns
SSH_OK on success, SSH_ERROR if an error occurred (including attempts to send signal via SSH-v1 session).

◆ ssh_channel_request_shell()

int ssh_channel_request_shell ( ssh_channel  channel)

Request a shell.

Parameters
[in]channelThe channel to send the request.
Returns
SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.

◆ ssh_channel_request_subsystem()

int ssh_channel_request_subsystem ( ssh_channel  channel,
const char *  subsys 
)

Request a subsystem (for example "sftp").

Parameters
[in]channelThe channel to send the request.
[in]subsysThe subsystem to request (for example "sftp").
Returns
SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.
Warning
You normally don't have to call it for sftp, see sftp_new().

◆ ssh_channel_request_x11()

int ssh_channel_request_x11 ( ssh_channel  channel,
int  single_connection,
const char *  protocol,
const char *  cookie,
int  screen_number 
)

Sends the "x11-req" channel request over an existing session channel.

This will enable redirecting the display of the remote X11 applications to local X server over an secure tunnel.

Parameters
[in]channelAn existing session channel where the remote X11 applications are going to be executed.
[in]single_connectionA boolean to mark only one X11 app will be redirected.
[in]protocolA x11 authentication protocol. Pass NULL to use the default value MIT-MAGIC-COOKIE-1.
[in]cookieA x11 authentication cookie. Pass NULL to generate a random cookie.
[in]screen_numberThe screen number.
Returns
SSH_OK on success, SSH_ERROR if an error occurred, SSH_AGAIN if in nonblocking mode and call has to be done again.

◆ ssh_channel_select()

int ssh_channel_select ( ssh_channel readchans,
ssh_channel writechans,
ssh_channel exceptchans,
struct timeval *  timeout 
)

Act like the standard select(2) on channels.

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.

Parameters
[in]readchansA NULL pointer or an array of channel pointers, terminated by a NULL.
[in]writechansA NULL pointer or an array of channel pointers, terminated by a NULL.
[in]exceptchansA NULL pointer or an array of channel pointers, terminated by a NULL.
[in]timeoutTimeout as defined by select(2).
Returns
SSH_OK on a successful operation, SSH_EINTR if the select(2) syscall was interrupted, then relaunch the function.

◆ ssh_channel_send_eof()

int ssh_channel_send_eof ( ssh_channel  channel)

Send an end of file on the channel.

This doesn't close the channel. You may still read from it but not write.

Parameters
[in]channelThe channel to send the eof to.
Returns
SSH_OK on success, SSH_ERROR if an error occurred.

Example:

rc = ssh_channel_send_eof(channel);
if (rc == SSH_ERROR) {
return -1;
}
while(!ssh_channel_is_eof(channel)) {
rc = ssh_channel_read(channel, buf, sizeof(buf), 0);
if (rc == SSH_ERROR) {
return -1;
}
}
See also
ssh_channel_close()
ssh_channel_free()
ssh_channel_is_eof()

◆ ssh_channel_set_blocking()

void ssh_channel_set_blocking ( ssh_channel  channel,
int  blocking 
)

Put the channel into blocking or nonblocking mode.

Parameters
[in]channelThe channel to use.
[in]blockingA boolean for blocking or nonblocking.
Warning
A side-effect of this is to put the whole session in non-blocking mode.
See also
ssh_set_blocking()

◆ ssh_channel_set_counter()

void ssh_channel_set_counter ( ssh_channel  channel,
ssh_counter  counter 
)

Set the channel data counter.

struct ssh_counter_struct counter = {
.in_bytes = 0,
.out_bytes = 0,
.in_packets = 0,
.out_packets = 0
};
ssh_channel_set_counter(channel, &counter);
Parameters
[in]channelThe SSH channel.
[in]counterCounter for bytes handled by the channel.

◆ ssh_channel_window_size()

uint32_t ssh_channel_window_size ( ssh_channel  channel)

Get the remote window size.

This is the maximum amounts of bytes the remote side expects us to send before growing the window again.

Parameters
[in]channelThe channel to query.
Returns
The remote window size
Warning
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.
A zero return value means ssh_channel_write (default settings) will block until the window grows back.

◆ ssh_channel_write()

int ssh_channel_write ( ssh_channel  channel,
const void *  data,
uint32_t  len 
)

Blocking write on a channel.

Parameters
[in]channelThe channel to write to.
[in]dataA pointer to the data to write.
[in]lenThe length of the buffer to write to.
Returns
The number of bytes written, SSH_ERROR on error.
See also
ssh_channel_read()

◆ ssh_channel_write_stderr()

int ssh_channel_write_stderr ( ssh_channel  channel,
const void *  data,
uint32_t  len 
)

Blocking write on a channel stderr.

Parameters
[in]channelThe channel to write to.
[in]dataA pointer to the data to write.
[in]lenThe length of the buffer to write to.
Returns
The number of bytes written, SSH_ERROR on error.
See also
ssh_channel_read()