summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJeremy Cantrell <jmcantrell@gmail.com>2021-06-09 04:25:11 -0500
committerEmīls <emils@mullvad.net>2021-06-09 14:04:29 +0100
commit6318fc744f64b1c7157d2585c6ecbfdde362925e (patch)
tree7e96c7480a393cc61458269bb9378afde06ce8b5
parent401bcabff103fd42e1bf57823466ba533eb8262f (diff)
downloadmullvadvpn-6318fc744f64b1c7157d2585c6ecbfdde362925e.tar.xz
mullvadvpn-6318fc744f64b1c7157d2585c6ecbfdde362925e.zip
Make offline monitor aware of routing table changes.
I added the flags to the test, too, even though the test is only checking for the presence of a route. I'm not sure how this change could be tested without making changes to the routing table in the test environment. Signed-off-by: Emīls <emils@mullvad.net>
-rw-r--r--CHANGELOG.md1
-rw-r--r--talpid-core/src/offline/linux.rs8
2 files changed, 5 insertions, 4 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index db0a472934..ba340512da 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -77,6 +77,7 @@ This release is for desktop only.
#### Linux
- Fix find `mullvad-vpn.desktop` in `XDG_DATA_DIRS` instead of using hardcoded path.
+- Make offline monitor aware of routing table changes.
#### MacOS
- Set correct permissions for daemon's launch file in installer.
diff --git a/talpid-core/src/offline/linux.rs b/talpid-core/src/offline/linux.rs
index fbdf2d8700..bb953a33bf 100644
--- a/talpid-core/src/offline/linux.rs
+++ b/talpid-core/src/offline/linux.rs
@@ -8,7 +8,7 @@ use netlink_packet_route::{
rtnl::route::nlas::Nla as RouteNla, NetlinkMessage, RouteFlags, RouteMessage, RtnlMessage,
};
use rtnetlink::{
- constants::{RTMGRP_IPV4_IFADDR, RTMGRP_IPV6_IFADDR, RTMGRP_LINK, RTMGRP_NOTIFY},
+ constants::{RTMGRP_IPV4_IFADDR, RTMGRP_IPV4_ROUTE, RTMGRP_IPV6_IFADDR, RTMGRP_IPV6_ROUTE, RTMGRP_LINK, RTMGRP_NOTIFY},
sys::SocketAddr,
Handle, IpVersion,
};
@@ -82,7 +82,7 @@ pub async fn spawn_monitor(sender: Weak<UnboundedSender<TunnelCommand>>) -> Resu
let (mut connection, handle, mut messages) =
rtnetlink::new_connection().map_err(Error::NetlinkConnectionError)?;
- let mgroup_flags = RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR | RTMGRP_LINK | RTMGRP_NOTIFY;
+ let mgroup_flags = RTMGRP_IPV4_IFADDR | RTMGRP_IPV4_ROUTE | RTMGRP_IPV6_IFADDR | RTMGRP_IPV6_ROUTE | RTMGRP_LINK | RTMGRP_NOTIFY;
let addr = SocketAddr::new(0, mgroup_flags);
connection
@@ -187,7 +187,7 @@ pub fn execute_route_get_request(
mod test {
use super::*;
use rtnetlink::{
- constants::{RTMGRP_IPV4_IFADDR, RTMGRP_IPV6_IFADDR, RTMGRP_LINK, RTMGRP_NOTIFY},
+ constants::{RTMGRP_IPV4_IFADDR, RTMGRP_IPV4_ROUTE, RTMGRP_IPV6_IFADDR, RTMGRP_IPV6_ROUTE, RTMGRP_LINK, RTMGRP_NOTIFY},
sys::SocketAddr,
};
@@ -200,7 +200,7 @@ mod test {
.expect("Failed to create a netlink connection")
});
- let mgroup_flags = RTMGRP_IPV4_IFADDR | RTMGRP_IPV6_IFADDR | RTMGRP_LINK | RTMGRP_NOTIFY;
+ let mgroup_flags = RTMGRP_IPV4_IFADDR | RTMGRP_IPV4_ROUTE | RTMGRP_IPV6_IFADDR | RTMGRP_IPV6_ROUTE | RTMGRP_LINK | RTMGRP_NOTIFY;
let addr = SocketAddr::new(0, mgroup_flags);
connection.socket_mut().bind(&addr).unwrap();