Merge pull request #3 from faern/master

Fix Ipv4Network::contains bug
This commit is contained in:
Abhishek Chanda
2016-06-13 23:08:58 -07:00
committed by GitHub

View File

@ -78,7 +78,8 @@ impl Ipv4Network {
pub fn contains(&self, ip: Ipv4Addr) -> bool { pub fn contains(&self, ip: Ipv4Addr) -> bool {
let (_, net) = self.network(); 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> { fn parse_addr(addr: &str) -> Result<Ipv4Addr, String> {
@ -289,4 +290,11 @@ mod test {
let ip = Ipv4Addr::new(74, 125, 227, 4); let ip = Ipv4Addr::new(74, 125, 227, 4);
assert!(cidr.contains(ip)); 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));
}
} }