summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEmīls <emils@mullvad.net>2021-02-15 10:52:58 +0000
committerEmīls <emils@mullvad.net>2021-02-15 10:52:58 +0000
commitf00c38e8e90b85fb9c397d07aeb21e1c08e17e1f (patch)
treee1fe19fa785c8ee1bfb46cdd0896a813ed6991d5
parentb6c066c8bc86deaf6b1d80296bdbd9e3fd3c5c77 (diff)
downloadmullvadvpn-f00c38e8e90b85fb9c397d07aeb21e1c08e17e1f.tar.xz
mullvadvpn-f00c38e8e90b85fb9c397d07aeb21e1c08e17e1f.zip
Stop applying IPv6 routes for OpenVPN
-rw-r--r--CHANGELOG.md3
-rw-r--r--talpid-core/src/routing/mod.rs3
-rw-r--r--talpid-core/src/tunnel/openvpn/mod.rs7
3 files changed, 11 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e0939c8ed8..1d9029e278 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -43,6 +43,9 @@ Line wrap the file at 100 chars. Th
### Fixed
- Fix delay in showing/hiding update notification when toggling beta program.
+#### Linux
+- Fix crash when trying to apply IPv6 rotues for OpenVPN when IPv6 is disabled.
+
## [2021.1] - 2021-02-10
### Fixed
diff --git a/talpid-core/src/routing/mod.rs b/talpid-core/src/routing/mod.rs
index d1508f7c5f..a8491a8588 100644
--- a/talpid-core/src/routing/mod.rs
+++ b/talpid-core/src/routing/mod.rs
@@ -64,7 +64,8 @@ impl fmt::Display for Route {
/// default route.
#[derive(Debug, Hash, Eq, PartialEq, Clone)]
pub struct RequiredRoute {
- prefix: IpNetwork,
+ /// Route's prefix
+ pub prefix: IpNetwork,
node: NetNode,
#[cfg(target_os = "linux")]
table_id: u32,
diff --git a/talpid-core/src/tunnel/openvpn/mod.rs b/talpid-core/src/tunnel/openvpn/mod.rs
index 38a1d26d22..3446c6d0d6 100644
--- a/talpid-core/src/tunnel/openvpn/mod.rs
+++ b/talpid-core/src/tunnel/openvpn/mod.rs
@@ -295,11 +295,16 @@ impl OpenVpnMonitor<OpenVpnCommand> {
#[cfg(target_os = "linux")]
let route_manager_handle = route_manager.handle().map_err(Error::SetupRoutingError)?;
+ let ipv6_enabled = params.generic_options.enable_ipv6;
let on_openvpn_event = move |event, env: HashMap<String, String>| {
#[cfg(target_os = "linux")]
if event == openvpn_plugin::EventType::Up {
tokio::task::block_in_place(|| {
- let routes = extract_routes(&env).unwrap();
+ let routes = extract_routes(&env)
+ .unwrap()
+ .into_iter()
+ .filter(|route| route.prefix.is_ipv4() || ipv6_enabled)
+ .collect();
let route_manager_handle = route_manager_handle.clone();
if let Err(error) = route_manager_handle.add_routes(routes) {
log::error!("{}", error.display_chain());