summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-09-09 14:53:06 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-09-10 15:39:57 +0000
commit2f4540ab4cd00922726e87972570d5d927def56b (patch)
treea1381b205df2899bde94f2b4892cb9045a751ae1
parent510163fb57f89818a666a5ea5b762860fa41fc3e (diff)
downloadmullvadvpn-2f4540ab4cd00922726e87972570d5d927def56b.tar.xz
mullvadvpn-2f4540ab4cd00922726e87972570d5d927def56b.zip
Open dummy tunnel interface in blocking state
-rw-r--r--talpid-core/src/tunnel_state_machine/blocked_state.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/talpid-core/src/tunnel_state_machine/blocked_state.rs b/talpid-core/src/tunnel_state_machine/blocked_state.rs
index 2387d4e922..bdf054ab2c 100644
--- a/talpid-core/src/tunnel_state_machine/blocked_state.rs
+++ b/talpid-core/src/tunnel_state_machine/blocked_state.rs
@@ -30,6 +30,22 @@ impl BlockedState {
}
}
}
+
+ #[cfg(target_os = "android")]
+ fn create_blocking_tun(shared_values: &mut SharedTunnelStateValues) -> Option<BlockReason> {
+ match shared_values.tun_provider.create_tun_if_closed() {
+ Ok(()) => None,
+ Err(error) => {
+ log::error!(
+ "{}",
+ error.display_chain_with_msg(
+ "Failed to open tunnel adapter to drop packets for blocked state"
+ )
+ );
+ Some(BlockReason::SetFirewallPolicyError)
+ }
+ }
+ }
}
impl TunnelState for BlockedState {
@@ -40,6 +56,8 @@ impl TunnelState for BlockedState {
block_reason: Self::Bootstrap,
) -> (TunnelStateWrapper, TunnelStateTransition) {
let block_reason = Self::set_firewall_policy(shared_values).unwrap_or_else(|| block_reason);
+ #[cfg(target_os = "android")]
+ let block_reason = Self::create_blocking_tun(shared_values).unwrap_or_else(|| block_reason);
(
TunnelStateWrapper::from(BlockedState {