summaryrefslogtreecommitdiffhomepage
path: root/talpid-core
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2017-11-30 10:15:59 +0100
committerLinus Färnstrand <linus@mullvad.net>2017-12-04 10:26:49 +0100
commit3d2cd5aa958158de529599658c1618ed666ee3cd (patch)
treec605e30a90a4002c33aa7911f5a264eb2907e346 /talpid-core
parent5b065ed97f89cb79be29eef8de9625959e739355 (diff)
downloadmullvadvpn-3d2cd5aa958158de529599658c1618ed666ee3cd.tar.xz
mullvadvpn-3d2cd5aa958158de529599658c1618ed666ee3cd.zip
Use the macOS dns module to set DNS when connected
Diffstat (limited to 'talpid-core')
-rw-r--r--talpid-core/src/firewall/macos/mod.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/talpid-core/src/firewall/macos/mod.rs b/talpid-core/src/firewall/macos/mod.rs
index d92c66fe08..9065a607d6 100644
--- a/talpid-core/src/firewall/macos/mod.rs
+++ b/talpid-core/src/firewall/macos/mod.rs
@@ -51,6 +51,7 @@ impl Firewall<Error> for PacketFilter {
self.remove_rules(),
self.remove_anchor(),
self.restore_state(),
+ self.restore_dns(),
].into_iter()
.collect::<Result<Vec<_>>>()
.map(|_| ())
@@ -87,6 +88,8 @@ impl PacketFilter {
Ok(vec![Self::get_allow_relay_rule(relay_endpoint)?])
}
SecurityPolicy::Connected(relay_endpoint, tunnel) => {
+ self.dns_monitor.set_dns(vec![tunnel.gateway.to_string()])?;
+
let allow_tcp_dns_to_relay_rule = pfctl::FilterRuleBuilder::default()
.action(pfctl::FilterRuleAction::Pass)
.direction(pfctl::Direction::Out)
@@ -215,6 +218,10 @@ impl PacketFilter {
}
}
+ fn restore_dns(&self) -> Result<()> {
+ Ok(self.dns_monitor.reset()?)
+ }
+
fn add_anchor(&mut self) -> Result<()> {
self.pf
.try_add_anchor(ANCHOR_NAME, pfctl::AnchorKind::Filter)?;