diff options
| author | David Lönnhager <david.l@mullvad.net> | 2020-05-06 21:56:14 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2020-05-13 17:56:36 +0200 |
| commit | 256cfc5f85b93f72b264ce37ba4af891cd095864 (patch) | |
| tree | 5d90011a0b730a8bb5d19a6d38587c918db4fcbb /talpid-core/src | |
| parent | e7da57005597765885e73c354b24fc75f04a027c (diff) | |
| download | mullvadvpn-256cfc5f85b93f72b264ce37ba4af891cd095864.tar.xz mullvadvpn-256cfc5f85b93f72b264ce37ba4af891cd095864.zip | |
Add RouteManager::clear_routes
Diffstat (limited to 'talpid-core/src')
| -rw-r--r-- | talpid-core/src/routing/linux.rs | 4 | ||||
| -rw-r--r-- | talpid-core/src/routing/unix.rs | 12 |
2 files changed, 16 insertions, 0 deletions
diff --git a/talpid-core/src/routing/linux.rs b/talpid-core/src/routing/linux.rs index b1087bfdc0..d9f272639d 100644 --- a/talpid-core/src/routing/linux.rs +++ b/talpid-core/src/routing/linux.rs @@ -445,6 +445,10 @@ impl RouteManagerImplInner { log::debug!("Adding routes: {:?}", routes); self.add_required_routes(routes).await?; } + RouteManagerCommand::ClearRoutes => { + log::debug!("Clearing routes"); + self.cleanup_routes().await; + } } Ok(()) } diff --git a/talpid-core/src/routing/unix.rs b/talpid-core/src/routing/unix.rs index f15877f494..151c642c41 100644 --- a/talpid-core/src/routing/unix.rs +++ b/talpid-core/src/routing/unix.rs @@ -45,6 +45,7 @@ pub enum Error { #[derive(Debug)] pub enum RouteManagerCommand { AddRoutes(HashSet<RequiredRoute>), + ClearRoutes, Shutdown(oneshot::Sender<()>), } @@ -113,6 +114,17 @@ impl RouteManager { Err(Error::RouteManagerDown) } } + + /// Removes all routes previously applied in [`RouteManager::new`] or + /// [`RouteManager::add_routes`]. + pub fn clear_routes(&mut self) -> Result<(), Error> { + if let Some(tx) = &self.manage_tx { + let _ = tx.unbounded_send(RouteManagerCommand::ClearRoutes); + Ok(()) + } else { + Err(Error::RouteManagerDown) + } + } } impl Drop for RouteManager { |
