summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mullvad-jni/src/into_java.rs19
-rw-r--r--mullvad-jni/src/lib.rs1
2 files changed, 19 insertions, 1 deletions
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs
index e51e9e036e..9998982532 100644
--- a/mullvad-jni/src/into_java.rs
+++ b/mullvad-jni/src/into_java.rs
@@ -17,7 +17,10 @@ use mullvad_types::{
wireguard::KeygenEvent,
CustomTunnelEndpoint,
};
-use std::{fmt::Debug, net::IpAddr};
+use std::{
+ fmt::Debug,
+ net::{IpAddr, SocketAddr},
+};
use talpid_core::tunnel::tun_provider::TunConfig;
use talpid_types::{
net::{wireguard::PublicKey, TransportProtocol},
@@ -161,6 +164,20 @@ impl<'env> IntoJava<'env> for IpAddr {
}
}
+impl<'env> IntoJava<'env> for SocketAddr {
+ type JavaType = JObject<'env>;
+
+ fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType {
+ let class = get_class("java/net/InetSocketAddress");
+ let ip_address = env.auto_local(self.ip().into_java(env));
+ let port = self.port() as jint;
+ let parameters = [JValue::Object(ip_address.as_obj()), JValue::Int(port)];
+
+ env.new_object(&class, "(Ljava/net/InetAddress;I)V", &parameters)
+ .expect("Failed to create InetSocketAddress Java object")
+ }
+}
+
impl<'env> IntoJava<'env> for IpNetwork {
type JavaType = JObject<'env>;
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index baeb4875dc..0d69c2518b 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -31,6 +31,7 @@ const LOG_FILENAME: &str = "daemon.log";
const CLASSES_TO_LOAD: &[&str] = &[
"java/net/InetAddress",
+ "java/net/InetSocketAddress",
"java/util/ArrayList",
"java/util/List",
"net/mullvad/mullvadvpn/model/AccountData",