summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-11-21 15:15:02 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-11-22 15:16:54 +0000
commit7d97d483fdaf5165fbe923f82ebafd6b8ebd084c (patch)
tree8a10005a7ae7284989e765c0f511a933e92c21f3
parent5166c453faa029b3a960cc27b56b399d3b9e37fd (diff)
downloadmullvadvpn-7d97d483fdaf5165fbe923f82ebafd6b8ebd084c.tar.xz
mullvadvpn-7d97d483fdaf5165fbe923f82ebafd6b8ebd084c.zip
Derive `IntoJava` for `TunConfig`
-rw-r--r--android/src/main/kotlin/net/mullvad/talpid/tun_provider/TunConfig.kt7
-rw-r--r--mullvad-jni/src/into_java.rs30
-rw-r--r--talpid-core/src/tunnel/tun_provider/mod.rs10
3 files changed, 15 insertions, 32 deletions
diff --git a/android/src/main/kotlin/net/mullvad/talpid/tun_provider/TunConfig.kt b/android/src/main/kotlin/net/mullvad/talpid/tun_provider/TunConfig.kt
index fe8d0f55c7..761462013e 100644
--- a/android/src/main/kotlin/net/mullvad/talpid/tun_provider/TunConfig.kt
+++ b/android/src/main/kotlin/net/mullvad/talpid/tun_provider/TunConfig.kt
@@ -1,10 +1,11 @@
package net.mullvad.talpid.tun_provider
import java.net.InetAddress
+import java.util.ArrayList
data class TunConfig(
- val addresses: List<InetAddress>,
- val dnsServers: List<InetAddress>,
- val routes: List<InetNetwork>,
+ val addresses: ArrayList<InetAddress>,
+ val dnsServers: ArrayList<InetAddress>,
+ val routes: ArrayList<InetNetwork>,
val mtu: Int
)
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs
index c2bc48d856..432ed5cbbc 100644
--- a/mullvad-jni/src/into_java.rs
+++ b/mullvad-jni/src/into_java.rs
@@ -205,35 +205,7 @@ where
}
}
-impl<'borrow, 'env> IntoJava<'borrow, 'env> for TunConfig
-where
- 'env: 'borrow,
-{
- type JavaType = AutoLocal<'env, 'borrow>;
-
- fn into_java(self, env: &'borrow JnixEnv<'env>) -> Self::JavaType {
- let class = env.get_class("net/mullvad/talpid/tun_provider/TunConfig");
- let addresses = self.addresses.into_java(env);
- let dns_servers = self.dns_servers.into_java(env);
- let routes = self.routes.into_java(env);
- let mtu = self.mtu as jint;
- let parameters = [
- JValue::Object(addresses.as_obj()),
- JValue::Object(dns_servers.as_obj()),
- JValue::Object(routes.as_obj()),
- JValue::Int(mtu),
- ];
-
- env.auto_local(
- env.new_object(
- &class,
- "(Ljava/util/List;Ljava/util/List;Ljava/util/List;I)V",
- &parameters,
- )
- .expect("Failed to create TunConfig Java object"),
- )
- }
-}
+wrap_jnix_into_java!(TunConfig);
impl<'borrow, 'env> IntoJava<'borrow, 'env> for TransportProtocol
where
diff --git a/talpid-core/src/tunnel/tun_provider/mod.rs b/talpid-core/src/tunnel/tun_provider/mod.rs
index 68b688aa74..c6701ceac9 100644
--- a/talpid-core/src/tunnel/tun_provider/mod.rs
+++ b/talpid-core/src/tunnel/tun_provider/mod.rs
@@ -73,6 +73,11 @@ pub trait TunProvider: Send + 'static {
/// Configuration for creating a tunnel device.
#[derive(Clone, Debug, Eq, PartialEq)]
+#[cfg_attr(target_os = "android", derive(IntoJava))]
+#[cfg_attr(
+ target_os = "android",
+ jnix(package = "net.mullvad.talpid.tun_provider")
+)]
pub struct TunConfig {
/// IP addresses for the tunnel interface.
pub addresses: Vec<IpAddr>,
@@ -81,9 +86,14 @@ pub struct TunConfig {
pub dns_servers: Vec<IpAddr>,
/// Routes to configure for the tunnel.
+ #[cfg_attr(
+ target_os = "android",
+ jnix(map = "|networks| networks.into_iter().map(InetNetwork::from).collect::<Vec<_>>()")
+ )]
pub routes: Vec<IpNetwork>,
/// Maximum Transmission Unit in the tunnel.
+ #[cfg_attr(target_os = "android", jnix(map = "|mtu| mtu as i32"))]
pub mtu: u16,
}