summaryrefslogtreecommitdiffhomepage
path: root/mullvad-cli/src
diff options
context:
space:
mode:
authorEmīls Piņķis <emils@mullvad.net>2019-02-28 13:09:20 +0000
committerEmīls Piņķis <emils@mullvad.net>2019-02-28 13:09:20 +0000
commit4511b00ecd8b243cacaf4cdc8952616d2b5ce53c (patch)
tree37db0cb6a31309f2e3e63132a2e5b96993d8e0c4 /mullvad-cli/src
parent94efa3bd621ede90485a5e5a9e8da933495ca2af (diff)
parent56f16deb8c97fe9b60bb92b349fed4ce4b5dbe75 (diff)
downloadmullvadvpn-4511b00ecd8b243cacaf4cdc8952616d2b5ce53c.tar.xz
mullvadvpn-4511b00ecd8b243cacaf4cdc8952616d2b5ce53c.zip
Merge branch 'support-v6-gateway'
Diffstat (limited to 'mullvad-cli/src')
-rw-r--r--mullvad-cli/src/cmds/relay.rs28
1 files changed, 21 insertions, 7 deletions
diff --git a/mullvad-cli/src/cmds/relay.rs b/mullvad-cli/src/cmds/relay.rs
index d2948ec315..0d2c5c3bca 100644
--- a/mullvad-cli/src/cmds/relay.rs
+++ b/mullvad-cli/src/cmds/relay.rs
@@ -2,7 +2,7 @@ use crate::{new_rpc_client, Command, Result, ResultExt};
use clap::{value_t, values_t};
use std::{
io::{self, BufRead},
- net::{IpAddr, Ipv4Addr, SocketAddr},
+ net::{IpAddr, Ipv4Addr, Ipv6Addr, SocketAddr},
str::FromStr,
};
@@ -55,11 +55,17 @@ impl Command for Relay {
.required(false),
)
.arg(
- clap::Arg::with_name("gateway")
- .help("Gateway address")
- .long("gateway")
+ clap::Arg::with_name("v4-gateway")
+ .help("IPv4 gateway address")
+ .long("v4-gateway")
.index(4)
.required(false),
+ ).arg(
+ clap::Arg::with_name("v6-gateway")
+ .help("IPv6 gateway address")
+ .long("v6-gateway")
+ .takes_value(true)
+ .required(false),
)
.arg(
clap::Arg::with_name("addr")
@@ -224,10 +230,17 @@ impl Relay {
let host = value_t!(matches.value_of("host"), String).unwrap_or_else(|e| e.exit());
let port = value_t!(matches.value_of("port"), u16).unwrap_or_else(|e| e.exit());
let addresses = values_t!(matches.values_of("addr"), IpAddr).unwrap_or_else(|e| e.exit());
- println!("addresses - {:?}", addresses);
let peer_key_str =
value_t!(matches.value_of("peer-key"), String).unwrap_or_else(|e| e.exit());
- let gateway = value_t!(matches.value_of("gateway"), IpAddr).unwrap_or_else(|e| e.exit());
+ let ipv4_gateway =
+ value_t!(matches.value_of("v4-gateway"), Ipv4Addr).unwrap_or_else(|e| e.exit());
+ let ipv6_gateway = match value_t!(matches.value_of("v6-gateway"), Ipv6Addr) {
+ Ok(gateway) => Some(gateway),
+ Err(e) => match e.kind {
+ clap::ErrorKind::ArgumentNotFound => None,
+ _ => e.exit(),
+ },
+ };
let mut private_key_str = String::new();
println!("Reading private key from standard input");
let _ = io::stdin().lock().read_line(&mut private_key_str);
@@ -250,7 +263,8 @@ impl Relay {
allowed_ips: all_of_the_internet(),
endpoint: SocketAddr::new(Ipv4Addr::UNSPECIFIED.into(), port),
},
- gateway,
+ ipv4_gateway,
+ ipv6_gateway,
}),
)
}