X-Git-Url: https://git.distorted.org.uk/~mdw/userv-utils/blobdiff_plain/4ffb4653b5cec9b28c39992d8192900da7756146..7729298ad653ba4e0b10bacc9f27d210b4eaf4e7:/ipif/udptunnel diff --git a/ipif/udptunnel b/ipif/udptunnel index b76a9da..09595d1 100755 --- a/ipif/udptunnel +++ b/ipif/udptunnel @@ -19,8 +19,8 @@ # , # , # ,,, -# , -# +# ,[,] +# # [ [ ...] ] # # proto may be slip or cslip @@ -41,8 +41,8 @@ # , # , # ,,, -# , -# +# ,[,] +# # # If it was given Print for , this command's first @@ -67,12 +67,13 @@ # # (-m not specified) (-m specified) # actual addr/port that addr/port `Wait' -# `Wait' the chosen address `Wait' # `Print' the chosen address `Wait' +# `Any' `Wait' for addr, `Wait' +# chosen port for port # # udptunnel will userv ipif locally, as # userv root ipif ,,, -# +# # or, if -l was given, userv root ipif is replaced with the argument(s) # following -l option(s) until `.'. # @@ -226,8 +227,16 @@ m/^([.0-9]+),([.0-9]+),(\d+),(slip|cslip)$/ ($lva,$rva,$mtu,$proto) = ($1,$2,$3,$4); $_= shift @ARGV; -m/^(\d+),(\d+)$/ or quit("keepalive,timeout missing or bad syntax"); -($keepalive,$timeout)= ($1,$2); +if (m/^(\d+),(\d+)$/) { + ($keepalive,$timeout,$reannounce)= ($1+0,$2+0,0); + $ka_to_ra= "$keepalive,$timeout"; +} elsif (m/^(\d+),(\d+),(\d+)$/) { + ($keepalive,$timeout,$reannounce)= ($1+0,$2+0,$3); + "$keepalive,$timeout", + $ka_to_ra= "$keepalive,$timeout,$reannounce"; +} else { + quit("keepalive,timeout missing or bad syntax"); +} $keepalive && ($timeout > $keepalive*2) or quit("timeout must be < 2*keepalive") if $timeout; @@ -266,9 +275,9 @@ if (@ARGV) { @rcmd= (@ARGV, @remoteopts, "$rad,$rpd", - $masq ? 'Wait,Wait' : $lapd, + $masq ? 'Wait,Wait' : $las eq 'Any' ? "Wait,$lpd" : $lapd, "$rva,$lva,$mtu,$proto", - "$keepalive,$timeout", + $ka_to_ra, $rexn, $lexn); debug("remote command @rcmd"); @@ -360,7 +369,7 @@ $xfwdopts.= 'w' if $dump; @fcmd= ($fcmd, $xfwdopts, fileno(L), fileno(DW), fileno(UR), fileno(DUMPKEYS), - $mtu, $keepalive, $timeout, + $mtu, $keepalive, $timeout, $reannounce, @rapf, @encryption); debug("forwarding command @fcmd.");