Parse IpAddr using Ipv4Addr::from_str

This commit is contained in:
sharks
2018-05-27 19:26:11 -05:00
parent d5e6b11170
commit 5e7eb0bd1b
3 changed files with 5 additions and 60 deletions

View File

@ -56,20 +56,3 @@ pub fn parse_prefix(prefix: &str, max: u8) -> Result<u8, IpNetworkError> {
Ok(mask)
}
}
pub fn parse_addr(addr: &str) -> Result<Ipv4Addr, IpNetworkError> {
let addr_parts = addr.split('.').map(|b| b.parse::<u8>());
let mut bytes = [0; 4];
for (i, byte) in addr_parts.enumerate() {
if i >= 4 {
return Err(IpNetworkError::InvalidAddr(format!(
"More than 4 bytes: {}",
addr
)));
}
bytes[i] = byte.map_err(|_| {
IpNetworkError::InvalidAddr(format!("All bytes not 0-255: {}", addr))
})?;
}
Ok(Ipv4Addr::new(bytes[0], bytes[1], bytes[2], bytes[3]))
}