Mercurial > dropbear
diff cli-runopts.c @ 1467:7279a633cc50
Merge branch 'houseofkodai-cli_bind_address_connect'
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Fri, 26 Jan 2018 00:32:39 +0800 |
parents | f787f60f8e45 |
children | 2d450c1056e3 |
line wrap: on
line diff
--- a/cli-runopts.c Thu Jan 25 19:51:41 2018 +0530 +++ b/cli-runopts.c Fri Jan 26 00:32:39 2018 +0800 @@ -92,6 +92,7 @@ "-c <cipher list> Specify preferred ciphers ('-c help' to list options)\n" "-m <MAC list> Specify preferred MACs for packet verification (or '-m help')\n" #endif + "-b [bind_address][:bind_port]\n" "-V Version\n" #if DEBUG_TRACE "-v verbose (compiled with DEBUG_TRACE)\n" @@ -125,12 +126,12 @@ OPT_OTHER } opt; unsigned int cmdlen; - char* dummy = NULL; /* Not used for anything real */ char* recv_window_arg = NULL; char* keepalive_arg = NULL; char* idle_timeout_arg = NULL; char *host_arg = NULL; + char *bind_arg = NULL; char c; /* see printhelp() for options */ @@ -166,6 +167,8 @@ #if DROPBEAR_CLI_PROXYCMD cli_opts.proxycmd = NULL; #endif + cli_opts.bind_address = NULL; + cli_opts.bind_port = NULL; #ifndef DISABLE_ZLIB opts.compress_mode = DROPBEAR_COMPRESS_ON; #endif @@ -314,8 +317,8 @@ exit(EXIT_SUCCESS); break; case 'b': - next = &dummy; - /* FALLTHROUGH */ + next = &bind_arg; + break; default: fprintf(stderr, "WARNING: Ignoring unknown option -%c\n", c); @@ -420,6 +423,18 @@ cli_opts.remoteport = "22"; } + if (bind_arg) { + /* split [host][:port] */ + char *port = strrchr(bind_arg, ':'); + if (port) { + cli_opts.bind_port = m_strdup(port+1); + *port = '\0'; + } + if (strlen(bind_arg) > 0) { + cli_opts.bind_address = m_strdup(bind_arg); + } + } + /* If not explicitly specified with -t or -T, we don't want a pty if * there's a command, but we do otherwise */ if (cli_opts.wantpty == 9) {