summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJunho Choi <junho.choi@gmail.com>2022-04-05 15:06:13 -0700
committerJunho Choi <junho.choi@gmail.com>2022-04-07 17:39:46 -0700
commita4b5dfc059b11e7d463710bfcafa216eee770413 (patch)
tree76bccac9377a994f266670c262aa71e71be3078c /test
parent131fdf1d3c31355311de76f1a37a42fc4411de7f (diff)
downloadnix-a4b5dfc059b11e7d463710bfcafa216eee770413.zip
Add IP_DONTFRAG and IPV6_DONTFRAG SockOpts
IP_DONTFRAG: iOS, macOS IPV6_DONTFRAG: android, iOS, linux and macOS Test: `cargo test --test test dontfrag_opts` Some CI tests running ENOPROTOOPT are disabled (qemu-based).
Diffstat (limited to 'test')
-rw-r--r--test/sys/test_sockopt.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/test/sys/test_sockopt.rs b/test/sys/test_sockopt.rs
index df01e9ee..4f75e178 100644
--- a/test/sys/test_sockopt.rs
+++ b/test/sys/test_sockopt.rs
@@ -196,3 +196,42 @@ fn test_ttl_opts() {
setsockopt(fd6, sockopt::Ipv6Ttl, &1)
.expect("setting ipv6ttl on an inet6 socket should succeed");
}
+
+#[test]
+#[cfg(any(target_os = "ios", target_os = "macos"))]
+fn test_dontfrag_opts() {
+ let fd4 = socket(AddressFamily::Inet, SockType::Stream, SockFlag::empty(), SockProtocol::Tcp).unwrap();
+ setsockopt(fd4, sockopt::IpDontFrag, &true)
+ .expect("setting IP_DONTFRAG on an inet stream socket should succeed");
+ setsockopt(fd4, sockopt::IpDontFrag, &false)
+ .expect("unsetting IP_DONTFRAG on an inet stream socket should succeed");
+ let fd4d = socket(AddressFamily::Inet, SockType::Datagram, SockFlag::empty(), None).unwrap();
+ setsockopt(fd4d, sockopt::IpDontFrag, &true)
+ .expect("setting IP_DONTFRAG on an inet datagram socket should succeed");
+ setsockopt(fd4d, sockopt::IpDontFrag, &false)
+ .expect("unsetting IP_DONTFRAG on an inet datagram socket should succeed");
+}
+
+#[test]
+#[cfg(any(
+ target_os = "android",
+ target_os = "ios",
+ target_os = "linux",
+ target_os = "macos",
+ )
+)]
+// Disable the test under emulation because it fails in Cirrus-CI. Lack
+// of QEMU support is suspected.
+#[cfg_attr(qemu, ignore)]
+fn test_v6dontfrag_opts() {
+ let fd6 = socket(AddressFamily::Inet6, SockType::Stream, SockFlag::empty(), SockProtocol::Tcp).unwrap();
+ setsockopt(fd6, sockopt::Ipv6DontFrag, &true)
+ .expect("setting IPV6_DONTFRAG on an inet6 stream socket should succeed");
+ setsockopt(fd6, sockopt::Ipv6DontFrag, &false)
+ .expect("unsetting IPV6_DONTFRAG on an inet6 stream socket should succeed");
+ let fd6d = socket(AddressFamily::Inet6, SockType::Datagram, SockFlag::empty(), None).unwrap();
+ setsockopt(fd6d, sockopt::Ipv6DontFrag, &true)
+ .expect("setting IPV6_DONTFRAG on an inet6 datagram socket should succeed");
+ setsockopt(fd6d, sockopt::Ipv6DontFrag, &false)
+ .expect("unsetting IPV6_DONTFRAG on an inet6 datagram socket should succeed");
+}