diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-01-24 10:32:55 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-02-06 12:05:57 +0000 |
| commit | cd3784f31e30356b101b2597e390811f836a89d5 (patch) | |
| tree | a2579b585f8ad5997464dcd428b23e51cebeb3a3 | |
| parent | 1b719c9ff141a68c3b8a073159b27846ced06666 (diff) | |
| download | mullvadvpn-cd3784f31e30356b101b2597e390811f836a89d5.tar.xz mullvadvpn-cd3784f31e30356b101b2597e390811f836a89d5.zip | |
Add required routes to `TunConfig` on Android
| -rw-r--r-- | talpid-core/src/tunnel/tun_provider/android/mod.rs | 1 | ||||
| -rw-r--r-- | talpid-core/src/tunnel/tun_provider/mod.rs | 5 | ||||
| -rw-r--r-- | talpid-core/src/tunnel/wireguard/wireguard_go.rs | 14 |
3 files changed, 20 insertions, 0 deletions
diff --git a/talpid-core/src/tunnel/tun_provider/android/mod.rs b/talpid-core/src/tunnel/tun_provider/android/mod.rs index 229118656f..70ce5f3bd4 100644 --- a/talpid-core/src/tunnel/tun_provider/android/mod.rs +++ b/talpid-core/src/tunnel/tun_provider/android/mod.rs @@ -85,6 +85,7 @@ impl AndroidTunProvider { IpNetwork::new(IpAddr::V6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)), 0) .expect("Invalid IP network prefix for IPv6 address"), ], + required_routes: vec![], mtu: 1380, }; diff --git a/talpid-core/src/tunnel/tun_provider/mod.rs b/talpid-core/src/tunnel/tun_provider/mod.rs index 882d42207c..9ac1e14895 100644 --- a/talpid-core/src/tunnel/tun_provider/mod.rs +++ b/talpid-core/src/tunnel/tun_provider/mod.rs @@ -51,6 +51,11 @@ pub struct TunConfig { )] pub routes: Vec<IpNetwork>, + /// Routes that are required to be configured for the tunnel. + #[cfg(target_os = "android")] + #[jnix(skip)] + pub required_routes: Vec<IpNetwork>, + /// Maximum Transmission Unit in the tunnel. #[cfg_attr(target_os = "android", jnix(map = "|mtu| mtu as i32"))] pub mtu: u16, diff --git a/talpid-core/src/tunnel/wireguard/wireguard_go.rs b/talpid-core/src/tunnel/wireguard/wireguard_go.rs index c569c8727e..f0c79b595d 100644 --- a/talpid-core/src/tunnel/wireguard/wireguard_go.rs +++ b/talpid-core/src/tunnel/wireguard/wireguard_go.rs @@ -234,11 +234,25 @@ impl WgGoTunnel { addresses: config.tunnel.addresses.clone(), dns_servers, routes: routes.collect(), + #[cfg(target_os = "android")] + required_routes: Self::create_required_routes(config), mtu: config.mtu, } } #[cfg(target_os = "android")] + fn create_required_routes(config: &Config) -> Vec<IpNetwork> { + let mut required_routes = vec![IpNetwork::new(IpAddr::V4(config.ipv4_gateway), 32) + .expect("Invalid IPv4 network prefix")]; + + required_routes.extend(config.ipv6_gateway.map(|address| { + IpNetwork::new(IpAddr::V6(address), 128).expect("Invalid IPv6 network prefix") + })); + + required_routes + } + + #[cfg(target_os = "android")] fn bypass_tunnel_sockets( tunnel_device: &mut Tun, handle: i32, |
