diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-08-14 09:29:59 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2018-08-14 09:29:59 -0300 |
| commit | 78eab08b73e8d98f9db700509951e780f7c1f212 (patch) | |
| tree | cd54f6b068318c43ff59afbbd9ac5a7a9aaee931 /mullvad-cli/src | |
| parent | 53e904f5c36b5b43ec5d9389f99d19a781625081 (diff) | |
| parent | 42ca10de518f81d7d86194ddbd858bd875424b86 (diff) | |
| download | mullvadvpn-78eab08b73e8d98f9db700509951e780f7c1f212.tar.xz mullvadvpn-78eab08b73e8d98f9db700509951e780f7c1f212.zip | |
Merge branch 'ipv6-toggle'
Diffstat (limited to 'mullvad-cli/src')
| -rw-r--r-- | mullvad-cli/src/cmds/tunnel.rs | 50 |
1 files changed, 38 insertions, 12 deletions
diff --git a/mullvad-cli/src/cmds/tunnel.rs b/mullvad-cli/src/cmds/tunnel.rs index bf7172c655..a0c86fe1f0 100644 --- a/mullvad-cli/src/cmds/tunnel.rs +++ b/mullvad-cli/src/cmds/tunnel.rs @@ -22,6 +22,13 @@ impl Command for Tunnel { .subcommand( clap::SubCommand::with_name("set") .subcommand( + clap::SubCommand::with_name("ipv6").arg( + clap::Arg::with_name("enable") + .required(true) + .takes_value(true) + .possible_values(&["on", "off"]), + ), + ).subcommand( clap::SubCommand::with_name("mssfix").arg( clap::Arg::with_name("mssfix") .help( @@ -60,23 +67,38 @@ impl Tunnel { } fn set_openvpn_option(matches: &clap::ArgMatches) -> Result<()> { - if let Some(mssfix_args) = matches.subcommand_matches("mssfix") { - let mssfix_str = mssfix_args.value_of("mssfix").unwrap(); - let mssfix: Option<u16> = if mssfix_str == "" { - None - } else { - Some(mssfix_str.parse()?) - }; - - let mut rpc = DaemonRpcClient::new()?; - rpc.set_openvpn_mssfix(mssfix)?; - println!("mssfix parameter updated"); - Ok(()) + if let Some(ipv6_args) = matches.subcommand_matches("ipv6") { + Self::set_openvpn_enable_ipv6_option(ipv6_args) + } else if let Some(mssfix_args) = matches.subcommand_matches("mssfix") { + Self::set_openvpn_mssfix_option(mssfix_args) } else { unreachable!("Invalid option passed to 'openvpn set'"); } } + fn set_openvpn_enable_ipv6_option(args: &clap::ArgMatches) -> Result<()> { + let enabled = args.value_of("enable").unwrap() == "on"; + + let mut rpc = DaemonRpcClient::new()?; + rpc.set_openvpn_enable_ipv6(enabled)?; + println!("enable_ipv6 parameter updated"); + Ok(()) + } + + fn set_openvpn_mssfix_option(args: &clap::ArgMatches) -> Result<()> { + let mssfix_str = args.value_of("mssfix").unwrap(); + let mssfix: Option<u16> = if mssfix_str == "" { + None + } else { + Some(mssfix_str.parse()?) + }; + + let mut rpc = DaemonRpcClient::new()?; + rpc.set_openvpn_mssfix(mssfix)?; + println!("mssfix parameter updated"); + Ok(()) + } + fn get_tunnel_options() -> Result<TunnelOptions> { let mut rpc = DaemonRpcClient::new()?; Ok(rpc.get_tunnel_options()?) @@ -90,5 +112,9 @@ impl Tunnel { .mssfix .map_or_else(|| "UNSET".to_string(), |v| v.to_string()) ); + println!( + "\tIPv6: {}", + if options.enable_ipv6 { "on" } else { "off" } + ); } } |
