diff --git a/CHANGELOG.md b/CHANGELOG.md index 15c7b85934..9205945ef2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,8 @@ This project adheres to [Semantic Versioning](http://semver.org/). (#[1244](https://github.com/nix-rust/nix/pull/1244)) - Added `unistd::ttyname` (#[1259](https://github.com/nix-rust/nix/pull/1259)) +- Added support for `Ipv4PacketInfo` and `Ipv6PacketInfo` to `ControlMessage` for iOS and Android. + (#[1265](https://github.com/nix-rust/nix/pull/1265)) ### Changed - Changed `fallocate` return type from `c_int` to `()` (#[1201](https://github.com/nix-rust/nix/pull/1201)) diff --git a/src/sys/socket/mod.rs b/src/sys/socket/mod.rs index aafa849cb8..0328319f02 100644 --- a/src/sys/socket/mod.rs +++ b/src/sys/socket/mod.rs @@ -730,7 +730,9 @@ pub enum ControlMessage<'a> { /// [`ip(7)`](http://man7.org/linux/man-pages/man7/ip.7.html) man page. #[cfg(any(target_os = "linux", target_os = "macos", - target_os = "netbsd"))] + target_os = "netbsd", + target_os = "android", + target_os = "ios",))] Ipv4PacketInfo(&'a libc::in_pktinfo), /// Configure the sending addressing and interface for v6 @@ -740,7 +742,9 @@ pub enum ControlMessage<'a> { #[cfg(any(target_os = "linux", target_os = "macos", target_os = "netbsd", - target_os = "freebsd"))] + target_os = "freebsd", + target_os = "android", + target_os = "ios",))] Ipv6PacketInfo(&'a libc::in6_pktinfo), } @@ -824,10 +828,12 @@ impl<'a> ControlMessage<'a> { gso_size as *const _ as *const u8 }, #[cfg(any(target_os = "linux", target_os = "macos", - target_os = "netbsd"))] + target_os = "netbsd", target_os = "android", + target_os = "ios",))] ControlMessage::Ipv4PacketInfo(info) => info as *const _ as *const u8, #[cfg(any(target_os = "linux", target_os = "macos", - target_os = "netbsd", target_os = "freebsd"))] + target_os = "netbsd", target_os = "freebsd", + target_os = "android", target_os = "ios",))] ControlMessage::Ipv6PacketInfo(info) => info as *const _ as *const u8, }; unsafe { @@ -870,10 +876,12 @@ impl<'a> ControlMessage<'a> { mem::size_of_val(gso_size) }, #[cfg(any(target_os = "linux", target_os = "macos", - target_os = "netbsd"))] + target_os = "netbsd", target_os = "android", + target_os = "ios",))] ControlMessage::Ipv4PacketInfo(info) => mem::size_of_val(info), #[cfg(any(target_os = "linux", target_os = "macos", - target_os = "netbsd", target_os = "freebsd"))] + target_os = "netbsd", target_os = "freebsd", + target_os = "android", target_os = "ios",))] ControlMessage::Ipv6PacketInfo(info) => mem::size_of_val(info), } } @@ -892,10 +900,12 @@ impl<'a> ControlMessage<'a> { #[cfg(target_os = "linux")] ControlMessage::UdpGsoSegments(_) => libc::SOL_UDP, #[cfg(any(target_os = "linux", target_os = "macos", - target_os = "netbsd"))] + target_os = "netbsd", target_os = "android", + target_os = "ios",))] ControlMessage::Ipv4PacketInfo(_) => libc::IPPROTO_IP, #[cfg(any(target_os = "linux", target_os = "macos", - target_os = "netbsd", target_os = "freebsd"))] + target_os = "netbsd", target_os = "freebsd", + target_os = "android", target_os = "ios",))] ControlMessage::Ipv6PacketInfo(_) => libc::IPPROTO_IPV6, } } @@ -925,10 +935,12 @@ impl<'a> ControlMessage<'a> { libc::UDP_SEGMENT }, #[cfg(any(target_os = "linux", target_os = "macos", - target_os = "netbsd"))] + target_os = "netbsd", target_os = "android", + target_os = "ios",))] ControlMessage::Ipv4PacketInfo(_) => libc::IP_PKTINFO, #[cfg(any(target_os = "linux", target_os = "macos", - target_os = "netbsd", target_os = "freebsd"))] + target_os = "netbsd", target_os = "freebsd", + target_os = "android", target_os = "ios",))] ControlMessage::Ipv6PacketInfo(_) => libc::IPV6_PKTINFO, } }