summaryrefslogtreecommitdiffhomepage
path: root/talpid-routing
diff options
context:
space:
mode:
authorAndrej Mihajlov <and.mikhaylov@gmail.com>2024-03-07 09:45:06 +0100
committerDavid Lönnhager <david.l@mullvad.net>2024-03-07 14:39:51 +0100
commit5b81fe6e6d4bb5a1ba615205f3a0bc082d97f6fa (patch)
tree9fd4ba564d10042435afa06c4afd421c468db1ed /talpid-routing
parent9cf15cb93974efddfabadc21fbea0cd9abe72e6d (diff)
downloadmullvadvpn-5b81fe6e6d4bb5a1ba615205f3a0bc082d97f6fa.tar.xz
mullvadvpn-5b81fe6e6d4bb5a1ba615205f3a0bc082d97f6fa.zip
Bump nix
Diffstat (limited to 'talpid-routing')
-rw-r--r--talpid-routing/Cargo.toml3
-rw-r--r--talpid-routing/src/unix/macos/interface.rs2
-rw-r--r--talpid-routing/src/unix/macos/routing_socket.rs12
3 files changed, 9 insertions, 8 deletions
diff --git a/talpid-routing/Cargo.toml b/talpid-routing/Cargo.toml
index 16b9468063..063ccd2ea8 100644
--- a/talpid-routing/Cargo.toml
+++ b/talpid-routing/Cargo.toml
@@ -28,8 +28,7 @@ netlink-packet-route = { version = "0.13", features = ["rich_nlas"] }
netlink-sys = "0.8.3"
[target.'cfg(target_os = "macos")'.dependencies]
-# TODO: The PF socket type isn't released yet
-nix = { git = "https://github.com/nix-rust/nix", rev = "b13b7d18e0d2f4a8c05e41576c7ebf26d6dbfb28", features = ["socket"] }
+nix = { version = "0.28", features = ["socket", "fs", "net"] }
libc = "0.2"
bitflags = "2"
system-configuration = "0.5.1"
diff --git a/talpid-routing/src/unix/macos/interface.rs b/talpid-routing/src/unix/macos/interface.rs
index f2b8383d94..ebfe11fa16 100644
--- a/talpid-routing/src/unix/macos/interface.rs
+++ b/talpid-routing/src/unix/macos/interface.rs
@@ -307,7 +307,7 @@ fn is_active_interface(interface_name: &str, family: Family) -> io::Result<bool>
if let Some(addr) = addr.address {
// Check if family matches; ignore if link-local address
match family {
- Family::V4 => matches!(addr.as_sockaddr_in(), Some(addr_in) if is_routable_v4(&Ipv4Addr::from(addr_in.ip()))),
+ Family::V4 => matches!(addr.as_sockaddr_in(), Some(addr_in) if is_routable_v4(&addr_in.ip())),
Family::V6 => {
matches!(addr.as_sockaddr_in6(), Some(addr_in) if is_routable_v6(&addr_in.ip()))
}
diff --git a/talpid-routing/src/unix/macos/routing_socket.rs b/talpid-routing/src/unix/macos/routing_socket.rs
index e82b8522aa..14e8ee088d 100644
--- a/talpid-routing/src/unix/macos/routing_socket.rs
+++ b/talpid-routing/src/unix/macos/routing_socket.rs
@@ -1,7 +1,6 @@
use std::{
collections::VecDeque,
mem::size_of,
- os::unix::prelude::{FromRawFd, RawFd},
pin::Pin,
task::{ready, Context, Poll},
time::Duration,
@@ -14,6 +13,7 @@ use nix::{
use std::{
fs::File,
io::{self, Read, Write},
+ os::fd::{AsRawFd, RawFd},
};
use super::data::{rt_msghdr_short, MessageType, RouteMessage};
@@ -139,9 +139,11 @@ struct RoutingSocketInner {
impl RoutingSocketInner {
fn new() -> io::Result<Self> {
let fd = socket(AddressFamily::Route, SockType::Raw, SockFlag::empty(), None)?;
- let _ = fcntl::fcntl(fd, fcntl::FcntlArg::F_SETFL(fcntl::OFlag::O_NONBLOCK))?;
- // SAFETY: File handle is valid here
- let socket = unsafe { File::from_raw_fd(fd) };
+ let _ = fcntl::fcntl(
+ fd.as_raw_fd(),
+ fcntl::FcntlArg::F_SETFL(fcntl::OFlag::O_NONBLOCK),
+ )?;
+ let socket = File::from(fd);
Ok(Self {
socket: AsyncFd::new(socket)?,
})
@@ -158,7 +160,7 @@ impl RoutingSocketInner {
}
}
-impl std::os::unix::prelude::AsRawFd for RoutingSocketInner {
+impl AsRawFd for RoutingSocketInner {
fn as_raw_fd(&self) -> RawFd {
self.socket.as_raw_fd()
}