summaryrefslogtreecommitdiffhomepage
path: root/mullvad-daemon/src
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-04-23 09:43:16 +0200
committerDavid Lönnhager <david.l@mullvad.net>2021-05-17 11:08:50 +0200
commit09fa4dcce3cbf128a893344c0a22eb6cfb6b941e (patch)
tree37f7a702bdb5cc980ad95dda8ae4cf36166ac09a /mullvad-daemon/src
parent727015d63363922ec79ec4a3dcb79a34656d9468 (diff)
downloadmullvadvpn-09fa4dcce3cbf128a893344c0a22eb6cfb6b941e.tar.xz
mullvadvpn-09fa4dcce3cbf128a893344c0a22eb6cfb6b941e.zip
Obtain WG exit endpoint from relay selector
Diffstat (limited to 'mullvad-daemon/src')
-rw-r--r--mullvad-daemon/src/relays.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/mullvad-daemon/src/relays.rs b/mullvad-daemon/src/relays.rs
index 5b60369ad6..82a60fff55 100644
--- a/mullvad-daemon/src/relays.rs
+++ b/mullvad-daemon/src/relays.rs
@@ -323,6 +323,40 @@ impl RelaySelector {
relay_constraints
}
+ pub fn get_tunnel_exit_endpoint(
+ &mut self,
+ relay_constraints: &RelayConstraints,
+ ) -> Option<(Relay, MullvadEndpoint)> {
+ if relay_constraints.tunnel_protocol != Constraint::Only(TunnelType::Wireguard)
+ && relay_constraints.tunnel_protocol != Constraint::Any
+ {
+ return None;
+ }
+ if relay_constraints
+ .wireguard_constraints
+ .exit_location
+ .is_none()
+ {
+ return None;
+ }
+
+ let exit_constraints = RelayConstraints {
+ location: relay_constraints
+ .wireguard_constraints
+ .exit_location
+ .clone()
+ .unwrap(),
+ tunnel_protocol: Constraint::Only(TunnelType::Wireguard),
+ providers: relay_constraints.providers.clone(),
+ wireguard_constraints: WireguardConstraints {
+ exit_location: None,
+ ..WireguardConstraints::default()
+ },
+ ..RelayConstraints::default()
+ };
+ self.get_tunnel_endpoint_internal(&exit_constraints)
+ }
+
pub fn get_auto_proxy_settings(
&mut self,
bridge_constraints: &InternalBridgeConstraints,