@@ -31,8 +31,8 @@ impl Ipv6Network {
31
31
/// IPv6 address length in bits.
32
32
pub const LENGTH : u8 = 128 ;
33
33
34
- /// Default route, IP network ::/0
35
- pub const ANY : Self = Self {
34
+ /// Default route that contains all IP addresses , IP network ::/0
35
+ pub const DEFAULT_ROUTE : Self = Self {
36
36
network_address : Ipv6Addr :: UNSPECIFIED ,
37
37
netmask : 0 ,
38
38
} ;
@@ -556,7 +556,7 @@ impl Ipv6Network {
556
556
557
557
let mut to_merge = addresses. to_vec ( ) ;
558
558
while let Some ( net) = to_merge. pop ( ) {
559
- let supernet = net. supernet ( ) . unwrap_or ( Ipv6Network :: ANY ) ;
559
+ let supernet = net. supernet ( ) . unwrap_or ( Ipv6Network :: DEFAULT_ROUTE ) ;
560
560
match subnets. entry ( supernet) {
561
561
Entry :: Vacant ( vacant) => {
562
562
vacant. insert ( net) ;
@@ -663,11 +663,19 @@ mod tests {
663
663
use std:: net:: Ipv6Addr ;
664
664
use crate :: { Ipv6Network , IpNetworkError , Ipv6MulticastScope } ;
665
665
use std:: str:: FromStr ;
666
+ use std:: hash:: { Hash , Hasher } ;
667
+ use std:: collections:: hash_map:: DefaultHasher ;
666
668
667
669
fn return_test_ipv6_network ( ) -> Ipv6Network {
668
670
Ipv6Network :: new ( Ipv6Addr :: new ( 0x2001 , 0xdb8 , 0 , 0 , 0 , 0 , 0 , 0 ) , 32 ) . unwrap ( )
669
671
}
670
672
673
+ #[ test]
674
+ fn default_route ( ) {
675
+ let network = Ipv6Network :: DEFAULT_ROUTE ;
676
+ assert ! ( network. is_default_route( ) ) ;
677
+ }
678
+
671
679
#[ test]
672
680
fn new ( ) {
673
681
let ip = Ipv6Addr :: new ( 0xfc00 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ) ;
@@ -879,4 +887,18 @@ mod tests {
879
887
assert_eq ! ( ip, ipv6_network. network_address( ) ) ;
880
888
assert_eq ! ( 128 , ipv6_network. netmask( ) ) ;
881
889
}
890
+
891
+ #[ test]
892
+ fn hash ( ) {
893
+ let network1 = Ipv6Network :: from_str ( "2001::/100" ) . unwrap ( ) ;
894
+ let network2 = Ipv6Network :: from_str ( "2001::/120" ) . unwrap ( ) ;
895
+
896
+ let mut hasher1 = DefaultHasher :: new ( ) ;
897
+ network1. hash ( & mut hasher1) ;
898
+
899
+ let mut hasher2 = DefaultHasher :: new ( ) ;
900
+ network2. hash ( & mut hasher2) ;
901
+
902
+ assert_ne ! ( hasher1. finish( ) , hasher2. finish( ) ) ;
903
+ }
882
904
}
0 commit comments