diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-11-21 15:15:02 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-11-22 15:16:54 +0000 |
| commit | 7d97d483fdaf5165fbe923f82ebafd6b8ebd084c (patch) | |
| tree | 8a10005a7ae7284989e765c0f511a933e92c21f3 | |
| parent | 5166c453faa029b3a960cc27b56b399d3b9e37fd (diff) | |
| download | mullvadvpn-7d97d483fdaf5165fbe923f82ebafd6b8ebd084c.tar.xz mullvadvpn-7d97d483fdaf5165fbe923f82ebafd6b8ebd084c.zip | |
Derive `IntoJava` for `TunConfig`
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/talpid/tun_provider/TunConfig.kt | 7 | ||||
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 30 | ||||
| -rw-r--r-- | talpid-core/src/tunnel/tun_provider/mod.rs | 10 |
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", - ¶meters, - ) - .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, } |
