Fix Ipv4Network::contains bug

This commit is contained in:
Linus Färnstrand
2016-06-13 22:57:39 +02:00
parent e812eb66ca
commit 0f9416f3b4

View File

@ -78,7 +78,8 @@ impl Ipv4Network {
pub fn contains(&self, ip: Ipv4Addr) -> bool {
let (_, net) = self.network();
(u32::from(ip) & net) == net
let (_, mask) = self.mask();
(u32::from(ip) & mask) == net
}
fn parse_addr(addr: &str) -> Result<Ipv4Addr, String> {
@ -289,4 +290,11 @@ mod test {
let ip = Ipv4Addr::new(74, 125, 227, 4);
assert!(cidr.contains(ip));
}
#[test]
fn not_contains_v4() {
let cidr = Ipv4Network::new(Ipv4Addr::new(10, 0, 0, 50), 24);
let ip = Ipv4Addr::new(10, 1, 0, 1);
assert!(!cidr.contains(ip));
}
}