summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2023-11-08 12:57:06 +0100
committerDavid Lönnhager <david.l@mullvad.net>2023-11-13 10:53:39 +0100
commit4575d5e105bf38b4a75abbfd20f431b6bccf5d18 (patch)
tree55d05770c2a4362d958fb72e15764a4f9e3c9243
parente67621953939078ac297375fd584e432e848764c (diff)
downloadmullvadvpn-4575d5e105bf38b4a75abbfd20f431b6bccf5d18.tar.xz
mullvadvpn-4575d5e105bf38b4a75abbfd20f431b6bccf5d18.zip
Add relay overrides setting
-rw-r--r--mullvad-types/src/relay_constraints.rs19
-rw-r--r--mullvad-types/src/settings/mod.rs10
2 files changed, 25 insertions, 4 deletions
diff --git a/mullvad-types/src/relay_constraints.rs b/mullvad-types/src/relay_constraints.rs
index fffc6e03de..219d0940ba 100644
--- a/mullvad-types/src/relay_constraints.rs
+++ b/mullvad-types/src/relay_constraints.rs
@@ -10,7 +10,12 @@ use crate::{
#[cfg(target_os = "android")]
use jnix::{jni::objects::JObject, FromJava, IntoJava, JnixEnv};
use serde::{Deserialize, Serialize};
-use std::{collections::HashSet, fmt, str::FromStr};
+use std::{
+ collections::HashSet,
+ fmt,
+ net::{Ipv4Addr, Ipv6Addr},
+ str::FromStr,
+};
use talpid_types::net::{openvpn::ProxySettings, IpVersion, TransportProtocol, TunnelType};
pub trait Match<T> {
@@ -991,3 +996,15 @@ pub struct InternalBridgeConstraints {
pub ownership: Constraint<Ownership>,
pub transport_protocol: Constraint<TransportProtocol>,
}
+
+/// Options to override for a particular relay to use instead of the ones specified in the relay
+/// list
+#[derive(Debug, Clone, Eq, PartialEq, Deserialize, Serialize)]
+pub struct RelayOverride {
+ /// Hostname for which to override the given options
+ pub hostname: Hostname,
+ /// IPv4 address to use instead of the default
+ pub ipv4_addr_in: Option<Ipv4Addr>,
+ /// IPv6 address to use instead of the default
+ pub ipv6_addr_in: Option<Ipv6Addr>,
+}
diff --git a/mullvad-types/src/settings/mod.rs b/mullvad-types/src/settings/mod.rs
index 5978c6a736..2ed2d79394 100644
--- a/mullvad-types/src/settings/mod.rs
+++ b/mullvad-types/src/settings/mod.rs
@@ -3,7 +3,7 @@ use crate::{
custom_list::CustomListsSettings,
relay_constraints::{
BridgeConstraints, BridgeSettings, BridgeState, Constraint, GeographicLocationConstraint,
- LocationConstraint, ObfuscationSettings, RelayConstraints, RelaySettings,
+ LocationConstraint, ObfuscationSettings, RelayConstraints, RelayOverride, RelaySettings,
RelaySettingsFormatter, SelectedObfuscation, WireguardConstraints,
},
wireguard,
@@ -91,6 +91,9 @@ pub struct Settings {
/// Options that should be applied to tunnels of a specific type regardless of where the relays
/// might be located.
pub tunnel_options: TunnelOptions,
+ /// Overrides for relays
+ #[cfg_attr(target_os = "android", jnix(skip))]
+ pub relay_overrides: Vec<RelayOverride>,
/// Whether to notify users of beta updates.
pub show_beta_releases: bool,
/// Split tunneling settings
@@ -131,16 +134,17 @@ impl Default for Settings {
..Default::default()
},
bridge_state: BridgeState::Auto,
+ custom_lists: CustomListsSettings::default(),
+ api_access_methods: access_method::Settings::default(),
allow_lan: false,
block_when_disconnected: false,
auto_connect: false,
tunnel_options: TunnelOptions::default(),
+ relay_overrides: vec![],
show_beta_releases: false,
#[cfg(windows)]
split_tunnel: SplitTunnelSettings::default(),
settings_version: CURRENT_SETTINGS_VERSION,
- custom_lists: CustomListsSettings::default(),
- api_access_methods: access_method::Settings::default(),
}
}
}