From d84dc6161aa72de8552e4a13872a9221e9537a8c Mon Sep 17 00:00:00 2001 From: Abhishek Chanda Date: Sun, 31 Jan 2016 22:29:41 -0800 Subject: [PATCH] Fix the network function and associated tests --- src/lib.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index b2e084a..698dbd6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -51,7 +51,9 @@ impl Ipv4Network { } pub fn network(&self) -> (Ipv4Addr, u32) { - (self.addr, u32::from(self.addr)) + let (_, mask) = self.mask(); + let ip = u32::from(self.addr) & mask; + (Ipv4Addr::from(ip), ip) } pub fn contains(&self, ip: Ipv4Addr) -> bool { @@ -139,10 +141,10 @@ mod test { #[test] fn network_v4() { - let cidr = Ipv4Network::new(Ipv4Addr::new(74, 125, 227, 0), 25); + let cidr = Ipv4Network::new(Ipv4Addr::new(10, 10, 1, 97), 23); let (ip, int) = cidr.network(); - assert_eq!(ip, Ipv4Addr::new(74, 125, 227, 0)); - assert_eq!(int, 1249764096); + assert_eq!(ip, Ipv4Addr::new(10, 10, 0, 0)); + assert_eq!(int, 168427520); } #[test]