Mercurial > dropbear
diff cli-runopts.c @ 1466:f787f60f8e45
bind to port as well with -b
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Fri, 26 Jan 2018 00:27:48 +0800 |
parents | f7a53832501d |
children | 2d450c1056e3 |
line wrap: on
line diff
--- a/cli-runopts.c Mon May 01 08:26:15 2017 +0530 +++ b/cli-runopts.c Fri Jan 26 00:27:48 2018 +0800 @@ -92,7 +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\n" + "-b [bind_address][:bind_port]\n" "-V Version\n" #if DEBUG_TRACE "-v verbose (compiled with DEBUG_TRACE)\n" @@ -131,6 +131,7 @@ char* keepalive_arg = NULL; char* idle_timeout_arg = NULL; char *host_arg = NULL; + char *bind_arg = NULL; char c; /* see printhelp() for options */ @@ -167,6 +168,7 @@ 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 @@ -315,7 +317,7 @@ exit(EXIT_SUCCESS); break; case 'b': - next = &cli_opts.bind_address; + next = &bind_arg; break; default: fprintf(stderr, @@ -421,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) {