diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-29 11:43:58 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-29 14:00:08 +0000 |
| commit | eebc252b9c9151c29976fef7b2cd0666ec443aba (patch) | |
| tree | 2f8d9c14d26c098305468f8c050a8e392a85f1a9 | |
| parent | 7ba9a024a66f585c0b18b32333682da886b2ca9f (diff) | |
| download | mullvadvpn-eebc252b9c9151c29976fef7b2cd0666ec443aba.tar.xz mullvadvpn-eebc252b9c9151c29976fef7b2cd0666ec443aba.zip | |
Implement `IntoJava` for `IpNetwork`
| -rw-r--r-- | Cargo.lock | 1 | ||||
| -rw-r--r-- | mullvad-jni/Cargo.toml | 1 | ||||
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 20 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 1 |
4 files changed, 22 insertions, 1 deletions
diff --git a/Cargo.lock b/Cargo.lock index d6232ef395..21b6d12bae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1166,6 +1166,7 @@ version = "0.1.0" dependencies = [ "err-derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "ipnetwork 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", "jni 0.12.2 (registry+https://github.com/rust-lang/crates.io-index)", "jsonrpc-client-core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/mullvad-jni/Cargo.toml b/mullvad-jni/Cargo.toml index 9b1482f315..5792fe27d1 100644 --- a/mullvad-jni/Cargo.toml +++ b/mullvad-jni/Cargo.toml @@ -12,6 +12,7 @@ crate_type = ["cdylib"] [dependencies] err-derive = "0.1.5" futures = "0.1" +ipnetwork = "0.14" jni = "0.12" jsonrpc-client-core = "0.5" lazy_static = "1" diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs index a67b42a5e7..ba88840715 100644 --- a/mullvad-jni/src/into_java.rs +++ b/mullvad-jni/src/into_java.rs @@ -1,8 +1,9 @@ use crate::get_class; +use ipnetwork::IpNetwork; use jni::{ objects::{JList, JObject, JString, JValue}, signature::JavaType, - sys::{jint, jsize}, + sys::{jint, jshort, jsize}, JNIEnv, }; use mullvad_types::{ @@ -145,6 +146,23 @@ impl<'env> IntoJava<'env> for IpAddr { } } +impl<'env> IntoJava<'env> for IpNetwork { + type JavaType = JObject<'env>; + + fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType { + let class = get_class("net/mullvad/mullvadvpn/model/InetNetwork"); + let address = env.auto_local(self.ip().into_java(env)); + let prefix_length = self.prefix() as jshort; + let parameters = [ + JValue::Object(address.as_obj()), + JValue::Short(prefix_length), + ]; + + env.new_object(&class, "(Ljava/net/InetAddress;S)V", ¶meters) + .expect("Failed to create InetNetwork Java object") + } +} + impl<'env> IntoJava<'env> for PublicKey { type JavaType = JObject<'env>; diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index bf9a0b5186..6a0f83fb60 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -30,6 +30,7 @@ const CLASSES_TO_LOAD: &[&str] = &[ "net/mullvad/mullvadvpn/model/AccountData", "net/mullvad/mullvadvpn/model/Constraint$Any", "net/mullvad/mullvadvpn/model/Constraint$Only", + "net/mullvad/mullvadvpn/model/InetNetwork", "net/mullvad/mullvadvpn/model/LocationConstraint$City", "net/mullvad/mullvadvpn/model/LocationConstraint$Country", "net/mullvad/mullvadvpn/model/LocationConstraint$Hostname", |
