浏览代码

Gate Linux-specific platform dependencies behind a #[cfg].

寧靜 7 年之前
父节点
当前提交
f0c147a5ee
共有 2 个文件被更改,包括 7 次插入4 次删除
  1. 2 2
      src/phy/mod.rs
  2. 5 2
      src/phy/sys/mod.rs

+ 2 - 2
src/phy/mod.rs

@@ -93,7 +93,7 @@ mod fault_injector;
 mod pcap_writer;
 #[cfg(any(feature = "std", feature = "alloc"))]
 mod loopback;
-#[cfg(feature = "phy-raw_socket")]
+#[cfg(all(feature = "phy-raw_socket", target_os = "linux"))]
 mod raw_socket;
 #[cfg(all(feature = "phy-tap_interface", target_os = "linux"))]
 mod tap_interface;
@@ -106,7 +106,7 @@ pub use self::fault_injector::FaultInjector;
 pub use self::pcap_writer::{PcapLinkType, PcapMode, PcapSink, PcapWriter};
 #[cfg(any(feature = "std", feature = "alloc"))]
 pub use self::loopback::Loopback;
-#[cfg(any(feature = "phy-raw_socket"))]
+#[cfg(all(feature = "phy-raw_socket", target_os = "linux"))]
 pub use self::raw_socket::RawSocket;
 #[cfg(all(feature = "phy-tap_interface", target_os = "linux"))]
 pub use self::tap_interface::TapInterface;

+ 5 - 2
src/phy/sys/mod.rs

@@ -8,12 +8,12 @@ use std::os::unix::io::RawFd;
 #[path = "linux.rs"]
 mod imp;
 
-#[cfg(feature = "phy-raw_socket")]
+#[cfg(all(feature = "phy-raw_socket", target_os = "linux"))]
 pub mod raw_socket;
 #[cfg(all(feature = "phy-tap_interface", target_os = "linux"))]
 pub mod tap_interface;
 
-#[cfg(feature = "phy-raw_socket")]
+#[cfg(all(feature = "phy-raw_socket", target_os = "linux"))]
 pub use self::raw_socket::RawSocketDesc;
 #[cfg(all(feature = "phy-tap_interface", target_os = "linux"))]
 pub use self::tap_interface::TapInterfaceDesc;
@@ -46,6 +46,7 @@ pub fn wait(fd: RawFd, millis: Option<u64>) -> io::Result<()> {
     }
 }
 
+#[cfg(all(target_os = "linux", any(feature = "phy-tap_interface", feature = "phy-raw_socket")))]
 #[repr(C)]
 #[derive(Debug)]
 struct ifreq {
@@ -53,6 +54,7 @@ struct ifreq {
     ifr_data: libc::c_int /* ifr_ifindex or ifr_mtu */
 }
 
+#[cfg(all(target_os = "linux", any(feature = "phy-tap_interface", feature = "phy-raw_socket")))]
 fn ifreq_for(name: &str) -> ifreq {
     let mut ifreq = ifreq {
         ifr_name: [0; libc::IF_NAMESIZE],
@@ -64,6 +66,7 @@ fn ifreq_for(name: &str) -> ifreq {
     ifreq
 }
 
+#[cfg(all(target_os = "linux", any(feature = "phy-tap_interface", feature = "phy-raw_socket")))]
 fn ifreq_ioctl(lower: libc::c_int, ifreq: &mut ifreq,
                cmd: libc::c_ulong) -> io::Result<libc::c_int> {
     unsafe {