diff options
author | Ingela Anderton Andin <ingela@erlang.org> | 2013-11-05 09:36:26 +0100 |
---|---|---|
committer | Ingela Anderton Andin <ingela@erlang.org> | 2013-11-13 10:58:20 +0100 |
commit | 24f37acef3e7e33576bcd071569a94de980b6544 (patch) | |
tree | 9bca154a7e95705cc8dffcbf69ec5a063e935b0d | |
parent | dc87366c3e46dffbebe30e04bacc3d1ec299a0f2 (diff) | |
download | otp-24f37acef3e7e33576bcd071569a94de980b6544.tar.gz otp-24f37acef3e7e33576bcd071569a94de980b6544.tar.bz2 otp-24f37acef3e7e33576bcd071569a94de980b6544.zip |
ssh: Make inet option configurable and remove ipv6_disabled option
-rw-r--r-- | lib/ssh/doc/src/ssh.xml | 8 | ||||
-rw-r--r-- | lib/ssh/src/ssh.erl | 27 |
2 files changed, 6 insertions, 29 deletions
diff --git a/lib/ssh/doc/src/ssh.xml b/lib/ssh/doc/src/ssh.xml index 896b98edc2..b338241685 100644 --- a/lib/ssh/doc/src/ssh.xml +++ b/lib/ssh/doc/src/ssh.xml @@ -181,10 +181,6 @@ <item> <p>Allow an existing file descriptor to be used (simply passed on to the transport protocol).</p></item> - <tag><c><![CDATA[{ipv6_disabled, boolean()}]]></c></tag> - <item> - <p>Determines if SSH shall use IPv6 or not.</p> - </item> <tag><c><![CDATA[{rekey_limit, integer()}]]></c></tag> <item> <p>Provide, in bytes, when rekeying should be initiated, @@ -313,10 +309,6 @@ <item> <p>Allow an existing file-descriptor to be used (simply passed on to the transport protocol).</p></item> - <tag><c><![CDATA[{ip_v6_disabled, boolean()}]]></c></tag> - <item> - <p>Determines if SSH shall use IPv6 or not (only used when - HostAddress is set to any).</p></item> <tag><c><![CDATA[{failfun, fun()}]]></c></tag> <item> <p>Provide a fun() to implement your own logging when a user fails to authenticate.</p> diff --git a/lib/ssh/src/ssh.erl b/lib/ssh/src/ssh.erl index 9cf10e7a3a..b922a8446b 100644 --- a/lib/ssh/src/ssh.erl +++ b/lib/ssh/src/ssh.erl @@ -73,10 +73,9 @@ connect(Host, Port, Options, Timeout) -> {error, _Reason} = Error -> Error; {SocketOptions, SshOptions} -> - DisableIpv6 = proplists:get_value(ipv6_disabled, SshOptions, false), {_, Transport, _} = TransportOpts = proplists:get_value(transport, Options, {tcp, gen_tcp, tcp_closed}), - Inet = inetopt(DisableIpv6), + Inet = proplists:get_value(inet, SshOptions, inet), try Transport:connect(Host, Port, [ {active, false}, Inet | SocketOptions], Timeout) of {ok, Socket} -> Opts = [{user_pid, self()}, {host, Host} | fix_idle_time(SshOptions)], @@ -136,11 +135,11 @@ daemon(HostAddr, Port, Options0) -> _ -> Options0 end, - DisableIpv6 = proplists:get_value(ipv6_disabled, Options0, false), + {Host, Inet, Options} = case HostAddr of any -> {ok, Host0} = inet:gethostname(), - {Host0, inetopt(DisableIpv6), Options1}; + {Host0, proplists:get_value(inet, Options1, inet), Options1}; {_,_,_,_} -> {HostAddr, inet, [{ip, HostAddr} | Options1]}; @@ -415,7 +414,7 @@ handle_ssh_option({failfun, Value} = Opt) when is_function(Value) -> Opt; handle_ssh_option({ipv6_disabled, Value} = Opt) when is_boolean(Value) -> - Opt; + throw({error, {{ipv6_disabled, Opt}, option_no_longer_valid_use_inet_option_instead}}); handle_ssh_option({transport, {Protocol, Cb, ClosTag}} = Opt) when is_atom(Protocol), is_atom(Cb), is_atom(ClosTag) -> @@ -442,10 +441,8 @@ handle_inet_option({active, _} = Opt) -> throw({error, {{eoptions, Opt}, "Ssh has built in flow control, " "and activ is handled internaly user is not allowd" "to specify this option"}}); -handle_inet_option({inet, _} = Opt) -> - throw({error, {{eoptions, Opt},"Is set internaly use ipv6_disabled to" - " enforce iv4 in the server, client will fallback to ipv4 if" - " it can not use ipv6"}}); +handle_inet_option({inet, Value} = Opt) when (Value == inet) or (Value == inet6) -> + Opt; handle_inet_option({reuseaddr, _} = Opt) -> throw({error, {{eoptions, Opt},"Is set internaly user is not allowd" "to specify this option"}}); @@ -468,15 +465,3 @@ handle_pref_algs([H|T], Acc) -> _ -> false end. -%% Has IPv6 been disabled? -inetopt(true) -> - inet; -inetopt(false) -> - case gen_tcp:listen(0, [inet6]) of - {ok, Dummyport} -> - gen_tcp:close(Dummyport), - inet6; - _ -> - inet - end. - |