@@ -196,3 +196,42 @@ fn test_ttl_opts() {
196196 setsockopt ( fd6, sockopt:: Ipv6Ttl , & 1 )
197197 . expect ( "setting ipv6ttl on an inet6 socket should succeed" ) ;
198198}
199+
200+ #[ test]
201+ #[ cfg( any( target_os = "ios" , target_os = "macos" ) ) ]
202+ fn test_dontfrag_opts ( ) {
203+ let fd4 = socket ( AddressFamily :: Inet , SockType :: Stream , SockFlag :: empty ( ) , SockProtocol :: Tcp ) . unwrap ( ) ;
204+ setsockopt ( fd4, sockopt:: IpDontFrag , & true )
205+ . expect ( "setting IP_DONTFRAG on an inet stream socket should succeed" ) ;
206+ setsockopt ( fd4, sockopt:: IpDontFrag , & false )
207+ . expect ( "unsetting IP_DONTFRAG on an inet stream socket should succeed" ) ;
208+ let fd4d = socket ( AddressFamily :: Inet , SockType :: Datagram , SockFlag :: empty ( ) , None ) . unwrap ( ) ;
209+ setsockopt ( fd4d, sockopt:: IpDontFrag , & true )
210+ . expect ( "setting IP_DONTFRAG on an inet datagram socket should succeed" ) ;
211+ setsockopt ( fd4d, sockopt:: IpDontFrag , & false )
212+ . expect ( "unsetting IP_DONTFRAG on an inet datagram socket should succeed" ) ;
213+ }
214+
215+ #[ test]
216+ #[ cfg( any(
217+ target_os = "android" ,
218+ target_os = "ios" ,
219+ target_os = "linux" ,
220+ target_os = "macos" ,
221+ )
222+ ) ]
223+ // Disable the test under emulation because it fails in Cirrus-CI. Lack
224+ // of QEMU support is suspected.
225+ #[ cfg_attr( qemu, ignore) ]
226+ fn test_v6dontfrag_opts ( ) {
227+ let fd6 = socket ( AddressFamily :: Inet6 , SockType :: Stream , SockFlag :: empty ( ) , SockProtocol :: Tcp ) . unwrap ( ) ;
228+ setsockopt ( fd6, sockopt:: Ipv6DontFrag , & true )
229+ . expect ( "setting IPV6_DONTFRAG on an inet6 stream socket should succeed" ) ;
230+ setsockopt ( fd6, sockopt:: Ipv6DontFrag , & false )
231+ . expect ( "unsetting IPV6_DONTFRAG on an inet6 stream socket should succeed" ) ;
232+ let fd6d = socket ( AddressFamily :: Inet6 , SockType :: Datagram , SockFlag :: empty ( ) , None ) . unwrap ( ) ;
233+ setsockopt ( fd6d, sockopt:: Ipv6DontFrag , & true )
234+ . expect ( "setting IPV6_DONTFRAG on an inet6 datagram socket should succeed" ) ;
235+ setsockopt ( fd6d, sockopt:: Ipv6DontFrag , & false )
236+ . expect ( "unsetting IPV6_DONTFRAG on an inet6 datagram socket should succeed" ) ;
237+ }
0 commit comments