upstream commit
Move the host and port used by ssh -W into the Options struct. This will make future changes a bit easier. ok djm@ Upstream-ID: 151bce5ecab2fbedf0d836250a27968d30389382
This commit is contained in:
parent
6b87311d3a
commit
8543ff3f50
10
mux.c
10
mux.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: mux.c,v 1.59 2016/04/01 02:34:10 djm Exp $ */
|
/* $OpenBSD: mux.c,v 1.60 2016/06/03 03:14:41 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org>
|
* Copyright (c) 2002-2008 Damien Miller <djm@openbsd.org>
|
||||||
*
|
*
|
||||||
|
@ -88,8 +88,6 @@ extern char *host;
|
||||||
extern int subsystem_flag;
|
extern int subsystem_flag;
|
||||||
extern Buffer command;
|
extern Buffer command;
|
||||||
extern volatile sig_atomic_t quit_pending;
|
extern volatile sig_atomic_t quit_pending;
|
||||||
extern char *stdio_forward_host;
|
|
||||||
extern int stdio_forward_port;
|
|
||||||
|
|
||||||
/* Context for session open confirmation callback */
|
/* Context for session open confirmation callback */
|
||||||
struct mux_session_confirm_ctx {
|
struct mux_session_confirm_ctx {
|
||||||
|
@ -1991,8 +1989,8 @@ mux_client_request_stdio_fwd(int fd)
|
||||||
buffer_put_int(&m, MUX_C_NEW_STDIO_FWD);
|
buffer_put_int(&m, MUX_C_NEW_STDIO_FWD);
|
||||||
buffer_put_int(&m, muxclient_request_id);
|
buffer_put_int(&m, muxclient_request_id);
|
||||||
buffer_put_cstring(&m, ""); /* reserved */
|
buffer_put_cstring(&m, ""); /* reserved */
|
||||||
buffer_put_cstring(&m, stdio_forward_host);
|
buffer_put_cstring(&m, options.stdio_forward_host);
|
||||||
buffer_put_int(&m, stdio_forward_port);
|
buffer_put_int(&m, options.stdio_forward_port);
|
||||||
|
|
||||||
if (mux_client_write_packet(fd, &m) != 0)
|
if (mux_client_write_packet(fd, &m) != 0)
|
||||||
fatal("%s: write packet: %s", __func__, strerror(errno));
|
fatal("%s: write packet: %s", __func__, strerror(errno));
|
||||||
|
@ -2116,7 +2114,7 @@ muxclient(const char *path)
|
||||||
u_int pid;
|
u_int pid;
|
||||||
|
|
||||||
if (muxclient_command == 0) {
|
if (muxclient_command == 0) {
|
||||||
if (stdio_forward_host != NULL)
|
if (options.stdio_forward_host != NULL)
|
||||||
muxclient_command = SSHMUX_COMMAND_STDIO_FWD;
|
muxclient_command = SSHMUX_COMMAND_STDIO_FWD;
|
||||||
else
|
else
|
||||||
muxclient_command = SSHMUX_COMMAND_OPEN;
|
muxclient_command = SSHMUX_COMMAND_OPEN;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: readconf.c,v 1.254 2016/05/04 14:29:58 markus Exp $ */
|
/* $OpenBSD: readconf.c,v 1.255 2016/06/03 03:14:41 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
|
@ -1748,6 +1748,8 @@ initialize_options(Options * options)
|
||||||
options->forward_x11 = -1;
|
options->forward_x11 = -1;
|
||||||
options->forward_x11_trusted = -1;
|
options->forward_x11_trusted = -1;
|
||||||
options->forward_x11_timeout = -1;
|
options->forward_x11_timeout = -1;
|
||||||
|
options->stdio_forward_host = NULL;
|
||||||
|
options->stdio_forward_port = 0;
|
||||||
options->exit_on_forward_failure = -1;
|
options->exit_on_forward_failure = -1;
|
||||||
options->xauth_location = NULL;
|
options->xauth_location = NULL;
|
||||||
options->fwd_opts.gateway_ports = -1;
|
options->fwd_opts.gateway_ports = -1;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: readconf.h,v 1.115 2016/05/04 12:21:53 markus Exp $ */
|
/* $OpenBSD: readconf.h,v 1.116 2016/06/03 03:14:41 dtucker Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
|
@ -112,6 +112,10 @@ typedef struct {
|
||||||
struct Forward *remote_forwards;
|
struct Forward *remote_forwards;
|
||||||
int clear_forwardings;
|
int clear_forwardings;
|
||||||
|
|
||||||
|
/* stdio forwarding (-W) host and port */
|
||||||
|
char *stdio_forward_host;
|
||||||
|
int stdio_forward_port;
|
||||||
|
|
||||||
int enable_ssh_keysign;
|
int enable_ssh_keysign;
|
||||||
int64_t rekey_limit;
|
int64_t rekey_limit;
|
||||||
int rekey_interval;
|
int rekey_interval;
|
||||||
|
|
23
ssh.c
23
ssh.c
|
@ -1,4 +1,4 @@
|
||||||
/* $OpenBSD: ssh.c,v 1.440 2016/05/04 14:29:58 markus Exp $ */
|
/* $OpenBSD: ssh.c,v 1.441 2016/06/03 03:14:41 dtucker Exp $ */
|
||||||
/*
|
/*
|
||||||
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
* Author: Tatu Ylonen <ylo@cs.hut.fi>
|
||||||
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
|
||||||
|
@ -151,10 +151,6 @@ int ostdin_null_flag, ono_shell_flag, otty_flag, orequest_tty;
|
||||||
*/
|
*/
|
||||||
int fork_after_authentication_flag = 0;
|
int fork_after_authentication_flag = 0;
|
||||||
|
|
||||||
/* forward stdio to remote host and port */
|
|
||||||
char *stdio_forward_host = NULL;
|
|
||||||
int stdio_forward_port = 0;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* General data structure for command line options and options configurable
|
* General data structure for command line options and options configurable
|
||||||
* in configuration files. See readconf.h.
|
* in configuration files. See readconf.h.
|
||||||
|
@ -651,7 +647,7 @@ main(int ac, char **av)
|
||||||
options.fwd_opts.gateway_ports = 1;
|
options.fwd_opts.gateway_ports = 1;
|
||||||
break;
|
break;
|
||||||
case 'O':
|
case 'O':
|
||||||
if (stdio_forward_host != NULL)
|
if (options.stdio_forward_host != NULL)
|
||||||
fatal("Cannot specify multiplexing "
|
fatal("Cannot specify multiplexing "
|
||||||
"command with -W");
|
"command with -W");
|
||||||
else if (muxclient_command != 0)
|
else if (muxclient_command != 0)
|
||||||
|
@ -770,13 +766,13 @@ main(int ac, char **av)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'W':
|
case 'W':
|
||||||
if (stdio_forward_host != NULL)
|
if (options.stdio_forward_host != NULL)
|
||||||
fatal("stdio forward already specified");
|
fatal("stdio forward already specified");
|
||||||
if (muxclient_command != 0)
|
if (muxclient_command != 0)
|
||||||
fatal("Cannot specify stdio forward with -O");
|
fatal("Cannot specify stdio forward with -O");
|
||||||
if (parse_forward(&fwd, optarg, 1, 0)) {
|
if (parse_forward(&fwd, optarg, 1, 0)) {
|
||||||
stdio_forward_host = fwd.listen_host;
|
options.stdio_forward_host = fwd.listen_host;
|
||||||
stdio_forward_port = fwd.listen_port;
|
options.stdio_forward_port = fwd.listen_port;
|
||||||
free(fwd.connect_host);
|
free(fwd.connect_host);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
|
@ -1538,18 +1534,19 @@ ssh_init_stdio_forwarding(void)
|
||||||
Channel *c;
|
Channel *c;
|
||||||
int in, out;
|
int in, out;
|
||||||
|
|
||||||
if (stdio_forward_host == NULL)
|
if (options.stdio_forward_host == NULL)
|
||||||
return;
|
return;
|
||||||
if (!compat20)
|
if (!compat20)
|
||||||
fatal("stdio forwarding require Protocol 2");
|
fatal("stdio forwarding require Protocol 2");
|
||||||
|
|
||||||
debug3("%s: %s:%d", __func__, stdio_forward_host, stdio_forward_port);
|
debug3("%s: %s:%d", __func__, options.stdio_forward_host,
|
||||||
|
options.stdio_forward_port);
|
||||||
|
|
||||||
if ((in = dup(STDIN_FILENO)) < 0 ||
|
if ((in = dup(STDIN_FILENO)) < 0 ||
|
||||||
(out = dup(STDOUT_FILENO)) < 0)
|
(out = dup(STDOUT_FILENO)) < 0)
|
||||||
fatal("channel_connect_stdio_fwd: dup() in/out failed");
|
fatal("channel_connect_stdio_fwd: dup() in/out failed");
|
||||||
if ((c = channel_connect_stdio_fwd(stdio_forward_host,
|
if ((c = channel_connect_stdio_fwd(options.stdio_forward_host,
|
||||||
stdio_forward_port, in, out)) == NULL)
|
options.stdio_forward_port, in, out)) == NULL)
|
||||||
fatal("%s: channel_connect_stdio_fwd failed", __func__);
|
fatal("%s: channel_connect_stdio_fwd failed", __func__);
|
||||||
channel_register_cleanup(c->self, client_cleanup_stdio_fwd, 0);
|
channel_register_cleanup(c->self, client_cleanup_stdio_fwd, 0);
|
||||||
channel_register_open_confirm(c->self, ssh_stdio_confirm, NULL);
|
channel_register_open_confirm(c->self, ssh_stdio_confirm, NULL);
|
||||||
|
|
Loading…
Reference in New Issue