diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-10-29 17:20:33 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-12-04 13:18:17 +0000 |
| commit | 3e0c6a16b0de29fe5b2b54709f69fc249a1d15d5 (patch) | |
| tree | fd32a218fdd1e79984cb26da324b7d1412a9cab6 | |
| parent | b56ba196b9af550ba9191cf53fb29daeb2b83371 (diff) | |
| download | mullvadvpn-3e0c6a16b0de29fe5b2b54709f69fc249a1d15d5.tar.xz mullvadvpn-3e0c6a16b0de29fe5b2b54709f69fc249a1d15d5.zip | |
Implement `MullvadDaemon.setDnsOptions` method
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt | 6 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 27 |
2 files changed, 32 insertions, 1 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 838fe80c31..083568f726 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt @@ -1,6 +1,7 @@ package net.mullvad.mullvadvpn.service import net.mullvad.mullvadvpn.model.AppVersionInfo +import net.mullvad.mullvadvpn.model.DnsOptions import net.mullvad.mullvadvpn.model.GeoIpLocation import net.mullvad.mullvadvpn.model.GetAccountDataResult import net.mullvad.mullvadvpn.model.KeygenEvent @@ -106,6 +107,10 @@ class MullvadDaemon(val vpnService: MullvadVpnService) { setAutoConnect(daemonInterfaceAddress, autoConnect) } + fun setDnsOptions(dnsOptions: DnsOptions) { + setDnsOptions(daemonInterfaceAddress, dnsOptions) + } + fun setWireguardMtu(wireguardMtu: Int?) { setWireguardMtu(daemonInterfaceAddress, wireguardMtu) } @@ -158,6 +163,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 setDnsOptions(daemonInterfaceAddress: Long, dnsOptions: DnsOptions) private external fun setWireguardMtu(daemonInterfaceAddress: Long, wireguardMtu: Int?) private external fun shutdown(daemonInterfaceAddress: Long) private external fun submitVoucher( diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index 48be979ac1..94d5d77313 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -21,7 +21,10 @@ use mullvad_daemon::{ exception_logging, logging, runtime::new_runtime_builder, version, Daemon, DaemonCommandChannel, }; use mullvad_rpc::{rest::Error as RestError, StatusCode}; -use mullvad_types::account::{AccountData, VoucherSubmission}; +use mullvad_types::{ + account::{AccountData, VoucherSubmission}, + settings::DnsOptions, +}; use std::{ io, path::{Path, PathBuf}, @@ -825,6 +828,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_setDnsOptions( + env: JNIEnv<'_>, + _: JObject<'_>, + daemon_interface_address: jlong, + dnsOptions: JObject<'_>, +) { + let env = JnixEnv::from(env); + + if let Some(daemon_interface) = get_daemon_interface(daemon_interface_address) { + let dns_options = DnsOptions::from_java(&env, dnsOptions); + + if let Err(error) = daemon_interface.set_dns_options(dns_options) { + log::error!( + "{}", + error.display_chain_with_msg("Failed to set custom DNS options") + ); + } + } +} + +#[no_mangle] +#[allow(non_snake_case)] pub extern "system" fn Java_net_mullvad_mullvadvpn_service_MullvadDaemon_setWireguardMtu( env: JNIEnv<'_>, _: JObject<'_>, |
