@@ -972,7 +972,7 @@ impl<'b, 'c, 'e> InterfaceInner<'b, 'c, 'e> {
972972 if !self . has_ip_addr ( ipv4_repr. dst_addr ) &&
973973 !ipv4_repr. dst_addr . is_broadcast ( ) &&
974974 !self . has_multicast_group ( ipv4_repr. dst_addr ) &&
975- !self . is_local_broadcast ( IpAddress :: Ipv4 ( ipv4_repr. dst_addr ) ) {
975+ !self . is_subnet_broadcast ( IpAddress :: Ipv4 ( ipv4_repr. dst_addr ) ) {
976976
977977 // Ignore IP packets not directed at us, or broadcast, or any of the multicast groups.
978978 // If AnyIP is enabled, also check if the packet is routed locally.
@@ -1019,8 +1019,9 @@ impl<'b, 'c, 'e> InterfaceInner<'b, 'c, 'e> {
10191019 }
10201020 }
10211021
1022- /// Checks if an incoming packet had a subnet local broadcast address
1023- fn is_local_broadcast ( & self , address : IpAddress ) -> bool {
1022+ /// Checks if an incoming packet has a broadcast address for the interfaces
1023+ /// first ip address
1024+ fn is_subnet_broadcast ( & self , address : IpAddress ) -> bool {
10241025 match address {
10251026 #[ cfg( feature = "proto-ipv4" ) ]
10261027 IpAddress :: Ipv4 ( addr) => {
@@ -1949,28 +1950,28 @@ mod test {
19491950 } ) ;
19501951 } ) ;
19511952
1952- assert_eq ! ( iface. inner. is_local_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 168 , 1 , 255 ] ) ) ) , true ) ;
1953- assert_eq ! ( iface. inner. is_local_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 168 , 1 , 254 ] ) ) ) , false ) ;
1953+ assert_eq ! ( iface. inner. is_subnet_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 168 , 1 , 255 ] ) ) ) , true ) ;
1954+ assert_eq ! ( iface. inner. is_subnet_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 168 , 1 , 254 ] ) ) ) , false ) ;
19541955
19551956 iface. update_ip_addrs ( |addrs| {
19561957 addrs. iter_mut ( ) . nth ( 0 ) . map ( |addr| {
19571958 * addr = IpCidr :: Ipv4 ( Ipv4Cidr :: new ( Ipv4Address ( [ 192 , 168 , 23 , 24 ] ) , 16 ) ) ;
19581959 } ) ;
19591960 } ) ;
1960- assert_eq ! ( iface. inner. is_local_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 168 , 23 , 255 ] ) ) ) , false ) ;
1961- assert_eq ! ( iface. inner. is_local_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 168 , 23 , 254 ] ) ) ) , false ) ;
1962- assert_eq ! ( iface. inner. is_local_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 168 , 255 , 254 ] ) ) ) , false ) ;
1963- assert_eq ! ( iface. inner. is_local_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 168 , 255 , 255 ] ) ) ) , true ) ;
1961+ assert_eq ! ( iface. inner. is_subnet_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 168 , 23 , 255 ] ) ) ) , false ) ;
1962+ assert_eq ! ( iface. inner. is_subnet_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 168 , 23 , 254 ] ) ) ) , false ) ;
1963+ assert_eq ! ( iface. inner. is_subnet_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 168 , 255 , 254 ] ) ) ) , false ) ;
1964+ assert_eq ! ( iface. inner. is_subnet_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 168 , 255 , 255 ] ) ) ) , true ) ;
19641965
19651966 iface. update_ip_addrs ( |addrs| {
19661967 addrs. iter_mut ( ) . nth ( 0 ) . map ( |addr| {
19671968 * addr = IpCidr :: Ipv4 ( Ipv4Cidr :: new ( Ipv4Address ( [ 192 , 168 , 23 , 24 ] ) , 8 ) ) ;
19681969 } ) ;
19691970 } ) ;
1970- assert_eq ! ( iface. inner. is_local_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 23 , 1 , 255 ] ) ) ) , false ) ;
1971- assert_eq ! ( iface. inner. is_local_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 23 , 1 , 254 ] ) ) ) , false ) ;
1972- assert_eq ! ( iface. inner. is_local_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 255 , 255 , 254 ] ) ) ) , false ) ;
1973- assert_eq ! ( iface. inner. is_local_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 255 , 255 , 255 ] ) ) ) , true ) ;
1971+ assert_eq ! ( iface. inner. is_subnet_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 23 , 1 , 255 ] ) ) ) , false ) ;
1972+ assert_eq ! ( iface. inner. is_subnet_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 23 , 1 , 254 ] ) ) ) , false ) ;
1973+ assert_eq ! ( iface. inner. is_subnet_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 255 , 255 , 254 ] ) ) ) , false ) ;
1974+ assert_eq ! ( iface. inner. is_subnet_broadcast ( IpAddress :: Ipv4 ( Ipv4Address ( [ 192 , 255 , 255 , 255 ] ) ) ) , true ) ;
19741975 }
19751976
19761977 #[ test]
0 commit comments