#
# usage:
# udptunnel
-# [ -l[<local-command/arg>] ... . ]
-# <public-local-host/addr>,<public-local-port>
-# <public-remote-host/addr>,<public-remote-port>
+# [ -l[<local-command/arg>] ... .
+# -e<encryption-mech>[/<encryption-parameter>...]
+# ...
+# ]
+# <public-local-addr>,<public-local-port>
+# <public-remote-addr>,<public-remote-port>
# <private-local-addr>,<private-remote-addr>,<mtu>,<proto>
# <keepalive>,<timeout>
# <extra-local-nets> <extra-remote-nets>
# [ <remote-command> [<remote-args> ...] ]
#
+#
+# <..-addr> may also be hostname
+#
# <local-public-port> may be number or `print' or `silent'
#
# <remote-public-port> may number or `command', in which case
# <remote-command> must be specified and should run udptunnel at the
# remote end; it will be invoked as
-# <remote-command> <public-remote-host/addr>,print
+# <remote-command> <public-remote-addr>,print
# <public-local-addr>,<public-local-port>
# <private-remote-addr>,<private-local-addr>,<mtu>,<proto>
# <keepalive>,<timeout>
sub eat_addr_port ($) {
my ($x) = @_;
- @ARGV or quit("<host/addr>,<port> missing");
+ @ARGV or quit("<addr>,<port> missing");
$_= shift(@ARGV);
$_ =~ m/^([^,]+)\,(\d+|$x)$/ or quit("$_: <host/addr>,<port> bad syntax");
return ($1,$2);
last if $_ eq '--';
if (s/^-l//) {
push @lcmd,$_ if length;
- while (@ARGV && ($_= shift @ARGV) ne '-') { push @lcmd, $_; }
+ while (@ARGV && ($_= shift @ARGV) ne '.') { push @lcmd, $_; }
} else {
quit("unknown option \`$_'");
}