/// Timeout identifier for use with [`set_socket_timeout`] and /// [`socket_timeout`]. #[derive(Debug, Clone, Copy, Eq, PartialEq, Hash)] #[repr(u32)] pubenum Timeout { /// `SO_RCVTIMEO`—Timeout for receiving.
Recv = c::SO_RCVTIMEO as _,
/// `SO_SNDTIMEO`—Timeout for sending.
Send = c::SO_SNDTIMEO as _,
}
/// A type for holding raw integer IPv4 Path MTU Discovery options. #[cfg(linux_kernel)] pubtype RawIpv4PathMtuDiscovery = i32;
/// Constructs an option from a raw integer. #[inline] pubconstfn from_raw(raw: RawIpv6PathMtuDiscovery) -> Self { Self(raw)
}
/// Returns the raw integer for this option. #[inline] pubconstfn as_raw(self) -> RawIpv6PathMtuDiscovery { self.0
}
}
/// `getsockopt(fd, SOL_SOCKET, SO_TYPE)`—Returns the type of a socket. /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_TYPE")] pubfn socket_type<Fd: AsFd>(fd: Fd) -> io::Result<SocketType> {
backend::net::sockopt::socket_type(fd.as_fd())
}
/// `setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, value)`—Set whether local /// addresses may be reused in `bind`. /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_REUSEADDR")] pubfn set_socket_reuseaddr<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_socket_reuseaddr(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_REUSEADDR)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_REUSEADDR")] pubfn socket_reuseaddr<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::socket_reuseaddr(fd.as_fd())
}
/// `setsockopt(fd, SOL_SOCKET, SO_BROADCAST, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_BROADCAST")] pubfn set_socket_broadcast<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_socket_broadcast(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_BROADCAST)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_BROADCAST")] pubfn socket_broadcast<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::socket_broadcast(fd.as_fd())
}
/// `setsockopt(fd, SOL_SOCKET, SO_LINGER, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_LINGER")] pubfn set_socket_linger<Fd: AsFd>(fd: Fd, value: Option<Duration>) -> io::Result<()> {
backend::net::sockopt::set_socket_linger(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_LINGER)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_LINGER")] pubfn socket_linger<Fd: AsFd>(fd: Fd) -> io::Result<Option<Duration>> {
backend::net::sockopt::socket_linger(fd.as_fd())
}
/// `setsockopt(fd, SOL_SOCKET, SO_PASSCRED, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[cfg(linux_kernel)] #[inline] #[doc(alias = "SO_PASSCRED")] pubfn set_socket_passcred<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_socket_passcred(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_PASSCRED)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[cfg(linux_kernel)] #[inline] #[doc(alias = "SO_PASSCRED")] pubfn socket_passcred<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::socket_passcred(fd.as_fd())
}
/// `setsockopt(fd, SOL_SOCKET, id, value)`—Set the sending or receiving /// timeout. /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_RCVTIMEO")] #[doc(alias = "SO_SNDTIMEO")] pubfn set_socket_timeout<Fd: AsFd>(
fd: Fd,
id: Timeout,
value: Option<Duration>,
) -> io::Result<()> {
backend::net::sockopt::set_socket_timeout(fd.as_fd(), id, value)
}
/// `getsockopt(fd, SOL_SOCKET, id)`—Get the sending or receiving timeout. /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_RCVTIMEO")] #[doc(alias = "SO_SNDTIMEO")] pubfn socket_timeout<Fd: AsFd>(fd: Fd, id: Timeout) -> io::Result<Option<Duration>> {
backend::net::sockopt::socket_timeout(fd.as_fd(), id)
}
/// `getsockopt(fd, SOL_SOCKET, SO_ERROR)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_ERROR")] pubfn socket_error<Fd: AsFd>(fd: Fd) -> io::Result<Result<(), io::Errno>> {
backend::net::sockopt::socket_error(fd.as_fd())
}
/// `getsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[cfg(any(apple, freebsdlike, target_os = "netbsd"))] #[doc(alias = "SO_NOSIGPIPE")] #[inline] pubfn socket_nosigpipe<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::socket_nosigpipe(fd.as_fd())
}
/// `setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[cfg(any(apple, freebsdlike, target_os = "netbsd"))] #[doc(alias = "SO_NOSIGPIPE")] #[inline] pubfn set_socket_nosigpipe<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_socket_nosigpipe(fd.as_fd(), value)
}
/// `setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_KEEPALIVE")] pubfn set_socket_keepalive<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_socket_keepalive(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_KEEPALIVE)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_KEEPALIVE")] pubfn socket_keepalive<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::socket_keepalive(fd.as_fd())
}
/// `setsockopt(fd, SOL_SOCKET, SO_RCVBUF, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_RCVBUF")] pubfn set_socket_recv_buffer_size<Fd: AsFd>(fd: Fd, value: usize) -> io::Result<()> {
backend::net::sockopt::set_socket_recv_buffer_size(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_ACCEPTCONN)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[cfg(not(apple))] // Apple platforms declare the constant, but do not actually implement it. #[inline] #[doc(alias = "SO_ACCEPTCONN")] pubfn socket_acceptconn<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::socket_acceptconn(fd.as_fd())
}
/// `setsockopt(fd, SOL_SOCKET, SO_OOBINLINE, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_OOBINLINE")] pubfn set_socket_oobinline<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_socket_oobinline(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_OOBINLINE)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "SO_OOBINLINE")] pubfn socket_oobinline<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::socket_oobinline(fd.as_fd())
}
/// `setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[cfg(not(any(solarish, windows, target_os = "cygwin")))] #[cfg(not(windows))] #[inline] #[doc(alias = "SO_REUSEPORT")] pubfn set_socket_reuseport<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_socket_reuseport(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_REUSEPORT)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[cfg(not(any(solarish, windows, target_os = "cygwin")))] #[inline] #[doc(alias = "SO_REUSEPORT")] pubfn socket_reuseport<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::socket_reuseport(fd.as_fd())
}
/// `setsockopt(fd, SOL_SOCKET, SO_REUSEPORT_LB, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[cfg(target_os = "freebsd")] #[inline] #[doc(alias = "SO_REUSEPORT_LB")] pubfn set_socket_reuseport_lb<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_socket_reuseport_lb(fd.as_fd(), value)
}
/// `getsockopt(fd, SOL_SOCKET, SO_REUSEPORT_LB)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[cfg(target_os = "freebsd")] #[inline] #[doc(alias = "SO_REUSEPORT_LB")] pubfn socket_reuseport_lb<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::socket_reuseport_lb(fd.as_fd())
}
/// `getsockopt(fd, SOL_SOCKET, SO_COOKIE)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[cfg(target_os = "linux")] #[inline] #[doc(alias = "SO_COOKIE")] pubfn socket_cookie<Fd: AsFd>(fd: Fd) -> io::Result<u64> {
backend::net::sockopt::socket_cookie(fd.as_fd())
}
/// `getsockopt(fd, SOL_SOCKET, SO_INCOMING_CPU)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[cfg(target_os = "linux")] #[inline] #[doc(alias = "SO_INCOMING_CPU")] pubfn socket_incoming_cpu<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
backend::net::sockopt::socket_incoming_cpu(fd.as_fd())
}
/// `setsockopt(fd, SOL_SOCKET, SO_INCOMING_CPU, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[cfg(target_os = "linux")] #[inline] #[doc(alias = "SO_INCOMING_CPU")] pubfn set_socket_incoming_cpu<Fd: AsFd>(fd: Fd, value: u32) -> io::Result<()> {
backend::net::sockopt::set_socket_incoming_cpu(fd.as_fd(), value)
}
/// `setsockopt(fd, IPPROTO_IP, IP_TTL, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions #[inline] #[doc(alias = "IP_TTL")] pubfn set_ip_ttl<Fd: AsFd>(fd: Fd, value: u32) -> io::Result<()> {
backend::net::sockopt::set_ip_ttl(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IP, IP_TTL)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[doc(alias = "IP_TTL")] pubfn ip_ttl<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
backend::net::sockopt::ip_ttl(fd.as_fd())
}
/// `setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[inline] #[doc(alias = "IPV6_V6ONLY")] pubfn set_ipv6_v6only<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_ipv6_v6only(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[inline] #[doc(alias = "IPV6_V6ONLY")] pubfn ipv6_v6only<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::ipv6_v6only(fd.as_fd())
}
/// `getsockopt(fd, IPPROTO_IP, IP_MTU)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[cfg(any(linux_kernel, target_os = "cygwin"))] #[doc(alias = "IP_MTU")] pubfn ip_mtu<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
backend::net::sockopt::ip_mtu(fd.as_fd())
}
/// `getsockopt(fd, IPPROTO_IPV6, IPV6_MTU)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[cfg(any(linux_kernel, target_os = "cygwin"))] #[doc(alias = "IPV6_MTU")] pubfn ipv6_mtu<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
backend::net::sockopt::ipv6_mtu(fd.as_fd())
}
/// `setsockopt(fd, IPPROTO_IP, IP_MTU_DISCOVER, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[cfg(linux_kernel)] #[inline] #[doc(alias = "IP_MTU_DISCOVER")] pubfn set_ip_mtu_discover<Fd: AsFd>(fd: Fd, value: Ipv4PathMtuDiscovery) -> io::Result<()> {
backend::net::sockopt::set_ip_mtu_discover(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IP, IP_MTU_DISCOVER)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[cfg(linux_kernel)] #[inline] #[doc(alias = "IP_MTU_DISCOVER")] pubfn ip_mtu_discover<Fd: AsFd>(fd: Fd) -> io::Result<Ipv4PathMtuDiscovery> {
backend::net::sockopt::ip_mtu_discover(fd.as_fd())
}
/// `setsockopt(fd, IPPROTO_IPV6, IPV6_MTU_DISCOVER, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[cfg(linux_kernel)] #[inline] #[doc(alias = "IPV6_MTU_DISCOVER")] pubfn set_ipv6_mtu_discover<Fd: AsFd>(fd: Fd, value: Ipv6PathMtuDiscovery) -> io::Result<()> {
backend::net::sockopt::set_ipv6_mtu_discover(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IPV6, IPV6_MTU_DISCOVER)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[cfg(linux_kernel)] #[inline] #[doc(alias = "IPV6_MTU_DISCOVER")] pubfn ipv6_mtu_discover<Fd: AsFd>(fd: Fd) -> io::Result<Ipv6PathMtuDiscovery> {
backend::net::sockopt::ipv6_mtu_discover(fd.as_fd())
}
/// `setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[doc(alias = "IP_MULTICAST_IF")] pubfn set_ip_multicast_if<Fd: AsFd>(fd: Fd, value: &Ipv4Addr) -> io::Result<()> {
backend::net::sockopt::set_ip_multicast_if(fd.as_fd(), value)
}
/// `setsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF, multiaddr, address, /// ifindex)` /// /// This is similar to [`set_ip_multicast_if`] but additionally allows an /// `ifindex` value to be given. /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[cfg(any(
apple,
freebsdlike,
linux_like,
target_os = "fuchsia",
target_os = "openbsd"
))] #[inline] #[doc(alias = "IP_MULTICAST_IF")] pubfn set_ip_multicast_if_with_ifindex<Fd: AsFd>(
fd: Fd,
multiaddr: &Ipv4Addr,
address: &Ipv4Addr,
ifindex: u32,
) -> io::Result<()> {
backend::net::sockopt::set_ip_multicast_if_with_ifindex(fd.as_fd(), multiaddr, address, ifindex)
}
/// `getsockopt(fd, IPPROTO_IP, IP_MULTICAST_IF)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[doc(alias = "IP_MULTICAST_IF")] pubfn ip_multicast_if<Fd: AsFd>(fd: Fd) -> io::Result<Ipv4Addr> {
backend::net::sockopt::ip_multicast_if(fd.as_fd())
}
/// `setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_IF, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[doc(alias = "IPV6_MULTICAST_IF")] pubfn set_ipv6_multicast_if<Fd: AsFd>(fd: Fd, value: u32) -> io::Result<()> {
backend::net::sockopt::set_ipv6_multicast_if(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_IF)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[doc(alias = "IPV6_MULTICAST_IF")] pubfn ipv6_multicast_if<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
backend::net::sockopt::ipv6_multicast_if(fd.as_fd())
}
/// `setsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[doc(alias = "IP_MULTICAST_LOOP")] pubfn set_ip_multicast_loop<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_ip_multicast_loop(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IP, IP_MULTICAST_LOOP)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[doc(alias = "IP_MULTICAST_LOOP")] pubfn ip_multicast_loop<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::ip_multicast_loop(fd.as_fd())
}
/// `setsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[doc(alias = "IP_MULTICAST_TTL")] pubfn set_ip_multicast_ttl<Fd: AsFd>(fd: Fd, value: u32) -> io::Result<()> {
backend::net::sockopt::set_ip_multicast_ttl(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IP, IP_MULTICAST_TTL)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[doc(alias = "IP_MULTICAST_TTL")] pubfn ip_multicast_ttl<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
backend::net::sockopt::ip_multicast_ttl(fd.as_fd())
}
/// `setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[inline] #[doc(alias = "IPV6_MULTICAST_LOOP")] pubfn set_ipv6_multicast_loop<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_ipv6_multicast_loop(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[inline] #[doc(alias = "IPV6_MULTICAST_LOOP")] pubfn ipv6_multicast_loop<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::ipv6_multicast_loop(fd.as_fd())
}
/// `getsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[inline] #[doc(alias = "IPV6_UNICAST_HOPS")] pubfn ipv6_unicast_hops<Fd: AsFd>(fd: Fd) -> io::Result<u8> {
backend::net::sockopt::ipv6_unicast_hops(fd.as_fd())
}
/// `setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[inline] #[doc(alias = "IPV6_UNICAST_HOPS")] pubfn set_ipv6_unicast_hops<Fd: AsFd>(fd: Fd, value: Option<u8>) -> io::Result<()> {
backend::net::sockopt::set_ipv6_unicast_hops(fd.as_fd(), value)
}
/// `setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[inline] #[doc(alias = "IPV6_MULTICAST_HOPS")] pubfn set_ipv6_multicast_hops<Fd: AsFd>(fd: Fd, value: u32) -> io::Result<()> {
backend::net::sockopt::set_ipv6_multicast_hops(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[inline] #[doc(alias = "IPV6_MULTICAST_HOPS")] pubfn ipv6_multicast_hops<Fd: AsFd>(fd: Fd) -> io::Result<u32> {
backend::net::sockopt::ipv6_multicast_hops(fd.as_fd())
}
/// `setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, multiaddr, interface)` /// /// This is similar to [`set_ip_add_membership`] but always sets the `ifindex` /// value to zero. See [`set_ip_add_membership_with_ifindex`] instead to also /// give the `ifindex` value. /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[doc(alias = "IP_ADD_MEMBERSHIP")] pubfn set_ip_add_membership<Fd: AsFd>(
fd: Fd,
multiaddr: &Ipv4Addr,
interface: &Ipv4Addr,
) -> io::Result<()> {
backend::net::sockopt::set_ip_add_membership(fd.as_fd(), multiaddr, interface)
}
/// `setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, multiaddr, address, /// ifindex)` /// /// This is similar to [`set_ip_add_membership`] but additionally allows an /// `ifindex` value to be given. /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[cfg(any(
apple,
freebsdlike,
linux_like,
target_os = "fuchsia",
target_os = "openbsd"
))] #[inline] #[doc(alias = "IP_ADD_MEMBERSHIP")] pubfn set_ip_add_membership_with_ifindex<Fd: AsFd>(
fd: Fd,
multiaddr: &Ipv4Addr,
address: &Ipv4Addr,
ifindex: u32,
) -> io::Result<()> {
backend::net::sockopt::set_ip_add_membership_with_ifindex(
fd.as_fd(),
multiaddr,
address,
ifindex,
)
}
/// `setsockopt(fd, IPPROTO_IP, IP_DROP_MEMBERSHIP, multiaddr, interface)` /// /// This is similar to [`set_ip_drop_membership`] but always sets `ifindex` /// value to zero. /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[inline] #[doc(alias = "IP_DROP_MEMBERSHIP")] pubfn set_ip_drop_membership<Fd: AsFd>(
fd: Fd,
multiaddr: &Ipv4Addr,
interface: &Ipv4Addr,
) -> io::Result<()> {
backend::net::sockopt::set_ip_drop_membership(fd.as_fd(), multiaddr, interface)
}
/// `setsockopt(fd, IPPROTO_IP, IP_DROP_MEMBERSHIP, multiaddr, interface)` /// /// This is similar to [`set_ip_drop_membership_with_ifindex`] but additionally /// allows a `ifindex` value to be given. /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ip_-and-set_ip_-functions #[cfg(any(
apple,
freebsdlike,
linux_like,
target_os = "fuchsia",
target_os = "openbsd"
))] #[inline] #[doc(alias = "IP_DROP_MEMBERSHIP")] pubfn set_ip_drop_membership_with_ifindex<Fd: AsFd>(
fd: Fd,
multiaddr: &Ipv4Addr,
address: &Ipv4Addr,
ifindex: u32,
) -> io::Result<()> {
backend::net::sockopt::set_ip_drop_membership_with_ifindex(
fd.as_fd(),
multiaddr,
address,
ifindex,
)
}
/// `setsockopt(fd, IPPROTO_IP, IP_FREEBIND, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[cfg(any(linux_kernel, target_os = "fuchsia"))] #[inline] #[doc(alias = "IP_FREEBIND")] pubfn set_ip_freebind<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_ip_freebind(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IP, IP_FREEBIND)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[cfg(any(linux_kernel, target_os = "fuchsia"))] #[inline] #[doc(alias = "IP_FREEBIND")] pubfn ip_freebind<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::ip_freebind(fd.as_fd())
}
/// `setsockopt(fd, IPPROTO_IPV6, IPV6_FREEBIND, value)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[cfg(linux_kernel)] #[inline] #[doc(alias = "IPV6_FREEBIND")] pubfn set_ipv6_freebind<Fd: AsFd>(fd: Fd, value: bool) -> io::Result<()> {
backend::net::sockopt::set_ipv6_freebind(fd.as_fd(), value)
}
/// `getsockopt(fd, IPPROTO_IPV6, IPV6_FREEBIND)` /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[cfg(linux_kernel)] #[inline] #[doc(alias = "IPV6_FREEBIND")] pubfn ipv6_freebind<Fd: AsFd>(fd: Fd) -> io::Result<bool> {
backend::net::sockopt::ipv6_freebind(fd.as_fd())
}
/// `getsockopt(fd, IPPROTO_IP, SO_ORIGINAL_DST)` /// /// Even though this corresponds to a `SO_*` constant, it is an `IPPROTO_IP` /// option. /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[cfg(any(linux_kernel, target_os = "fuchsia"))] #[inline] #[doc(alias = "SO_ORIGINAL_DST")] pubfn ip_original_dst<Fd: AsFd>(fd: Fd) -> io::Result<SocketAddrV4> {
backend::net::sockopt::ip_original_dst(fd.as_fd())
}
/// `getsockopt(fd, IPPROTO_IPV6, IP6T_SO_ORIGINAL_DST)` /// /// Even though this corresponds to a `IP6T_*` constant, it is an /// `IPPROTO_IPV6` option. /// /// See the [module-level documentation] for more. /// /// [module-level documentation]: self#references-for-get_ipv6_-and-set_ipv6_-functions #[cfg(linux_kernel)] #[inline] #[doc(alias = "IP6T_SO_ORIGINAL_DST")] pubfn ipv6_original_dst<Fd: AsFd>(fd: Fd) -> io::Result<SocketAddrV6> {
backend::net::sockopt::ipv6_original_dst(fd.as_fd())
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.