diff options
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt | 5 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 22 |
2 files changed, 27 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt index 65d123e31a..60dce6ff10 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt @@ -97,6 +97,10 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { setAutoConnect(daemonInterfaceAddress, autoConnect) } + fun setWireguardMtu(wireguardMtu: Int?) { + setWireguardMtu(daemonInterfaceAddress, wireguardMtu) + } + fun shutdown() { shutdown(daemonInterfaceAddress) } @@ -132,6 +136,7 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { private external fun setAccount(daemonInterfaceAddress: Long, accountToken: String?) private external fun setAllowLan(daemonInterfaceAddress: Long, allowLan: Boolean) private external fun setAutoConnect(daemonInterfaceAddress: Long, alwaysOn: Boolean) + private external fun setWireguardMtu(daemonInterfaceAddress: Long, wireguardMtu: Int?) private external fun shutdown(daemonInterfaceAddress: Long) private external fun updateRelaySettings( daemonInterfaceAddress: Long, diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index d26deeb2af..a95b4ae308 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -737,6 +737,28 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_setAuto #[no_mangle] #[allow(non_snake_case)] +pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_setWireguardMtu( + env: JNIEnv<'_>, + _: JObject<'_>, + daemon_interface_address: jlong, + wireguard_mtu: JObject<'_>, +) { + let env = JnixEnv::from(env); + + if let Some(daemon_interface) = get_daemon_interface(daemon_interface_address) { + let wireguard_mtu = Option::<i32>::from_java(&env, wireguard_mtu).map(|value| value as u16); + + if let Err(error) = daemon_interface.set_wireguard_mtu(wireguard_mtu) { + log::error!( + "{}", + error.display_chain_with_msg("Failed to set WireGuard MTU") + ); + } + } +} + +#[no_mangle] +#[allow(non_snake_case)] pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_shutdown( _: JNIEnv<'_>, _: JObject<'_>, |
