diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2026-04-21 15:02:25 +0000 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2026-04-22 12:34:04 +0200 |
| commit | f67cf15be13f3dc5c67466c7bc3d7ccf6b16a2d8 (patch) | |
| tree | 965a25c2e66499948459a3f61676da61c6d951b7 | |
| parent | fee9f6a5c74bedf74d6a9f8291648ee2e1ffaa42 (diff) | |
| download | mullvadvpn-f67cf15be13f3dc5c67466c7bc3d7ccf6b16a2d8.tar.xz mullvadvpn-f67cf15be13f3dc5c67466c7bc3d7ccf6b16a2d8.zip | |
Convert LeakInfo from single-variant enum to struct
| -rw-r--r-- | mullvad-daemon/src/management_interface.rs | 12 | ||||
| -rw-r--r-- | mullvad-leak-checker/src/lib.rs | 14 | ||||
| -rw-r--r-- | mullvad-leak-checker/src/traceroute/unix/linux_like.rs | 10 | ||||
| -rw-r--r-- | mullvad-leak-checker/src/traceroute/unix/macos.rs | 2 | ||||
| -rw-r--r-- | mullvad-leak-checker/src/traceroute/windows.rs | 10 |
5 files changed, 18 insertions, 30 deletions
diff --git a/mullvad-daemon/src/management_interface.rs b/mullvad-daemon/src/management_interface.rs index 5de38f50b4..a1df9a27db 100644 --- a/mullvad-daemon/src/management_interface.rs +++ b/mullvad-daemon/src/management_interface.rs @@ -1485,17 +1485,11 @@ impl ManagementInterfaceEventBroadcaster { /// Notify clients about a potential leak. pub(crate) fn notify_leak(&self, leak: mullvad_leak_checker::LeakInfo) { - use mullvad_leak_checker::LeakInfo; - let LeakInfo::NodeReachableOnInterface { + log::trace!("Broadcasting leak info: {leak:#?}"); + let mullvad_leak_checker::LeakInfo { reachable_nodes, interface, - } = &leak - else { - log::trace!("Matched on unexpected leak checker event: {leak:#?}"); - return; - }; - - log::trace!("Broadcasting leak info: {leak:#?}"); + } = &leak; let interface = match interface { mullvad_leak_checker::Interface::Name(name) => name.to_owned(), #[cfg(target_os = "macos")] diff --git a/mullvad-leak-checker/src/lib.rs b/mullvad-leak-checker/src/lib.rs index 5bd18bc094..e5f1163568 100644 --- a/mullvad-leak-checker/src/lib.rs +++ b/mullvad-leak-checker/src/lib.rs @@ -9,15 +9,13 @@ pub enum LeakStatus { LeakDetected(LeakInfo), } -/// Details about how a leak happened +/// Details about how a leak happened. +/// +/// Managed to reach another network node on the physical interface, bypassing firewall rules. #[derive(Clone, Debug)] -#[non_exhaustive] -pub enum LeakInfo { - /// Managed to reach another network node on the physical interface, bypassing firewall rules. - NodeReachableOnInterface { - reachable_nodes: Vec<IpAddr>, - interface: Interface, - }, +pub struct LeakInfo { + pub reachable_nodes: Vec<IpAddr>, + pub interface: Interface, } #[derive(Clone)] diff --git a/mullvad-leak-checker/src/traceroute/unix/linux_like.rs b/mullvad-leak-checker/src/traceroute/unix/linux_like.rs index dbca77fd2b..622949d6f7 100644 --- a/mullvad-leak-checker/src/traceroute/unix/linux_like.rs +++ b/mullvad-leak-checker/src/traceroute/unix/linux_like.rs @@ -252,12 +252,10 @@ async fn recv_ttl_responses( debug_assert!(!reachable_nodes.is_empty()); - Ok(LeakStatus::LeakDetected( - LeakInfo::NodeReachableOnInterface { - reachable_nodes, - interface: interface.clone(), - }, - )) + Ok(LeakStatus::LeakDetected(LeakInfo { + reachable_nodes, + interface: interface.clone(), + })) } struct RecvPacket<'a, S> { diff --git a/mullvad-leak-checker/src/traceroute/unix/macos.rs b/mullvad-leak-checker/src/traceroute/unix/macos.rs index 0fe1054ba3..3cf95dcfeb 100644 --- a/mullvad-leak-checker/src/traceroute/unix/macos.rs +++ b/mullvad-leak-checker/src/traceroute/unix/macos.rs @@ -142,7 +142,7 @@ async fn recv_ttl_responses( .context("Failed to read from raw socket")?, _timeout = timer => { - return Ok(LeakStatus::LeakDetected(LeakInfo::NodeReachableOnInterface { + return Ok(LeakStatus::LeakDetected(LeakInfo { reachable_nodes, interface: interface.clone(), })); diff --git a/mullvad-leak-checker/src/traceroute/windows.rs b/mullvad-leak-checker/src/traceroute/windows.rs index 6f6c787150..79a39cae4d 100644 --- a/mullvad-leak-checker/src/traceroute/windows.rs +++ b/mullvad-leak-checker/src/traceroute/windows.rs @@ -86,12 +86,10 @@ pub async fn traceroute_using_ping(opt: &TracerouteOpt) -> anyhow::Result<LeakSt while let Some(result) = ping_tasks.next().await { let Some(ip) = result? else { continue }; - return Ok(LeakStatus::LeakDetected( - LeakInfo::NodeReachableOnInterface { - reachable_nodes: vec![ip], - interface: opt.interface.clone(), - }, - )); + return Ok(LeakStatus::LeakDetected(LeakInfo { + reachable_nodes: vec![ip], + interface: opt.interface.clone(), + })); } anyhow::Ok(LeakStatus::NoLeak) |
