diff options
| author | David Lönnhager <david.l@mullvad.net> | 2020-11-09 13:19:52 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2020-11-16 13:18:54 +0100 |
| commit | 76fc767c9d6f19de858384efeda25df776557271 (patch) | |
| tree | e8d8d8be28cfb754d46adcd340bd925f76771147 | |
| parent | 3275b7eabd7ebec67819cb2b5f9dff3d3d692fe4 (diff) | |
| download | mullvadvpn-76fc767c9d6f19de858384efeda25df776557271.tar.xz mullvadvpn-76fc767c9d6f19de858384efeda25df776557271.zip | |
Correct gateways for OpenVPN IPv6 routes
| -rw-r--r-- | talpid-core/src/tunnel/openvpn.rs | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/talpid-core/src/tunnel/openvpn.rs b/talpid-core/src/tunnel/openvpn.rs index c8fcc633c6..b311a8bcbd 100644 --- a/talpid-core/src/tunnel/openvpn.rs +++ b/talpid-core/src/tunnel/openvpn.rs @@ -381,9 +381,12 @@ fn extract_routes(env: &HashMap<String, String>) -> Result<HashSet<RequiredRoute .map_err(RouteParseError::ParseGatewayAddress) .map_err(Error::ParseRouteError)?; let tun_gateway_ip6: Option<IpAddr> = if let Some(gateway) = env.get("ifconfig_ipv6_remote") { - Some(gateway.parse() - .map_err(RouteParseError::ParseGatewayAddress) - .map_err(Error::ParseRouteError)?) + Some( + gateway + .parse() + .map_err(RouteParseError::ParseGatewayAddress) + .map_err(Error::ParseRouteError)?, + ) } else { None }; @@ -393,16 +396,20 @@ fn extract_routes(env: &HashMap<String, String>) -> Result<HashSet<RequiredRoute tun_gateway_ip, tun_interface.to_string(), )); - let tun_node6 = if let Some(gateway) = tun_gateway_ip6 { + #[cfg(windows)] + let tun_node6 = if tun_gateway_ip6.is_some() { routing::NetNode::from(routing::Node::new( - gateway, + "fe80::8" + .parse() + .map_err(RouteParseError::ParseGatewayAddress) + .map_err(Error::ParseRouteError)?, tun_interface.to_string(), )) } else { - routing::NetNode::from(routing::Node::device( - tun_interface.to_string(), - )) + routing::NetNode::from(routing::Node::device(tun_interface.to_string())) }; + #[cfg(not(windows))] + let tun_node6 = routing::NetNode::from(routing::Node::device(tun_interface.to_string())); let ovpn_routes = parse_openvpn_dict_routes(env).map_err(Error::ParseRouteError)?; |
