diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-02-10 12:59:18 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-02-10 12:59:18 -0300 |
| commit | c9b3e7f007b0dd340ea810bca05abef36a325b7f (patch) | |
| tree | 9f97bb036d5ffebb87151286605d338269a04e1f /mullvad-jni/src | |
| parent | a043900434227595f05002abf65a3684e1ceb27a (diff) | |
| parent | 4b78acd9e140044b7faa46ec08d40ced06ad39df (diff) | |
| download | mullvadvpn-c9b3e7f007b0dd340ea810bca05abef36a325b7f.tar.xz mullvadvpn-c9b3e7f007b0dd340ea810bca05abef36a325b7f.zip | |
Merge branch 'allow-lan-ui-setting'
Diffstat (limited to 'mullvad-jni/src')
| -rw-r--r-- | mullvad-jni/src/daemon_interface.rs | 8 | ||||
| -rw-r--r-- | mullvad-jni/src/from_java.rs | 13 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 22 |
3 files changed, 42 insertions, 1 deletions
diff --git a/mullvad-jni/src/daemon_interface.rs b/mullvad-jni/src/daemon_interface.rs index fdd03435bf..7071dee363 100644 --- a/mullvad-jni/src/daemon_interface.rs +++ b/mullvad-jni/src/daemon_interface.rs @@ -168,6 +168,14 @@ impl DaemonInterface { rx.wait().map_err(|_| Error::NoResponse) } + pub fn set_allow_lan(&self, allow_lan: bool) -> Result<()> { + let (tx, rx) = oneshot::channel(); + + self.send_command(ManagementCommand::SetAllowLan(tx, allow_lan))?; + + rx.wait().map_err(|_| Error::NoResponse) + } + pub fn shutdown(&self) -> Result<()> { self.send_command(ManagementCommand::Shutdown) } diff --git a/mullvad-jni/src/from_java.rs b/mullvad-jni/src/from_java.rs index 9cccd738d7..3caf3fd523 100644 --- a/mullvad-jni/src/from_java.rs +++ b/mullvad-jni/src/from_java.rs @@ -1,6 +1,9 @@ use crate::is_null::IsNull; use jnix::{ - jni::objects::{JObject, JString}, + jni::{ + objects::{JObject, JString}, + sys::{jboolean, JNI_FALSE}, + }, JnixEnv, }; use mullvad_types::relay_constraints::{ @@ -14,6 +17,14 @@ pub trait FromJava<'env> { fn from_java(env: &JnixEnv<'env>, source: Self::JavaType) -> Self; } +impl<'env> FromJava<'env> for bool { + type JavaType = jboolean; + + fn from_java(_: &JnixEnv<'env>, source: Self::JavaType) -> Self { + source != JNI_FALSE + } +} + impl<'env, T> FromJava<'env> for Option<T> where T: FromJava<'env>, diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index 89528da8c6..7e6dd7f99f 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -650,6 +650,28 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_setAcco #[no_mangle] #[allow(non_snake_case)] +pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_setAllowLan( + env: JNIEnv<'_>, + _: JObject<'_>, + daemon_interface_address: jlong, + allow_lan: jboolean, +) { + let env = JnixEnv::from(env); + + if let Some(daemon_interface) = get_daemon_interface(daemon_interface_address) { + let allow_lan = bool::from_java(&env, allow_lan); + + if let Err(error) = daemon_interface.set_allow_lan(allow_lan) { + log::error!( + "{}", + error.display_chain_with_msg("Failed to set allow LAN") + ); + } + } +} + +#[no_mangle] +#[allow(non_snake_case)] pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_shutdown( _: JNIEnv<'_>, _: JObject<'_>, |
