From a4e0c9544cbc7ec092fbda8a7c69afa7b65438b2 Mon Sep 17 00:00:00 2001 From: SteveLauC Date: Sun, 3 Dec 2023 01:10:19 +0800 Subject: [PATCH] feat: ControlMessageOwned::{Ipv4RecvIf,Ipv4RecvDstAddr} for DragonFlyBSD (#2240) * feat: Enable ControlMessageOwned::{Ipv4RecvIf,Ipv4RecvDstAddr} for DragonFlyBSD * fix DrafonFlyBSD * fix Linux * fix cfg --- changelog/2240.added.md | 1 + src/sys/socket/mod.rs | 8 ++++---- src/sys/socket/sockopt.rs | 4 ++-- test/sys/test_socket.rs | 16 ++-------------- 4 files changed, 9 insertions(+), 20 deletions(-) create mode 100644 changelog/2240.added.md diff --git a/changelog/2240.added.md b/changelog/2240.added.md new file mode 100644 index 0000000000..315c67554c --- /dev/null +++ b/changelog/2240.added.md @@ -0,0 +1 @@ +Enable `ControlMessageOwned::Ipv4RecvIf` and `ControlMessageOwned::Ipv4RecvDstAddr` for DragonFlyBSD diff --git a/src/sys/socket/mod.rs b/src/sys/socket/mod.rs index 093e37dc5f..50b87fbf98 100644 --- a/src/sys/socket/mod.rs +++ b/src/sys/socket/mod.rs @@ -748,11 +748,11 @@ pub enum ControlMessageOwned { #[cfg(feature = "net")] #[cfg_attr(docsrs, doc(cfg(feature = "net")))] Ipv6PacketInfo(libc::in6_pktinfo), - #[cfg(any(target_os = "freebsd", apple_targets, netbsdlike))] + #[cfg(bsd)] #[cfg(feature = "net")] #[cfg_attr(docsrs, doc(cfg(feature = "net")))] Ipv4RecvIf(libc::sockaddr_dl), - #[cfg(any(target_os = "freebsd", apple_targets, netbsdlike))] + #[cfg(bsd)] #[cfg(feature = "net")] #[cfg_attr(docsrs, doc(cfg(feature = "net")))] Ipv4RecvDstAddr(libc::in_addr), @@ -931,13 +931,13 @@ impl ControlMessageOwned { let info = unsafe { ptr::read_unaligned(p as *const libc::in_pktinfo) }; ControlMessageOwned::Ipv4PacketInfo(info) } - #[cfg(any(target_os = "freebsd", apple_targets, netbsdlike))] + #[cfg(bsd)] #[cfg(feature = "net")] (libc::IPPROTO_IP, libc::IP_RECVIF) => { let dl = unsafe { ptr::read_unaligned(p as *const libc::sockaddr_dl) }; ControlMessageOwned::Ipv4RecvIf(dl) }, - #[cfg(any(target_os = "freebsd", apple_targets, netbsdlike))] + #[cfg(bsd)] #[cfg(feature = "net")] (libc::IPPROTO_IP, libc::IP_RECVDSTADDR) => { let dl = unsafe { ptr::read_unaligned(p as *const libc::in_addr) }; diff --git a/src/sys/socket/sockopt.rs b/src/sys/socket/sockopt.rs index cad2cce180..5ebb885293 100644 --- a/src/sys/socket/sockopt.rs +++ b/src/sys/socket/sockopt.rs @@ -842,7 +842,7 @@ sockopt_impl!( libc::IPV6_RECVPKTINFO, bool ); -#[cfg(any(target_os = "freebsd", apple_targets, netbsdlike))] +#[cfg(bsd)] #[cfg(feature = "net")] sockopt_impl!( #[cfg_attr(docsrs, doc(cfg(feature = "net")))] @@ -854,7 +854,7 @@ sockopt_impl!( libc::IP_RECVIF, bool ); -#[cfg(any(target_os = "freebsd", apple_targets, netbsdlike))] +#[cfg(bsd)] #[cfg(feature = "net")] sockopt_impl!( #[cfg_attr(docsrs, doc(cfg(feature = "net")))] diff --git a/test/sys/test_socket.rs b/test/sys/test_socket.rs index 4ba66cbbb2..12729b23a4 100644 --- a/test/sys/test_socket.rs +++ b/test/sys/test_socket.rs @@ -1750,14 +1750,7 @@ pub fn test_syscontrol() { // connect(fd.as_raw_fd(), &sockaddr).expect("connect failed"); } -#[cfg(any( - target_os = "android", - target_os = "freebsd", - apple_targets, - target_os = "linux", - target_os = "netbsd", - target_os = "openbsd", -))] +#[cfg(any(bsd, linux_android))] fn loopback_address( family: AddressFamily, ) -> Option { @@ -1880,12 +1873,7 @@ pub fn test_recv_ipv4pktinfo() { } } -#[cfg(any( - target_os = "freebsd", - apple_targets, - target_os = "netbsd", - target_os = "openbsd", -))] +#[cfg(bsd)] // qemu doesn't seem to be emulating this correctly in these architectures #[cfg_attr( all(