diff options
author | dtucker@openbsd.org <dtucker@openbsd.org> | 2016-10-18 17:32:54 +0000 |
---|---|---|
committer | Darren Tucker <dtucker@zip.com.au> | 2016-10-19 07:16:01 +1100 |
commit | 246aa842a4ad368d8ce030495e657ef3a0e1f95c (patch) | |
tree | c6c82ee881b08ce78672f2e8bda687f24a3fef4a /channels.h.orig | |
parent | 2c6697c443d2c9c908260eed73eb9143223e3ec9 (diff) |
upstream commit
Remove channel_input_port_forward_request(); the only caller
was the recently-removed SSH1 server code so it's now dead code. ok markus@
Upstream-ID: 05453983230a1f439562535fec2818f63f297af9
Diffstat (limited to 'channels.h.orig')
-rw-r--r-- | channels.h.orig | 323 |
1 files changed, 323 insertions, 0 deletions
diff --git a/channels.h.orig b/channels.h.orig new file mode 100644 index 000000000..95363e98a --- /dev/null +++ b/channels.h.orig | |||
@@ -0,0 +1,323 @@ | |||
1 | /* $OpenBSD: channels.h,v 1.119 2016/09/30 09:19:13 markus Exp $ */ | ||
2 | |||
3 | /* | ||
4 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | ||
5 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | ||
6 | * All rights reserved | ||
7 | * | ||
8 | * As far as I am concerned, the code I have written for this software | ||
9 | * can be used freely for any purpose. Any derived versions of this | ||
10 | * software must be clearly marked as such, and if the derived work is | ||
11 | * incompatible with the protocol description in the RFC file, it must be | ||
12 | * called by a name other than "ssh" or "Secure Shell". | ||
13 | */ | ||
14 | /* | ||
15 | * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved. | ||
16 | * | ||
17 | * Redistribution and use in source and binary forms, with or without | ||
18 | * modification, are permitted provided that the following conditions | ||
19 | * are met: | ||
20 | * 1. Redistributions of source code must retain the above copyright | ||
21 | * notice, this list of conditions and the following disclaimer. | ||
22 | * 2. Redistributions in binary form must reproduce the above copyright | ||
23 | * notice, this list of conditions and the following disclaimer in the | ||
24 | * documentation and/or other materials provided with the distribution. | ||
25 | * | ||
26 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||
27 | * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
28 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
29 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
30 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
31 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
32 | * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
33 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
34 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
35 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
36 | */ | ||
37 | |||
38 | #ifndef CHANNEL_H | ||
39 | #define CHANNEL_H | ||
40 | |||
41 | /* Definitions for channel types. */ | ||
42 | #define SSH_CHANNEL_X11_LISTENER 1 /* Listening for inet X11 conn. */ | ||
43 | #define SSH_CHANNEL_PORT_LISTENER 2 /* Listening on a port. */ | ||
44 | #define SSH_CHANNEL_OPENING 3 /* waiting for confirmation */ | ||
45 | #define SSH_CHANNEL_OPEN 4 /* normal open two-way channel */ | ||
46 | #define SSH_CHANNEL_CLOSED 5 /* waiting for close confirmation */ | ||
47 | #define SSH_CHANNEL_AUTH_SOCKET 6 /* authentication socket */ | ||
48 | #define SSH_CHANNEL_X11_OPEN 7 /* reading first X11 packet */ | ||
49 | #define SSH_CHANNEL_INPUT_DRAINING 8 /* sending remaining data to conn */ | ||
50 | #define SSH_CHANNEL_OUTPUT_DRAINING 9 /* sending remaining data to app */ | ||
51 | #define SSH_CHANNEL_LARVAL 10 /* larval session */ | ||
52 | #define SSH_CHANNEL_RPORT_LISTENER 11 /* Listening to a R-style port */ | ||
53 | #define SSH_CHANNEL_CONNECTING 12 | ||
54 | #define SSH_CHANNEL_DYNAMIC 13 | ||
55 | #define SSH_CHANNEL_ZOMBIE 14 /* Almost dead. */ | ||
56 | #define SSH_CHANNEL_MUX_LISTENER 15 /* Listener for mux conn. */ | ||
57 | #define SSH_CHANNEL_MUX_CLIENT 16 /* Conn. to mux slave */ | ||
58 | #define SSH_CHANNEL_ABANDONED 17 /* Abandoned session, eg mux */ | ||
59 | #define SSH_CHANNEL_UNIX_LISTENER 18 /* Listening on a domain socket. */ | ||
60 | #define SSH_CHANNEL_RUNIX_LISTENER 19 /* Listening to a R-style domain socket. */ | ||
61 | #define SSH_CHANNEL_MUX_PROXY 20 /* proxy channel for mux-slave */ | ||
62 | #define SSH_CHANNEL_MAX_TYPE 21 | ||
63 | |||
64 | #define CHANNEL_CANCEL_PORT_STATIC -1 | ||
65 | |||
66 | struct Channel; | ||
67 | typedef struct Channel Channel; | ||
68 | |||
69 | typedef void channel_open_fn(int, int, void *); | ||
70 | typedef void channel_callback_fn(int, void *); | ||
71 | typedef int channel_infilter_fn(struct Channel *, char *, int); | ||
72 | typedef void channel_filter_cleanup_fn(int, void *); | ||
73 | typedef u_char *channel_outfilter_fn(struct Channel *, u_char **, u_int *); | ||
74 | |||
75 | /* Channel success/failure callbacks */ | ||
76 | typedef void channel_confirm_cb(int, struct Channel *, void *); | ||
77 | typedef void channel_confirm_abandon_cb(struct Channel *, void *); | ||
78 | struct channel_confirm { | ||
79 | TAILQ_ENTRY(channel_confirm) entry; | ||
80 | channel_confirm_cb *cb; | ||
81 | channel_confirm_abandon_cb *abandon_cb; | ||
82 | void *ctx; | ||
83 | }; | ||
84 | TAILQ_HEAD(channel_confirms, channel_confirm); | ||
85 | |||
86 | /* Context for non-blocking connects */ | ||
87 | struct channel_connect { | ||
88 | char *host; | ||
89 | int port; | ||
90 | struct addrinfo *ai, *aitop; | ||
91 | }; | ||
92 | |||
93 | /* Callbacks for mux channels back into client-specific code */ | ||
94 | typedef int mux_callback_fn(struct Channel *); | ||
95 | |||
96 | struct Channel { | ||
97 | int type; /* channel type/state */ | ||
98 | int self; /* my own channel identifier */ | ||
99 | int remote_id; /* channel identifier for remote peer */ | ||
100 | u_int istate; /* input from channel (state of receive half) */ | ||
101 | u_int ostate; /* output to channel (state of transmit half) */ | ||
102 | int flags; /* close sent/rcvd */ | ||
103 | int rfd; /* read fd */ | ||
104 | int wfd; /* write fd */ | ||
105 | int efd; /* extended fd */ | ||
106 | int sock; /* sock fd */ | ||
107 | int ctl_chan; /* control channel (multiplexed connections) */ | ||
108 | int isatty; /* rfd is a tty */ | ||
109 | #ifdef _AIX | ||
110 | int wfd_isatty; /* wfd is a tty */ | ||
111 | #endif | ||
112 | int client_tty; /* (client) TTY has been requested */ | ||
113 | int force_drain; /* force close on iEOF */ | ||
114 | time_t notbefore; /* Pause IO until deadline (time_t) */ | ||
115 | int delayed; /* post-select handlers for newly created | ||
116 | * channels are delayed until the first call | ||
117 | * to a matching pre-select handler. | ||
118 | * this way post-select handlers are not | ||
119 | * accidentally called if a FD gets reused */ | ||
120 | Buffer input; /* data read from socket, to be sent over | ||
121 | * encrypted connection */ | ||
122 | Buffer output; /* data received over encrypted connection for | ||
123 | * send on socket */ | ||
124 | Buffer extended; | ||
125 | char *path; | ||
126 | /* path for unix domain sockets, or host name for forwards */ | ||
127 | int listening_port; /* port being listened for forwards */ | ||
128 | char *listening_addr; /* addr being listened for forwards */ | ||
129 | int host_port; /* remote port to connect for forwards */ | ||
130 | char *remote_name; /* remote hostname */ | ||
131 | |||
132 | u_int remote_window; | ||
133 | u_int remote_maxpacket; | ||
134 | u_int local_window; | ||
135 | u_int local_window_max; | ||
136 | u_int local_consumed; | ||
137 | u_int local_maxpacket; | ||
138 | int extended_usage; | ||
139 | int single_connection; | ||
140 | |||
141 | char *ctype; /* type */ | ||
142 | |||
143 | /* callback */ | ||
144 | channel_open_fn *open_confirm; | ||
145 | void *open_confirm_ctx; | ||
146 | channel_callback_fn *detach_user; | ||
147 | int detach_close; | ||
148 | struct channel_confirms status_confirms; | ||
149 | |||
150 | /* filter */ | ||
151 | channel_infilter_fn *input_filter; | ||
152 | channel_outfilter_fn *output_filter; | ||
153 | void *filter_ctx; | ||
154 | channel_filter_cleanup_fn *filter_cleanup; | ||
155 | |||
156 | /* keep boundaries */ | ||
157 | int datagram; | ||
158 | |||
159 | /* non-blocking connect */ | ||
160 | struct channel_connect connect_ctx; | ||
161 | |||
162 | /* multiplexing protocol hook, called for each packet received */ | ||
163 | mux_callback_fn *mux_rcb; | ||
164 | void *mux_ctx; | ||
165 | int mux_pause; | ||
166 | int mux_downstream_id; | ||
167 | }; | ||
168 | |||
169 | #define CHAN_EXTENDED_IGNORE 0 | ||
170 | #define CHAN_EXTENDED_READ 1 | ||
171 | #define CHAN_EXTENDED_WRITE 2 | ||
172 | |||
173 | /* default window/packet sizes for tcp/x11-fwd-channel */ | ||
174 | #define CHAN_SES_PACKET_DEFAULT (32*1024) | ||
175 | #define CHAN_SES_WINDOW_DEFAULT (64*CHAN_SES_PACKET_DEFAULT) | ||
176 | #define CHAN_TCP_PACKET_DEFAULT (32*1024) | ||
177 | #define CHAN_TCP_WINDOW_DEFAULT (64*CHAN_TCP_PACKET_DEFAULT) | ||
178 | #define CHAN_X11_PACKET_DEFAULT (16*1024) | ||
179 | #define CHAN_X11_WINDOW_DEFAULT (4*CHAN_X11_PACKET_DEFAULT) | ||
180 | |||
181 | /* possible input states */ | ||
182 | #define CHAN_INPUT_OPEN 0 | ||
183 | #define CHAN_INPUT_WAIT_DRAIN 1 | ||
184 | #define CHAN_INPUT_WAIT_OCLOSE 2 | ||
185 | #define CHAN_INPUT_CLOSED 3 | ||
186 | |||
187 | /* possible output states */ | ||
188 | #define CHAN_OUTPUT_OPEN 0 | ||
189 | #define CHAN_OUTPUT_WAIT_DRAIN 1 | ||
190 | #define CHAN_OUTPUT_WAIT_IEOF 2 | ||
191 | #define CHAN_OUTPUT_CLOSED 3 | ||
192 | |||
193 | #define CHAN_CLOSE_SENT 0x01 | ||
194 | #define CHAN_CLOSE_RCVD 0x02 | ||
195 | #define CHAN_EOF_SENT 0x04 | ||
196 | #define CHAN_EOF_RCVD 0x08 | ||
197 | #define CHAN_LOCAL 0x10 | ||
198 | |||
199 | #define CHAN_RBUF 16*1024 | ||
200 | |||
201 | /* check whether 'efd' is still in use */ | ||
202 | #define CHANNEL_EFD_INPUT_ACTIVE(c) \ | ||
203 | (compat20 && c->extended_usage == CHAN_EXTENDED_READ && \ | ||
204 | (c->efd != -1 || \ | ||
205 | buffer_len(&c->extended) > 0)) | ||
206 | #define CHANNEL_EFD_OUTPUT_ACTIVE(c) \ | ||
207 | (compat20 && c->extended_usage == CHAN_EXTENDED_WRITE && \ | ||
208 | c->efd != -1 && (!(c->flags & (CHAN_EOF_RCVD|CHAN_CLOSE_RCVD)) || \ | ||
209 | buffer_len(&c->extended) > 0)) | ||
210 | |||
211 | /* channel management */ | ||
212 | |||
213 | Channel *channel_by_id(int); | ||
214 | Channel *channel_by_remote_id(int); | ||
215 | Channel *channel_lookup(int); | ||
216 | Channel *channel_new(char *, int, int, int, int, u_int, u_int, int, char *, int); | ||
217 | void channel_set_fds(int, int, int, int, int, int, int, u_int); | ||
218 | void channel_free(Channel *); | ||
219 | void channel_free_all(void); | ||
220 | void channel_stop_listening(void); | ||
221 | |||
222 | void channel_send_open(int); | ||
223 | void channel_request_start(int, char *, int); | ||
224 | void channel_register_cleanup(int, channel_callback_fn *, int); | ||
225 | void channel_register_open_confirm(int, channel_open_fn *, void *); | ||
226 | void channel_register_filter(int, channel_infilter_fn *, | ||
227 | channel_outfilter_fn *, channel_filter_cleanup_fn *, void *); | ||
228 | void channel_register_status_confirm(int, channel_confirm_cb *, | ||
229 | channel_confirm_abandon_cb *, void *); | ||
230 | void channel_cancel_cleanup(int); | ||
231 | int channel_close_fd(int *); | ||
232 | void channel_send_window_changes(void); | ||
233 | |||
234 | /* mux proxy support */ | ||
235 | |||
236 | int channel_proxy_downstream(Channel *mc); | ||
237 | int channel_proxy_upstream(Channel *, int, u_int32_t, void *); | ||
238 | |||
239 | /* protocol handler */ | ||
240 | |||
241 | int channel_input_close(int, u_int32_t, void *); | ||
242 | int channel_input_close_confirmation(int, u_int32_t, void *); | ||
243 | int channel_input_data(int, u_int32_t, void *); | ||
244 | int channel_input_extended_data(int, u_int32_t, void *); | ||
245 | int channel_input_ieof(int, u_int32_t, void *); | ||
246 | int channel_input_oclose(int, u_int32_t, void *); | ||
247 | int channel_input_open_confirmation(int, u_int32_t, void *); | ||
248 | int channel_input_open_failure(int, u_int32_t, void *); | ||
249 | int channel_input_port_open(int, u_int32_t, void *); | ||
250 | int channel_input_window_adjust(int, u_int32_t, void *); | ||
251 | int channel_input_status_confirm(int, u_int32_t, void *); | ||
252 | |||
253 | /* file descriptor handling (read/write) */ | ||
254 | |||
255 | void channel_prepare_select(fd_set **, fd_set **, int *, u_int*, | ||
256 | time_t*, int); | ||
257 | void channel_after_select(fd_set *, fd_set *); | ||
258 | void channel_output_poll(void); | ||
259 | |||
260 | int channel_not_very_much_buffered_data(void); | ||
261 | void channel_close_all(void); | ||
262 | int channel_still_open(void); | ||
263 | char *channel_open_message(void); | ||
264 | int channel_find_open(void); | ||
265 | |||
266 | /* tcp forwarding */ | ||
267 | struct Forward; | ||
268 | struct ForwardOptions; | ||
269 | void channel_set_af(int af); | ||
270 | void channel_permit_all_opens(void); | ||
271 | void channel_add_permitted_opens(char *, int); | ||
272 | int channel_add_adm_permitted_opens(char *, int); | ||
273 | void channel_disable_adm_local_opens(void); | ||
274 | void channel_update_permitted_opens(int, int); | ||
275 | void channel_clear_permitted_opens(void); | ||
276 | void channel_clear_adm_permitted_opens(void); | ||
277 | void channel_print_adm_permitted_opens(void); | ||
278 | int channel_input_port_forward_request(int, struct ForwardOptions *); | ||
279 | Channel *channel_connect_to_port(const char *, u_short, char *, char *); | ||
280 | Channel *channel_connect_to_path(const char *, char *, char *); | ||
281 | Channel *channel_connect_stdio_fwd(const char*, u_short, int, int); | ||
282 | Channel *channel_connect_by_listen_address(const char *, u_short, | ||
283 | char *, char *); | ||
284 | Channel *channel_connect_by_listen_path(const char *, char *, char *); | ||
285 | int channel_request_remote_forwarding(struct Forward *); | ||
286 | int channel_setup_local_fwd_listener(struct Forward *, struct ForwardOptions *); | ||
287 | int channel_request_rforward_cancel(struct Forward *); | ||
288 | int channel_setup_remote_fwd_listener(struct Forward *, int *, struct ForwardOptions *); | ||
289 | int channel_cancel_rport_listener(struct Forward *); | ||
290 | int channel_cancel_lport_listener(struct Forward *, int, struct ForwardOptions *); | ||
291 | int permitopen_port(const char *); | ||
292 | |||
293 | /* x11 forwarding */ | ||
294 | |||
295 | void channel_set_x11_refuse_time(u_int); | ||
296 | int x11_connect_display(void); | ||
297 | int x11_create_display_inet(int, int, int, u_int *, int **); | ||
298 | int x11_input_open(int, u_int32_t, void *); | ||
299 | void x11_request_forwarding_with_spoofing(int, const char *, const char *, | ||
300 | const char *, int); | ||
301 | int deny_input_open(int, u_int32_t, void *); | ||
302 | |||
303 | /* agent forwarding */ | ||
304 | |||
305 | void auth_request_forwarding(void); | ||
306 | |||
307 | /* channel close */ | ||
308 | |||
309 | int chan_is_dead(Channel *, int); | ||
310 | void chan_mark_dead(Channel *); | ||
311 | |||
312 | /* channel events */ | ||
313 | |||
314 | void chan_rcvd_oclose(Channel *); | ||
315 | void chan_rcvd_eow(Channel *); /* SSH2-only */ | ||
316 | void chan_read_failed(Channel *); | ||
317 | void chan_ibuf_empty(Channel *); | ||
318 | |||
319 | void chan_rcvd_ieof(Channel *); | ||
320 | void chan_write_failed(Channel *); | ||
321 | void chan_obuf_empty(Channel *); | ||
322 | |||
323 | #endif | ||