summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-10-29 17:20:33 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-12-04 13:18:17 +0000
commit3e0c6a16b0de29fe5b2b54709f69fc249a1d15d5 (patch)
treefd32a218fdd1e79984cb26da324b7d1412a9cab6
parentb56ba196b9af550ba9191cf53fb29daeb2b83371 (diff)
downloadmullvadvpn-3e0c6a16b0de29fe5b2b54709f69fc249a1d15d5.tar.xz
mullvadvpn-3e0c6a16b0de29fe5b2b54709f69fc249a1d15d5.zip
Implement `MullvadDaemon.setDnsOptions` method
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadDaemon.kt6
-rw-r--r--mullvad-jni/src/lib.rs27
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<'_>,