mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-09-08 00:00:13 +02:00
net: add tos and set_tos methods to TCP and UDP sockets (#4366)
This commit is contained in:
@@ -381,6 +381,61 @@ impl TcpSocket {
|
|||||||
self.inner.linger()
|
self.inner.linger()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the value of the `IP_TOS` option for this socket.
|
||||||
|
///
|
||||||
|
/// For more information about this option, see [`set_tos`].
|
||||||
|
///
|
||||||
|
/// **NOTE:** On Windows, `IP_TOS` is only supported on [Windows 8+ or
|
||||||
|
/// Windows Server 2012+.](https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options)
|
||||||
|
///
|
||||||
|
/// [`set_tos`]: Self::set_tos
|
||||||
|
// https://docs.rs/socket2/0.4.2/src/socket2/socket.rs.html#1178
|
||||||
|
#[cfg(not(any(
|
||||||
|
target_os = "fuchsia",
|
||||||
|
target_os = "redox",
|
||||||
|
target_os = "solaris",
|
||||||
|
target_os = "illumos",
|
||||||
|
)))]
|
||||||
|
#[cfg_attr(
|
||||||
|
docsrs,
|
||||||
|
doc(cfg(not(any(
|
||||||
|
target_os = "fuchsia",
|
||||||
|
target_os = "redox",
|
||||||
|
target_os = "solaris",
|
||||||
|
target_os = "illumos",
|
||||||
|
))))
|
||||||
|
)]
|
||||||
|
pub fn tos(&self) -> io::Result<u32> {
|
||||||
|
self.inner.tos()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Sets the value for the `IP_TOS` option on this socket.
|
||||||
|
///
|
||||||
|
/// This value sets the time-to-live field that is used in every packet sent
|
||||||
|
/// from this socket.
|
||||||
|
///
|
||||||
|
/// **NOTE:** On Windows, `IP_TOS` is only supported on [Windows 8+ or
|
||||||
|
/// Windows Server 2012+.](https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options)
|
||||||
|
// https://docs.rs/socket2/0.4.2/src/socket2/socket.rs.html#1178
|
||||||
|
#[cfg(not(any(
|
||||||
|
target_os = "fuchsia",
|
||||||
|
target_os = "redox",
|
||||||
|
target_os = "solaris",
|
||||||
|
target_os = "illumos",
|
||||||
|
)))]
|
||||||
|
#[cfg_attr(
|
||||||
|
docsrs,
|
||||||
|
doc(cfg(not(any(
|
||||||
|
target_os = "fuchsia",
|
||||||
|
target_os = "redox",
|
||||||
|
target_os = "solaris",
|
||||||
|
target_os = "illumos",
|
||||||
|
))))
|
||||||
|
)]
|
||||||
|
pub fn set_tos(&self, tos: u32) -> io::Result<()> {
|
||||||
|
self.inner.set_tos(tos)
|
||||||
|
}
|
||||||
|
|
||||||
/// Gets the local address of this socket.
|
/// Gets the local address of this socket.
|
||||||
///
|
///
|
||||||
/// Will fail on windows if called before `bind`.
|
/// Will fail on windows if called before `bind`.
|
||||||
|
|||||||
@@ -1575,6 +1575,61 @@ impl UdpSocket {
|
|||||||
self.io.set_ttl(ttl)
|
self.io.set_ttl(ttl)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Gets the value of the `IP_TOS` option for this socket.
|
||||||
|
///
|
||||||
|
/// For more information about this option, see [`set_tos`].
|
||||||
|
///
|
||||||
|
/// **NOTE:** On Windows, `IP_TOS` is only supported on [Windows 8+ or
|
||||||
|
/// Windows Server 2012+.](https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options)
|
||||||
|
///
|
||||||
|
/// [`set_tos`]: Self::set_tos
|
||||||
|
// https://docs.rs/socket2/0.4.2/src/socket2/socket.rs.html#1178
|
||||||
|
#[cfg(not(any(
|
||||||
|
target_os = "fuchsia",
|
||||||
|
target_os = "redox",
|
||||||
|
target_os = "solaris",
|
||||||
|
target_os = "illumos",
|
||||||
|
)))]
|
||||||
|
#[cfg_attr(
|
||||||
|
docsrs,
|
||||||
|
doc(cfg(not(any(
|
||||||
|
target_os = "fuchsia",
|
||||||
|
target_os = "redox",
|
||||||
|
target_os = "solaris",
|
||||||
|
target_os = "illumos",
|
||||||
|
))))
|
||||||
|
)]
|
||||||
|
pub fn tos(&self) -> io::Result<u32> {
|
||||||
|
self.as_socket().tos()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Sets the value for the `IP_TOS` option on this socket.
|
||||||
|
///
|
||||||
|
/// This value sets the time-to-live field that is used in every packet sent
|
||||||
|
/// from this socket.
|
||||||
|
///
|
||||||
|
/// **NOTE:** On Windows, `IP_TOS` is only supported on [Windows 8+ or
|
||||||
|
/// Windows Server 2012+.](https://docs.microsoft.com/en-us/windows/win32/winsock/ipproto-ip-socket-options)
|
||||||
|
// https://docs.rs/socket2/0.4.2/src/socket2/socket.rs.html#1178
|
||||||
|
#[cfg(not(any(
|
||||||
|
target_os = "fuchsia",
|
||||||
|
target_os = "redox",
|
||||||
|
target_os = "solaris",
|
||||||
|
target_os = "illumos",
|
||||||
|
)))]
|
||||||
|
#[cfg_attr(
|
||||||
|
docsrs,
|
||||||
|
doc(cfg(not(any(
|
||||||
|
target_os = "fuchsia",
|
||||||
|
target_os = "redox",
|
||||||
|
target_os = "solaris",
|
||||||
|
target_os = "illumos",
|
||||||
|
))))
|
||||||
|
)]
|
||||||
|
pub fn set_tos(&self, tos: u32) -> io::Result<()> {
|
||||||
|
self.as_socket().set_tos(tos)
|
||||||
|
}
|
||||||
|
|
||||||
/// Executes an operation of the `IP_ADD_MEMBERSHIP` type.
|
/// Executes an operation of the `IP_ADD_MEMBERSHIP` type.
|
||||||
///
|
///
|
||||||
/// This function specifies a new multicast group for this socket to join.
|
/// This function specifies a new multicast group for this socket to join.
|
||||||
|
|||||||
Reference in New Issue
Block a user