summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-11-21 20:54:26 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-12-16 12:36:00 +0000
commitfb5d6a7fcb0df75554431eba1720378e7b434d3f (patch)
tree5fcb4b6ce9c3bc22a01479f59cd682d03c477bf1
parent4be0d0eaaf23ce277972470a610fa7f3ec4bfbf9 (diff)
downloadmullvadvpn-fb5d6a7fcb0df75554431eba1720378e7b434d3f.tar.xz
mullvadvpn-fb5d6a7fcb0df75554431eba1720378e7b434d3f.zip
Add `CreateTunResult.InvalidDnsServers` variant
-rw-r--r--android/src/main/kotlin/net/mullvad/talpid/CreateTunResult.kt10
-rw-r--r--mullvad-jni/src/classes.rs1
-rw-r--r--talpid-core/src/tunnel/tun_provider/android/mod.rs10
3 files changed, 21 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/talpid/CreateTunResult.kt b/android/src/main/kotlin/net/mullvad/talpid/CreateTunResult.kt
index 276ed81521..dfa82852f1 100644
--- a/android/src/main/kotlin/net/mullvad/talpid/CreateTunResult.kt
+++ b/android/src/main/kotlin/net/mullvad/talpid/CreateTunResult.kt
@@ -1,5 +1,7 @@
package net.mullvad.talpid
+import java.net.InetAddress
+
sealed class CreateTunResult {
open val isOpen
get() = false
@@ -9,6 +11,14 @@ sealed class CreateTunResult {
get() = true
}
+ class InvalidDnsServers(
+ val addresses: ArrayList<InetAddress>,
+ val tunFd: Int
+ ) : CreateTunResult() {
+ override val isOpen
+ get() = true
+ }
+
class PermissionDenied : CreateTunResult()
class TunnelDeviceError : CreateTunResult()
}
diff --git a/mullvad-jni/src/classes.rs b/mullvad-jni/src/classes.rs
index a77d6df832..837585246d 100644
--- a/mullvad-jni/src/classes.rs
+++ b/mullvad-jni/src/classes.rs
@@ -60,6 +60,7 @@ pub const CLASSES: &[&str] = &[
"net/mullvad/talpid/tunnel/ParameterGenerationError",
"net/mullvad/talpid/ConnectivityListener",
"net/mullvad/talpid/CreateTunResult$Success",
+ "net/mullvad/talpid/CreateTunResult$InvalidDnsServers",
"net/mullvad/talpid/CreateTunResult$PermissionDenied",
"net/mullvad/talpid/CreateTunResult$TunnelDeviceError",
"net/mullvad/talpid/TalpidVpnService",
diff --git a/talpid-core/src/tunnel/tun_provider/android/mod.rs b/talpid-core/src/tunnel/tun_provider/android/mod.rs
index 762f5e4382..b9385f13a7 100644
--- a/talpid-core/src/tunnel/tun_provider/android/mod.rs
+++ b/talpid-core/src/tunnel/tun_provider/android/mod.rs
@@ -40,6 +40,12 @@ pub enum Error {
FindMethod(&'static str, #[error(source)] jnix::jni::errors::Error),
#[error(
+ display = "Attempt to configure the tunnel with an invalid DNS server address(es): {:?}",
+ _0
+ )]
+ InvalidDnsServers(Vec<IpAddr>),
+
+ #[error(
display = "Received an invalid result from TalpidVpnService.{}: {}",
_0,
_1
@@ -379,6 +385,7 @@ impl Default for TunConfig {
#[jnix(package = "net.mullvad.talpid")]
enum CreateTunResult {
Success { tun_fd: i32 },
+ InvalidDnsServers { addresses: Vec<IpAddr> },
PermissionDenied,
TunnelDeviceError,
}
@@ -387,6 +394,9 @@ impl From<CreateTunResult> for Result<RawFd, Error> {
fn from(result: CreateTunResult) -> Self {
match result {
CreateTunResult::Success { tun_fd } => Ok(tun_fd),
+ CreateTunResult::InvalidDnsServers { addresses } => {
+ Err(Error::InvalidDnsServers(addresses))
+ }
CreateTunResult::PermissionDenied => Err(Error::PermissionDenied),
CreateTunResult::TunnelDeviceError => Err(Error::TunnelDeviceError),
}