We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 5efb143 commit 6565ebbCopy full SHA for 6565ebb
4 files changed
src/backend/libc/net/sockopt.rs
@@ -362,6 +362,13 @@ pub(crate) fn set_socket_send_buffer_size(fd: BorrowedFd<'_>, size: usize) -> io
362
setsockopt(fd, c::SOL_SOCKET, c::SO_SNDBUF, size)
363
}
364
365
+#[cfg(any(linux_kernel, target_os = "fuchsia", target_os = "redox"))]
366
+#[inline]
367
+pub(crate) fn set_socket_send_buffer_size_force(fd: BorrowedFd<'_>, size: usize) -> io::Result<()> {
368
+ let size: c::c_int = size.try_into().map_err(|_| io::Errno::INVAL)?;
369
+ setsockopt(fd, c::SOL_SOCKET, c::SO_SNDBUFFORCE, size)
370
+}
371
+
372
#[inline]
373
pub(crate) fn socket_send_buffer_size(fd: BorrowedFd<'_>) -> io::Result<usize> {
374
getsockopt(fd, c::SOL_SOCKET, c::SO_SNDBUF).map(|size: u32| size as usize)
src/backend/linux_raw/c.rs
@@ -97,9 +97,9 @@ pub(crate) use linux_raw_sys::{
97
SO_DOMAIN, SO_ERROR, SO_INCOMING_CPU, SO_KEEPALIVE, SO_LINGER, SO_OOBINLINE,
98
SO_ORIGINAL_DST, SO_PASSCRED, SO_PROTOCOL, SO_RCVBUF, SO_RCVBUFFORCE, SO_RCVTIMEO_NEW,
99
SO_RCVTIMEO_NEW as SO_RCVTIMEO, SO_RCVTIMEO_OLD, SO_REUSEADDR, SO_REUSEPORT, SO_SNDBUF,
100
- SO_SNDTIMEO_NEW, SO_SNDTIMEO_NEW as SO_SNDTIMEO, SO_SNDTIMEO_OLD, SO_TYPE, TCP_CONGESTION,
101
- TCP_CORK, TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_NODELAY, TCP_QUICKACK,
102
- TCP_THIN_LINEAR_TIMEOUTS, TCP_USER_TIMEOUT,
+ SO_SNDBUFFORCE, SO_SNDTIMEO_NEW, SO_SNDTIMEO_NEW as SO_SNDTIMEO, SO_SNDTIMEO_OLD, SO_TYPE,
+ TCP_CONGESTION, TCP_CORK, TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_NODELAY,
+ TCP_QUICKACK, TCP_THIN_LINEAR_TIMEOUTS, TCP_USER_TIMEOUT,
103
},
104
netlink::*,
105
xdp::{
src/backend/linux_raw/net/sockopt.rs
@@ -367,6 +367,12 @@ pub(crate) fn set_socket_send_buffer_size(fd: BorrowedFd<'_>, size: usize) -> io
375
376
377
378
src/net/sockopt.rs
@@ -430,6 +430,18 @@ pub fn set_socket_send_buffer_size<Fd: AsFd>(fd: Fd, value: usize) -> io::Result
430
backend::net::sockopt::set_socket_send_buffer_size(fd.as_fd(), value)
431
432
433
+/// `setsockopt(fd, SOL_SOCKET, SO_SNDBUFFORCE, value)`
434
+///
435
+/// See the [module-level documentation] for more.
436
437
+/// [module-level documentation]: self#references-for-get_socket_-and-set_socket_-functions
438
439
440
+#[doc(alias = "SO_SNDBUFFORCE")]
441
+pub fn set_socket_send_buffer_size_force<Fd: AsFd>(fd: Fd, value: usize) -> io::Result<()> {
442
+ backend::net::sockopt::set_socket_send_buffer_size_force(fd.as_fd(), value)
443
444
445
/// `getsockopt(fd, SOL_SOCKET, SO_SNDBUF)`
446
///
447
/// See the [module-level documentation] for more.
0 commit comments