From fde7181f93a97595bcaf49e138933502c8027c9b Mon Sep 17 00:00:00 2001 From: Yoav Steinberg Date: Mon, 3 Aug 2020 10:14:19 +0300 Subject: Add support for TCP_KEEPCNT and TCP_KEEPINTVL TCP keepalive options. --- test/sys/test_sockopt.rs | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'test/sys/test_sockopt.rs') diff --git a/test/sys/test_sockopt.rs b/test/sys/test_sockopt.rs index b643e420..8e2adced 100644 --- a/test/sys/test_sockopt.rs +++ b/test/sys/test_sockopt.rs @@ -67,3 +67,28 @@ fn test_bindtodevice() { val ); } + +#[test] +fn test_so_tcp_keepalive() { + let fd = socket(AddressFamily::Inet, SockType::Stream, SockFlag::empty(), SockProtocol::Tcp).unwrap(); + setsockopt(fd, sockopt::KeepAlive, &true).unwrap(); + assert_eq!(getsockopt(fd, sockopt::KeepAlive).unwrap(), true); + + #[cfg(any(target_os = "android", + target_os = "dragonfly", + target_os = "freebsd", + target_os = "linux", + target_os = "nacl"))] { + let x = getsockopt(fd, sockopt::TcpKeepIdle).unwrap(); + setsockopt(fd, sockopt::TcpKeepIdle, &(x + 1)).unwrap(); + assert_eq!(getsockopt(fd, sockopt::TcpKeepIdle).unwrap(), x + 1); + + let x = getsockopt(fd, sockopt::TcpKeepCount).unwrap(); + setsockopt(fd, sockopt::TcpKeepCount, &(x + 1)).unwrap(); + assert_eq!(getsockopt(fd, sockopt::TcpKeepCount).unwrap(), x + 1); + + let x = getsockopt(fd, sockopt::TcpKeepInterval).unwrap(); + setsockopt(fd, sockopt::TcpKeepInterval, &(x + 1)).unwrap(); + assert_eq!(getsockopt(fd, sockopt::TcpKeepInterval).unwrap(), x + 1); + } +} -- cgit v1.2.3