diff options
| author | Jeremy Cantrell <jmcantrell@gmail.com> | 2021-06-09 04:25:11 -0500 |
|---|---|---|
| committer | Emīls <emils@mullvad.net> | 2021-06-09 14:04:29 +0100 |
| commit | 6318fc744f64b1c7157d2585c6ecbfdde362925e (patch) | |
| tree | 7e96c7480a393cc61458269bb9378afde06ce8b5 | |
| parent | 401bcabff103fd42e1bf57823466ba533eb8262f (diff) | |
| download | mullvadvpn-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.md | 1 | ||||
| -rw-r--r-- | talpid-core/src/offline/linux.rs | 8 |
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(); |
