summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-29 11:43:58 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-29 14:00:08 +0000
commiteebc252b9c9151c29976fef7b2cd0666ec443aba (patch)
tree2f8d9c14d26c098305468f8c050a8e392a85f1a9
parent7ba9a024a66f585c0b18b32333682da886b2ca9f (diff)
downloadmullvadvpn-eebc252b9c9151c29976fef7b2cd0666ec443aba.tar.xz
mullvadvpn-eebc252b9c9151c29976fef7b2cd0666ec443aba.zip
Implement `IntoJava` for `IpNetwork`
-rw-r--r--Cargo.lock1
-rw-r--r--mullvad-jni/Cargo.toml1
-rw-r--r--mullvad-jni/src/into_java.rs20
-rw-r--r--mullvad-jni/src/lib.rs1
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", &parameters)
+ .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",