diff --git a/src/lib.rs b/src/lib.rs index ae64ecf2..7ed91054 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -270,13 +270,16 @@ impl Type { pub const DCCP: Type = Type(sys::SOCK_DCCP); /// Type corresponding to `SOCK_SEQPACKET`. - #[cfg(feature = "all")] - #[cfg_attr(docsrs, doc(cfg(feature = "all")))] + #[cfg(all(feature = "all", not(target_os = "espidf")))] + #[cfg_attr(docsrs, doc(cfg(all(feature = "all", not(target_os = "espidf")))))] pub const SEQPACKET: Type = Type(sys::SOCK_SEQPACKET); /// Type corresponding to `SOCK_RAW`. - #[cfg(all(feature = "all", not(target_os = "redox")))] - #[cfg_attr(docsrs, doc(cfg(all(feature = "all", not(target_os = "redox")))))] + #[cfg(all(feature = "all", not(any(target_os = "redox", target_os = "espidf"))))] + #[cfg_attr( + docsrs, + doc(cfg(all(feature = "all", not(any(target_os = "redox", target_os = "espidf"))))) + )] pub const RAW: Type = Type(sys::SOCK_RAW); } @@ -374,6 +377,7 @@ impl RecvFlags { /// /// On Unix this corresponds to the `MSG_TRUNC` flag. /// On Windows this corresponds to the `WSAEMSGSIZE` error code. + #[cfg(not(target_os = "espidf"))] pub const fn is_truncated(self) -> bool { self.0 & sys::MSG_TRUNC != 0 } @@ -428,6 +432,7 @@ pub struct TcpKeepalive { target_os = "redox", target_os = "solaris", target_os = "nto", + target_os = "espidf", )))] interval: Option, #[cfg(not(any( @@ -436,6 +441,7 @@ pub struct TcpKeepalive { target_os = "solaris", target_os = "windows", target_os = "nto", + target_os = "espidf", )))] retries: Option, } @@ -450,6 +456,7 @@ impl TcpKeepalive { target_os = "redox", target_os = "solaris", target_os = "nto", + target_os = "espidf", )))] interval: None, #[cfg(not(any( @@ -458,6 +465,7 @@ impl TcpKeepalive { target_os = "solaris", target_os = "windows", target_os = "nto", + target_os = "espidf", )))] retries: None, } diff --git a/src/socket.rs b/src/socket.rs index fe34bea0..73b806ba 100644 --- a/src/socket.rs +++ b/src/socket.rs @@ -790,6 +790,7 @@ fn set_common_flags(socket: Socket) -> io::Result { target_os = "linux", target_os = "netbsd", target_os = "openbsd", + target_os = "espidf", )) ))] socket._set_cloexec(true)?; @@ -1108,8 +1109,11 @@ impl Socket { /// For more information about this option, see [`set_header_included`]. /// /// [`set_header_included`]: Socket::set_header_included - #[cfg(all(feature = "all", not(target_os = "redox")))] - #[cfg_attr(docsrs, doc(cfg(all(feature = "all", not(target_os = "redox")))))] + #[cfg(all(feature = "all", not(any(target_os = "redox", target_os = "espidf"))))] + #[cfg_attr( + docsrs, + doc(cfg(all(feature = "all", not(any(target_os = "redox", target_os = "espidf"))))) + )] pub fn header_included(&self) -> io::Result { unsafe { getsockopt::(self.as_raw(), sys::IPPROTO_IP, sys::IP_HDRINCL) @@ -1132,8 +1136,11 @@ impl Socket { any(target_os = "fuchsia", target_os = "illumos", target_os = "solaris"), allow(rustdoc::broken_intra_doc_links) )] - #[cfg(all(feature = "all", not(target_os = "redox")))] - #[cfg_attr(docsrs, doc(cfg(all(feature = "all", not(target_os = "redox")))))] + #[cfg(all(feature = "all", not(any(target_os = "redox", target_os = "espidf"))))] + #[cfg_attr( + docsrs, + doc(cfg(all(feature = "all", not(any(target_os = "redox", target_os = "espidf"))))) + )] pub fn set_header_included(&self, included: bool) -> io::Result<()> { unsafe { setsockopt( @@ -1237,6 +1244,7 @@ impl Socket { target_os = "redox", target_os = "solaris", target_os = "nto", + target_os = "espidf", )))] pub fn join_multicast_v4_n( &self, @@ -1268,6 +1276,7 @@ impl Socket { target_os = "redox", target_os = "solaris", target_os = "nto", + target_os = "espidf", )))] pub fn leave_multicast_v4_n( &self, @@ -1300,6 +1309,7 @@ impl Socket { target_os = "redox", target_os = "fuchsia", target_os = "nto", + target_os = "espidf", )))] pub fn join_ssm_v4( &self, @@ -1335,6 +1345,7 @@ impl Socket { target_os = "redox", target_os = "fuchsia", target_os = "nto", + target_os = "espidf", )))] pub fn leave_ssm_v4( &self, @@ -1512,6 +1523,7 @@ impl Socket { target_os = "solaris", target_os = "haiku", target_os = "nto", + target_os = "espidf", )))] pub fn set_recv_tos(&self, recv_tos: bool) -> io::Result<()> { unsafe { @@ -1540,6 +1552,7 @@ impl Socket { target_os = "solaris", target_os = "haiku", target_os = "nto", + target_os = "espidf", )))] pub fn recv_tos(&self) -> io::Result { unsafe { @@ -1755,6 +1768,7 @@ impl Socket { target_os = "redox", target_os = "solaris", target_os = "haiku", + target_os = "espidf", )))] pub fn recv_tclass_v6(&self) -> io::Result { unsafe { @@ -1777,6 +1791,7 @@ impl Socket { target_os = "redox", target_os = "solaris", target_os = "haiku", + target_os = "espidf", )))] pub fn set_recv_tclass_v6(&self, recv_tclass: bool) -> io::Result<()> { unsafe { diff --git a/src/sys/unix.rs b/src/sys/unix.rs index 808c6ef1..788d9fdb 100644 --- a/src/sys/unix.rs +++ b/src/sys/unix.rs @@ -81,9 +81,9 @@ pub(crate) use libc::{AF_INET, AF_INET6, AF_UNIX}; // Used in `Type`. #[cfg(all(feature = "all", target_os = "linux"))] pub(crate) use libc::SOCK_DCCP; -#[cfg(all(feature = "all", not(target_os = "redox")))] +#[cfg(all(feature = "all", not(any(target_os = "redox", target_os = "espidf"))))] pub(crate) use libc::SOCK_RAW; -#[cfg(feature = "all")] +#[cfg(all(feature = "all", not(target_os = "espidf")))] pub(crate) use libc::SOCK_SEQPACKET; pub(crate) use libc::{SOCK_DGRAM, SOCK_STREAM}; // Used in `Protocol`. @@ -111,8 +111,10 @@ pub(crate) use libc::{ sa_family_t, sockaddr, sockaddr_in, sockaddr_in6, sockaddr_storage, socklen_t, }; // Used in `RecvFlags`. +#[cfg(not(any(target_os = "redox", target_os = "espidf")))] +pub(crate) use libc::MSG_TRUNC; #[cfg(not(target_os = "redox"))] -pub(crate) use libc::{MSG_TRUNC, SO_OOBINLINE}; +pub(crate) use libc::SO_OOBINLINE; // Used in `Socket`. #[cfg(not(target_os = "nto"))] pub(crate) use libc::ipv6_mreq as Ipv6Mreq; @@ -125,6 +127,7 @@ pub(crate) use libc::ipv6_mreq as Ipv6Mreq; target_os = "redox", target_os = "solaris", target_os = "haiku", + target_os = "espidf", )))] pub(crate) use libc::IPV6_RECVTCLASS; #[cfg(all(feature = "all", not(target_os = "redox")))] @@ -140,6 +143,7 @@ pub(crate) use libc::IP_HDRINCL; target_os = "solaris", target_os = "haiku", target_os = "nto", + target_os = "espidf", )))] pub(crate) use libc::IP_RECVTOS; #[cfg(not(any( @@ -178,6 +182,7 @@ pub(crate) use libc::{ target_os = "redox", target_os = "fuchsia", target_os = "nto", + target_os = "espidf", )))] pub(crate) use libc::{ ip_mreq_source as IpMreqSource, IP_ADD_SOURCE_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP, @@ -329,6 +334,7 @@ type IovLen = usize; target_os = "solaris", target_os = "tvos", target_os = "watchos", + target_os = "espidf", ))] type IovLen = c_int; @@ -471,10 +477,11 @@ impl_debug!( libc::SOCK_DGRAM, #[cfg(all(feature = "all", target_os = "linux"))] libc::SOCK_DCCP, - #[cfg(not(target_os = "redox"))] + #[cfg(not(any(target_os = "redox", target_os = "espidf")))] libc::SOCK_RAW, - #[cfg(not(any(target_os = "redox", target_os = "haiku")))] + #[cfg(not(any(target_os = "redox", target_os = "haiku", target_os = "espidf")))] libc::SOCK_RDM, + #[cfg(not(target_os = "espidf"))] libc::SOCK_SEQPACKET, /* TODO: add these optional bit OR-ed flags: #[cfg(any( @@ -538,6 +545,7 @@ impl RecvFlags { /// On Unix this corresponds to the `MSG_EOR` flag. /// /// [`SEQPACKET`]: Type::SEQPACKET + #[cfg(not(target_os = "espidf"))] pub const fn is_end_of_record(self) -> bool { self.0 & libc::MSG_EOR != 0 } @@ -556,11 +564,13 @@ impl RecvFlags { #[cfg(not(target_os = "redox"))] impl std::fmt::Debug for RecvFlags { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("RecvFlags") - .field("is_end_of_record", &self.is_end_of_record()) - .field("is_out_of_band", &self.is_out_of_band()) - .field("is_truncated", &self.is_truncated()) - .finish() + let mut s = f.debug_struct("RecvFlags"); + #[cfg(not(target_os = "espidf"))] + s.field("is_end_of_record", &self.is_end_of_record()); + s.field("is_out_of_band", &self.is_out_of_band()); + #[cfg(not(target_os = "espidf"))] + s.field("is_truncated", &self.is_truncated()); + s.finish() } } @@ -1264,6 +1274,7 @@ pub(crate) fn from_in6_addr(addr: in6_addr) -> Ipv6Addr { target_os = "redox", target_os = "solaris", target_os = "nto", + target_os = "espidf", )))] pub(crate) const fn to_mreqn( multiaddr: &Ipv4Addr,