Add code to submodules

This commit is contained in:
Linus Färnstrand
2016-06-30 04:33:13 +02:00
parent ec16a7d342
commit 5950239744
3 changed files with 480 additions and 0 deletions

24
src/common.rs Normal file
View File

@ -0,0 +1,24 @@
#[derive(Debug,Clone,PartialEq,Eq)]
pub enum IpNetworkError {
InvalidAddr(String),
InvalidPrefix,
InvalidCidrFormat(String),
}
pub fn cidr_parts<'a>(cidr: &'a str) -> Result<(&'a str, &'a str), IpNetworkError> {
let parts = cidr.split('/').collect::<Vec<&str>>();
if parts.len() == 2 {
Ok((parts[0], parts[1]))
} else {
Err(IpNetworkError::InvalidCidrFormat(format!("CIDR must contain '/': {}", cidr)))
}
}
pub fn parse_prefix(prefix: &str, max: u8) -> Result<u8, IpNetworkError> {
let mask = try!(prefix.parse::<u8>().map_err(|_| IpNetworkError::InvalidPrefix));
if mask > max {
Err(IpNetworkError::InvalidPrefix)
} else {
Ok(mask)
}
}