Simplify API

This commit is contained in:
chanda, abhishek
2015-08-02 18:27:17 -07:00
parent 3588e1b467
commit 9bffd5c5ec

View File

@ -40,17 +40,14 @@ impl Ipv4Network {
!(0xffffffff >> prefix)
}
pub fn mask(&self) -> Ipv4Addr {
let mask = self.mask_int();
Ipv4Addr::from(mask)
pub fn mask(&self) -> (Ipv4Addr, u32) {
let prefix = self.prefix;
let mask = !(0xffffffff >> prefix);
return (Ipv4Addr::from(mask), mask);
}
pub fn network_int(&self) -> u32 {
u32::from(self.addr)
}
pub fn network(&self) -> Ipv4Addr {
self.addr
pub fn network(&self) -> (Ipv4Addr, u32) {
return (self.addr, u32::from(self.addr));
}
}
@ -120,27 +117,19 @@ mod test {
assert_eq!(cidr.prefix(), 24);
}
#[test]
fn mask_int_v4() {
let cidr = Ipv4Network::new(Ipv4Addr::new(74, 125, 227, 0), 29);
assert_eq!(cidr.mask_int(), 4294967288);
}
#[test]
fn mask_v4() {
let cidr = Ipv4Network::new(Ipv4Addr::new(74, 125, 227, 0), 29);
assert_eq!(cidr.mask(), Ipv4Addr::new(255, 255, 255, 248));
}
#[test]
fn network_int_v4() {
let cidr = Ipv4Network::new(Ipv4Addr::new(74, 125, 227, 0), 25);
assert_eq!(cidr.network_int(), 1249764096);
let (ip, int) = cidr.mask();
assert_eq!(ip, Ipv4Addr::new(255, 255, 255, 248));
assert_eq!(int, 4294967288);
}
#[test]
fn network_v4() {
let cidr = Ipv4Network::new(Ipv4Addr::new(74, 125, 227, 0), 25);
assert_eq!(cidr.network(), Ipv4Addr::new(74, 125, 227, 0));
let (ip, int) = cidr.network();
assert_eq!(ip, Ipv4Addr::new(74, 125, 227, 0));
assert_eq!(int, 1249764096);
}
}