Skip to content

Commit aab384f

Browse files
committedJan 8, 2025
Rewrite in functional style
1 parent b23da79 commit aab384f

File tree

1 file changed

+21
-23
lines changed
  • test/test-manager/src/vm/network

1 file changed

+21
-23
lines changed
 

‎test/test-manager/src/vm/network/macos.rs

+21-23
Original file line numberDiff line numberDiff line change
@@ -47,31 +47,29 @@ pub async fn setup_test_network() -> Result<()> {
4747
/// Returns the interface name and IP address of the bridge gateway, which is the (first) bridge
4848
/// network that the given `guest_ip` belongs to.
4949
pub(crate) fn find_vm_bridge(guest_ip: &Ipv4Addr) -> Result<(String, Ipv4Addr)> {
50-
for addr in nix::ifaddrs::getifaddrs()
50+
let to_sock_addr = |addr: Option<SockaddrStorage>| {
51+
addr.as_ref()
52+
.and_then(|addr| addr.as_sockaddr_in())
53+
.map(|addr| *SocketAddrV4::from(*addr).ip())
54+
};
55+
56+
nix::ifaddrs::getifaddrs()
5157
.unwrap()
5258
.filter(|addr| addr.interface_name.starts_with("bridge"))
53-
{
54-
let to_sock_addr = |addr: Option<SockaddrStorage>| {
55-
addr.as_ref()
56-
.and_then(|addr| addr.as_sockaddr_in())
57-
.map(|addr| *SocketAddrV4::from(*addr).ip())
58-
};
59-
60-
if let (Some(address), Some(netmask)) =
61-
(to_sock_addr(addr.address), to_sock_addr(addr.netmask))
62-
{
63-
if let Ok(ip_v4_network) = ipnetwork::Ipv4Network::with_netmask(address, netmask) {
64-
if ip_v4_network.contains(*guest_ip) {
65-
return Ok((addr.interface_name.to_owned(), address));
66-
}
67-
};
68-
};
69-
}
70-
71-
// This is probably either due to IP mismatch or Tart not running
72-
Err(anyhow!(
73-
"Failed to identify bridge used by tart -- not running?"
74-
))
59+
.filter_map(|addr| {
60+
let address = to_sock_addr(addr.address);
61+
let netmask = to_sock_addr(addr.netmask);
62+
address
63+
.zip(netmask)
64+
.map(|(address, netmask)| (addr.interface_name, address, netmask))
65+
})
66+
.find_map(|(interface_name, address, netmask)| {
67+
ipnetwork::Ipv4Network::with_netmask(address, netmask)
68+
.ok()
69+
.filter(|ip_v4_network| ip_v4_network.contains(*guest_ip))
70+
.map(|_| (interface_name.to_owned(), address))
71+
})
72+
.ok_or_else(|| anyhow!("Failed to identify bridge used by tart -- not running?"))
7573
}
7674

7775
async fn enable_forwarding() -> Result<()> {

0 commit comments

Comments
 (0)
Failed to load comments.