@@ -9,9 +9,9 @@ use alloc::vec;
99use alloc:: vec:: Vec ;
1010use core:: { fmt, iter} ;
1111use std:: net:: { IpAddr , Ipv4Addr , Ipv6Addr , SocketAddr , SocketAddrV4 , SocketAddrV6 , ToSocketAddrs } ;
12+
1213#[ cfg( feature = "arbitrary" ) ]
1314use arbitrary:: { Arbitrary , Unstructured } ;
14-
1515use bitcoin:: consensus:: encode:: { self , Decodable , Encodable , ReadExt , WriteExt } ;
1616use io:: { BufRead , Read , Write } ;
1717
@@ -448,8 +448,28 @@ impl std::error::Error for AddrV2ToIpv6AddrError {}
448448impl < ' a > Arbitrary < ' a > for Address {
449449 fn arbitrary ( u : & mut Unstructured < ' a > ) -> arbitrary:: Result < Self > {
450450 let socket_addr = match bool:: arbitrary ( u) ? {
451- true => SocketAddr :: new ( IpAddr :: V4 ( Ipv4Addr :: new ( u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?) ) , u. arbitrary ( ) ?) ,
452- false => SocketAddr :: new ( IpAddr :: V6 ( Ipv6Addr :: new ( u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?) ) , u. arbitrary ( ) ?)
451+ true => SocketAddr :: new (
452+ IpAddr :: V4 ( Ipv4Addr :: new (
453+ u. arbitrary ( ) ?,
454+ u. arbitrary ( ) ?,
455+ u. arbitrary ( ) ?,
456+ u. arbitrary ( ) ?,
457+ ) ) ,
458+ u. arbitrary ( ) ?,
459+ ) ,
460+ false => SocketAddr :: new (
461+ IpAddr :: V6 ( Ipv6Addr :: new (
462+ u. arbitrary ( ) ?,
463+ u. arbitrary ( ) ?,
464+ u. arbitrary ( ) ?,
465+ u. arbitrary ( ) ?,
466+ u. arbitrary ( ) ?,
467+ u. arbitrary ( ) ?,
468+ u. arbitrary ( ) ?,
469+ u. arbitrary ( ) ?,
470+ ) ) ,
471+ u. arbitrary ( ) ?,
472+ ) ,
453473 } ;
454474
455475 Ok ( Address :: new ( & socket_addr, u. arbitrary ( ) ?) )
@@ -459,24 +479,47 @@ impl<'a> Arbitrary<'a> for Address {
459479impl < ' a > Arbitrary < ' a > for AddrV2 {
460480 fn arbitrary ( u : & mut Unstructured < ' a > ) -> arbitrary:: Result < Self > {
461481 match u. int_in_range ( 0 ..=5 ) ? {
462- 0 => Ok ( AddrV2 :: Ipv4 ( Ipv4Addr :: new ( u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?) ) ) ,
463- 1 => Ok ( AddrV2 :: Ipv6 ( Ipv6Addr :: new ( u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?) ) ) ,
482+ 0 => Ok ( AddrV2 :: Ipv4 ( Ipv4Addr :: new (
483+ u. arbitrary ( ) ?,
484+ u. arbitrary ( ) ?,
485+ u. arbitrary ( ) ?,
486+ u. arbitrary ( ) ?,
487+ ) ) ) ,
488+ 1 => Ok ( AddrV2 :: Ipv6 ( Ipv6Addr :: new (
489+ u. arbitrary ( ) ?,
490+ u. arbitrary ( ) ?,
491+ u. arbitrary ( ) ?,
492+ u. arbitrary ( ) ?,
493+ u. arbitrary ( ) ?,
494+ u. arbitrary ( ) ?,
495+ u. arbitrary ( ) ?,
496+ u. arbitrary ( ) ?,
497+ ) ) ) ,
464498 2 => Ok ( AddrV2 :: TorV3 ( u. arbitrary ( ) ?) ) ,
465499 3 => Ok ( AddrV2 :: I2p ( u. arbitrary ( ) ?) ) ,
466- 4 => Ok ( AddrV2 :: Cjdns ( Ipv6Addr :: new ( u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?, u. arbitrary ( ) ?) ) ) ,
467- _ => Ok ( AddrV2 :: Unknown ( u. arbitrary ( ) ?, Vec :: < u8 > :: arbitrary ( u) ?) )
500+ 4 => Ok ( AddrV2 :: Cjdns ( Ipv6Addr :: new (
501+ u. arbitrary ( ) ?,
502+ u. arbitrary ( ) ?,
503+ u. arbitrary ( ) ?,
504+ u. arbitrary ( ) ?,
505+ u. arbitrary ( ) ?,
506+ u. arbitrary ( ) ?,
507+ u. arbitrary ( ) ?,
508+ u. arbitrary ( ) ?,
509+ ) ) ) ,
510+ _ => Ok ( AddrV2 :: Unknown ( u. arbitrary ( ) ?, Vec :: < u8 > :: arbitrary ( u) ?) ) ,
468511 }
469512 }
470513}
471514
472515#[ cfg( feature = "arbitrary" ) ]
473516impl < ' a > Arbitrary < ' a > for AddrV2Message {
474517 fn arbitrary ( u : & mut Unstructured < ' a > ) -> arbitrary:: Result < Self > {
475- Ok ( AddrV2Message {
518+ Ok ( AddrV2Message {
476519 time : u. arbitrary ( ) ?,
477520 services : u. arbitrary ( ) ?,
478521 addr : u. arbitrary ( ) ?,
479- port : u. arbitrary ( ) ?
522+ port : u. arbitrary ( ) ?,
480523 } )
481524 }
482525}
0 commit comments