25 #ifndef _SSH_CALLBACK_H 26 #define _SSH_CALLBACK_H 28 #include <libssh/libssh.h> 49 typedef void (*ssh_callback_int) (
int code,
void *user);
59 typedef int (*ssh_callback_data) (
const void *data,
size_t len,
void *user);
61 typedef void (*ssh_callback_int_int) (
int code,
int errno_code,
void *user);
63 typedef int (*ssh_message_callback) (ssh_session, ssh_message message,
void *user);
64 typedef int (*ssh_channel_callback_int) (ssh_channel channel,
int code,
void *user);
65 typedef int (*ssh_channel_callback_data) (ssh_channel channel,
int code,
void *data,
size_t len,
void *user);
75 const char *message,
void *userdata);
113 ssh_message message,
void *userdata);
125 const char * originator_address,
int originator_port,
void *userdata);
232 char signature_state,
void *
userdata);
267 typedef ssh_string (*ssh_gssapi_select_oid_callback) (ssh_session session,
const char *user,
268 int n_oid, ssh_string *oids,
void *
userdata);
282 typedef int (*ssh_gssapi_accept_sec_ctx_callback) (ssh_session session,
283 ssh_string input_token, ssh_string *output_token,
void *
userdata);
296 typedef int (*ssh_gssapi_verify_mic_callback) (ssh_session session,
297 ssh_string mic,
void *mic_buffer,
size_t mic_buffer_size,
void *
userdata);
341 ssh_gssapi_select_oid_callback gssapi_select_oid_function;
344 ssh_gssapi_accept_sec_ctx_callback gssapi_accept_sec_ctx_function;
347 ssh_gssapi_verify_mic_callback gssapi_verify_mic_function;
387 ssh_callback_data data;
391 ssh_callback_int controlflow;
395 ssh_callback_int_int exception;
399 ssh_callback_int_int connected;
403 #define SSH_SOCKET_FLOW_WRITEWILLBLOCK 1 404 #define SSH_SOCKET_FLOW_WRITEWONTBLOCK 2 406 #define SSH_SOCKET_EXCEPTION_EOF 1 407 #define SSH_SOCKET_EXCEPTION_ERROR 2 409 #define SSH_SOCKET_CONNECTED_OK 1 410 #define SSH_SOCKET_CONNECTED_ERROR 2 411 #define SSH_SOCKET_CONNECTED_TIMEOUT 3 420 #define ssh_callbacks_init(p) do {\ 421 (p)->size=sizeof(*(p)); \ 433 #define ssh_callbacks_exists(p,c) (\ 434 (p != NULL) && ( (char *)&((p)-> c) < (char *)(p) + (p)->size ) && \ 454 #define ssh_callbacks_execute_list(list, cbtype, c, ...) \ 456 struct ssh_iterator *i = ssh_list_get_iterator(list); \ 459 cb = ssh_iterator_value(cbtype, i); \ 460 if (ssh_callbacks_exists(cb, c)) \ 461 cb-> c (__VA_ARGS__, cb->userdata); \ 486 #define ssh_callbacks_iterate(_cb_list, _cb_type, _cb_name) \ 488 struct ssh_iterator *_cb_i = ssh_list_get_iterator(_cb_list); \ 490 for (; _cb_i != NULL; _cb_i = _cb_i->next) { \ 491 _cb = ssh_iterator_value(_cb_type, _cb_i); \ 492 if (ssh_callbacks_exists(_cb, _cb_name)) 494 #define ssh_callbacks_iterate_exec(_cb_name, ...) \ 495 _cb->_cb_name(__VA_ARGS__, _cb->userdata) 497 #define ssh_callbacks_iterate_end() \ 514 #define SSH_PACKET_USED 1 517 #define SSH_PACKET_NOT_USED 2 527 #define SSH_PACKET_CALLBACK(name) \ 528 int name (ssh_session session, uint8_t type, ssh_buffer packet, void *user) 530 struct ssh_packet_callbacks_struct {
543 typedef struct ssh_packet_callbacks_struct *ssh_packet_callbacks;
662 int width,
int height,
663 int pxwidth,
int pwheight,
696 int single_connection,
697 const char *auth_protocol,
698 const char *auth_cookie,
699 uint32_t screen_number,
714 int width,
int height,
715 int pxwidth,
int pwheight,
744 const char *env_name,
745 const char *env_value,
757 const char *subsystem,
777 struct ssh_channel_callbacks_struct {
846 typedef struct ssh_channel_callbacks_struct *ssh_channel_callbacks;
872 ssh_channel_callbacks cb);
891 ssh_channel_callbacks cb);
906 ssh_channel_callbacks cb);
914 typedef int (*ssh_thread_callback) (
void **lock);
916 typedef unsigned long (*ssh_thread_id_callback) (void);
917 struct ssh_threads_callbacks_struct {
919 ssh_thread_callback mutex_init;
920 ssh_thread_callback mutex_destroy;
921 ssh_thread_callback mutex_lock;
922 ssh_thread_callback mutex_unlock;
923 ssh_thread_id_callback thread_id;
952 LIBSSH_API
struct ssh_threads_callbacks_struct *ssh_threads_get_pthread(
void);
964 LIBSSH_API
struct ssh_threads_callbacks_struct *ssh_threads_get_noop(
void);
ssh_auth_callback auth_function
This functions will be called if e.g.
Definition: callbacks.h:152
void(* ssh_status_callback)(ssh_session session, float status, void *userdata)
SSH Connection status callback.
Definition: callbacks.h:102
void(* ssh_channel_auth_agent_req_callback)(ssh_session session, ssh_channel channel, void *userdata)
SSH auth-agent-request from the client.
Definition: callbacks.h:683
These are the callbacks exported by the socket structure They are called by the socket module when a ...
Definition: callbacks.h:378
int(* ssh_channel_pty_window_change_callback)(ssh_session session, ssh_channel channel, int width, int height, int pxwidth, int pwheight, void *userdata)
SSH channel PTY windows change (terminal size) from a client.
Definition: callbacks.h:712
The structure to replace libssh functions with appropriate callbacks.
Definition: callbacks.h:142
int(* ssh_channel_data_callback)(ssh_session session, ssh_channel channel, void *data, uint32_t len, int is_stderr, void *userdata)
SSH channel data callback.
Definition: callbacks.h:579
ssh_auth_password_callback auth_password_function
This function gets called when a client tries to authenticate through password method.
Definition: callbacks.h:314
void(* connect_status_function)(void *userdata, float status)
This function gets called during connection time to indicate the percentage of connection steps compl...
Definition: callbacks.h:161
int(* ssh_service_request_callback)(ssh_session session, const char *service, void *userdata)
Handles an SSH service request.
Definition: callbacks.h:244
void * userdata
User-provided data.
Definition: callbacks.h:148
int(* ssh_auth_none_callback)(ssh_session session, const char *user, void *userdata)
SSH authentication callback.
Definition: callbacks.h:201
int(* ssh_auth_password_callback)(ssh_session session, const char *user, const char *password, void *userdata)
These are callbacks used specifically in SSH servers.
Definition: callbacks.h:188
void * userdata
User-provided data.
Definition: callbacks.h:310
int(* ssh_channel_pty_request_callback)(ssh_session session, ssh_channel channel, const char *term, int width, int height, int pxwidth, int pwheight, void *userdata)
SSH channel PTY request from a client.
Definition: callbacks.h:659
ssh_auth_none_callback auth_none_function
This function gets called when a client tries to authenticate through none method.
Definition: callbacks.h:319
int(* ssh_packet_callback)(ssh_session session, uint8_t type, ssh_buffer packet, void *user)
Prototype for a packet callback, to be called when a new packet arrives.
Definition: callbacks.h:510
LIBSSH_API int ssh_set_callbacks(ssh_session session, ssh_callbacks cb)
Set the session callback functions.
Definition: callbacks.c:48
ssh_channel(* ssh_channel_open_request_auth_agent_callback)(ssh_session session, void *userdata)
Handles an SSH new channel open "auth-agent" request.
Definition: callbacks.h:136
ssh_auth_gssapi_mic_callback auth_gssapi_mic_function
This function gets called when a client tries to authenticate through gssapi-mic method.
Definition: callbacks.h:324
ssh_global_request_callback global_request_function
This function will be called each time a global request is received.
Definition: callbacks.h:165
size_t size
DON'T SET THIS use ssh_callbacks_init() instead.
Definition: callbacks.h:144
ssh_channel_open_request_auth_agent_callback channel_open_request_auth_agent_function
This function will be called when an incoming "auth-agent" request is received.
Definition: callbacks.h:171
ssh_channel(* ssh_channel_open_request_session_callback)(ssh_session session, void *userdata)
Handles an SSH new channel open session request.
Definition: callbacks.h:254
int(* ssh_channel_env_request_callback)(ssh_session session, ssh_channel channel, const char *env_name, const char *env_value, void *userdata)
SSH channel environment request from a client.
Definition: callbacks.h:742
void(* ssh_global_request_callback)(ssh_session session, ssh_message message, void *userdata)
SSH global request callback.
Definition: callbacks.h:112
LIBSSH_API int ssh_set_channel_callbacks(ssh_channel channel, ssh_channel_callbacks cb)
Set the channel callback functions.
Definition: callbacks.c:104
LIBSSH_API int ssh_set_server_callbacks(ssh_session session, ssh_server_callbacks cb)
Set the session server callback functions.
Definition: callbacks.c:133
This structure can be used to implement a libssh server, with appropriate callbacks.
Definition: callbacks.h:304
void(* ssh_logging_callback)(int priority, const char *function, const char *buffer, void *userdata)
SSH log callback.
Definition: callbacks.h:90
void(* ssh_channel_x11_req_callback)(ssh_session session, ssh_channel channel, int single_connection, const char *auth_protocol, const char *auth_cookie, uint32_t screen_number, void *userdata)
SSH X11 request from the client.
Definition: callbacks.h:694
void(* ssh_channel_eof_callback)(ssh_session session, ssh_channel channel, void *userdata)
SSH channel eof callback.
Definition: callbacks.h:592
int(* ssh_channel_shell_request_callback)(ssh_session session, ssh_channel channel, void *userdata)
SSH channel Shell request from a client.
Definition: callbacks.h:673
LIBSSH_API ssh_logging_callback ssh_get_log_callback(void)
Get the pointer to the logging callback function.
Definition: log.c:210
void * userdata
User-provided data.
Definition: callbacks.h:382
size_t size
DON'T SET THIS use ssh_callbacks_init() instead.
Definition: callbacks.h:306
int(* ssh_auth_pubkey_callback)(ssh_session session, const char *user, struct ssh_key_struct *pubkey, char signature_state, void *userdata)
SSH authentication callback.
Definition: callbacks.h:231
LIBSSH_API int ssh_add_channel_callbacks(ssh_channel channel, ssh_channel_callbacks cb)
Add channel callback functions.
Definition: callbacks.c:109
LIBSSH_API int ssh_remove_channel_callbacks(ssh_channel channel, ssh_channel_callbacks cb)
Remove a channel callback.
Definition: callbacks.c:114
ssh_channel_open_request_session_callback channel_open_request_session_function
This functions gets called when a new channel request is issued by the client.
Definition: callbacks.h:338
void(* ssh_channel_close_callback)(ssh_session session, ssh_channel channel, void *userdata)
SSH channel close callback.
Definition: callbacks.h:602
void(* ssh_channel_exit_signal_callback)(ssh_session session, ssh_channel channel, const char *signal, int core, const char *errmsg, const char *lang, void *userdata)
SSH channel exit signal callback.
Definition: callbacks.h:639
LIBSSH_API int ssh_set_log_callback(ssh_logging_callback cb)
Set the logging callback function.
Definition: log.c:200
void(* ssh_log_callback)(ssh_session session, int priority, const char *message, void *userdata)
SSH log callback.
Definition: callbacks.h:74
int(* ssh_channel_subsystem_request_callback)(ssh_session session, ssh_channel channel, const char *subsystem, void *userdata)
SSH channel subsystem request from a client.
Definition: callbacks.h:755
void(* ssh_channel_signal_callback)(ssh_session session, ssh_channel channel, const char *signal, void *userdata)
SSH channel signal callback.
Definition: callbacks.h:613
void(* ssh_channel_exit_status_callback)(ssh_session session, ssh_channel channel, int exit_status, void *userdata)
SSH channel exit status callback.
Definition: callbacks.h:624
LIBSSH_API int ssh_threads_set_callbacks(struct ssh_threads_callbacks_struct *cb)
Set the thread callbacks structure.
Definition: threads.c:71
int(* ssh_auth_gssapi_mic_callback)(ssh_session session, const char *user, const char *principal, void *userdata)
SSH authentication callback.
Definition: callbacks.h:215
int(* ssh_channel_write_wontblock_callback)(ssh_session session, ssh_channel channel, size_t bytes, void *userdata)
SSH channel write will not block (flow control).
Definition: callbacks.h:772
ssh_service_request_callback service_request_function
This functions gets called when a service request is issued by the client.
Definition: callbacks.h:334
ssh_channel(* ssh_channel_open_request_x11_callback)(ssh_session session, const char *originator_address, int originator_port, void *userdata)
Handles an SSH new channel open X11 request.
Definition: callbacks.h:124
ssh_log_callback log_function
This function will be called each time a loggable event happens.
Definition: callbacks.h:156
ssh_channel_open_request_x11_callback channel_open_request_x11_function
This function will be called when an incoming X11 request is received.
Definition: callbacks.h:168
int(* ssh_channel_exec_request_callback)(ssh_session session, ssh_channel channel, const char *command, void *userdata)
SSH channel Exec request from a client.
Definition: callbacks.h:726
ssh_auth_pubkey_callback auth_pubkey_function
this function gets called when a client tries to authenticate or offer a public key.
Definition: callbacks.h:329