diff options
Diffstat (limited to 'mullvad-jni/src/into_java.rs')
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 20 |
1 files changed, 19 insertions, 1 deletions
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>; |
