@@ -196,3 +196,42 @@ fn test_ttl_opts() {
196
196
setsockopt ( fd6, sockopt:: Ipv6Ttl , & 1 )
197
197
. expect ( "setting ipv6ttl on an inet6 socket should succeed" ) ;
198
198
}
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