version 1.89, 2007/06/11 09:14:00 |
version 1.90, 2008/05/08 12:02:23 |
|
|
typedef int channel_infilter_fn(struct Channel *, char *, int); |
typedef int channel_infilter_fn(struct Channel *, char *, int); |
typedef u_char *channel_outfilter_fn(struct Channel *, u_char **, u_int *); |
typedef u_char *channel_outfilter_fn(struct Channel *, u_char **, u_int *); |
|
|
|
/* Channel success/failure callbacks */ |
|
typedef void channel_confirm_cb(int, struct Channel *, void *); |
|
typedef void channel_confirm_abandon_cb(struct Channel *, void *); |
|
struct channel_confirm { |
|
TAILQ_ENTRY(channel_confirm) entry; |
|
channel_confirm_cb *cb; |
|
channel_confirm_abandon_cb *abandon_cb; |
|
void *ctx; |
|
}; |
|
TAILQ_HEAD(channel_confirms, channel_confirm); |
|
|
struct Channel { |
struct Channel { |
int type; /* channel type/state */ |
int type; /* channel type/state */ |
int self; /* my own channel identifier */ |
int self; /* my own channel identifier */ |
|
|
char *ctype; /* type */ |
char *ctype; /* type */ |
|
|
/* callback */ |
/* callback */ |
channel_callback_fn *confirm; |
channel_callback_fn *open_confirm; |
void *confirm_ctx; |
void *open_confirm_ctx; |
channel_callback_fn *detach_user; |
channel_callback_fn *detach_user; |
int detach_close; |
int detach_close; |
|
struct channel_confirms status_confirms; |
|
|
/* filter */ |
/* filter */ |
channel_infilter_fn *input_filter; |
channel_infilter_fn *input_filter; |
|
|
void channel_send_open(int); |
void channel_send_open(int); |
void channel_request_start(int, char *, int); |
void channel_request_start(int, char *, int); |
void channel_register_cleanup(int, channel_callback_fn *, int); |
void channel_register_cleanup(int, channel_callback_fn *, int); |
void channel_register_confirm(int, channel_callback_fn *, void *); |
void channel_register_open_confirm(int, channel_callback_fn *, void *); |
void channel_register_filter(int, channel_infilter_fn *, channel_outfilter_fn *); |
void channel_register_filter(int, channel_infilter_fn *, |
|
channel_outfilter_fn *); |
|
void channel_register_status_confirm(int, channel_confirm_cb *, |
|
channel_confirm_abandon_cb *, void *); |
void channel_cancel_cleanup(int); |
void channel_cancel_cleanup(int); |
int channel_close_fd(int *); |
int channel_close_fd(int *); |
void channel_send_window_changes(void); |
void channel_send_window_changes(void); |
|
|
void channel_input_open_failure(int, u_int32_t, void *); |
void channel_input_open_failure(int, u_int32_t, void *); |
void channel_input_port_open(int, u_int32_t, void *); |
void channel_input_port_open(int, u_int32_t, void *); |
void channel_input_window_adjust(int, u_int32_t, void *); |
void channel_input_window_adjust(int, u_int32_t, void *); |
|
void channel_input_status_confirm(int, u_int32_t, void *); |
|
|
/* file descriptor handling (read/write) */ |
/* file descriptor handling (read/write) */ |
|
|