mirror of
https://github.com/achanda/ipnetwork.git
synced 2025-06-16 08:48:51 +00:00
Merge pull request #63 from tshepang/multiple-slashes
avoid misleading message
This commit is contained in:
@ -35,10 +35,12 @@ impl Error for IpNetworkError {
|
|||||||
|
|
||||||
pub fn cidr_parts(cidr: &str) -> Result<(&str, &str), IpNetworkError> {
|
pub fn cidr_parts(cidr: &str) -> Result<(&str, &str), IpNetworkError> {
|
||||||
let parts = cidr.split('/').collect::<Vec<&str>>();
|
let parts = cidr.split('/').collect::<Vec<&str>>();
|
||||||
if parts.len() == 2 {
|
if parts.len() == 1 {
|
||||||
|
Err(IpNetworkError::InvalidCidrFormat(format!("CIDR must contain '/': {}", cidr)))
|
||||||
|
} else if parts.len() == 2 {
|
||||||
Ok((parts[0], parts[1]))
|
Ok((parts[0], parts[1]))
|
||||||
} else {
|
} else {
|
||||||
Err(IpNetworkError::InvalidCidrFormat(format!("CIDR must contain '/': {}", cidr)))
|
Err(IpNetworkError::InvalidCidrFormat(format!("CIDR must contain a single '/': {}", cidr)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,6 +308,12 @@ mod test {
|
|||||||
assert_eq!(None, cidr);
|
assert_eq!(None, cidr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parse_v4_fail_two_slashes() {
|
||||||
|
let cidr: Option<Ipv4Network> = "10.1.1.1/24/".parse().ok();
|
||||||
|
assert_eq!(None, cidr);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn size_v4_24bit() {
|
fn size_v4_24bit() {
|
||||||
let net: Ipv4Network = "0/24".parse().unwrap();
|
let net: Ipv4Network = "0/24".parse().unwrap();
|
||||||
|
@ -292,6 +292,12 @@ mod test {
|
|||||||
assert_eq!(None, cidr);
|
assert_eq!(None, cidr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn parse_v6_fail_two_slashes() {
|
||||||
|
let cidr: Option<Ipv6Network> = "::1/24/".parse().ok();
|
||||||
|
assert_eq!(None, cidr);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn mask_v6() {
|
fn mask_v6() {
|
||||||
let cidr = Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0), 40).unwrap();
|
let cidr = Ipv6Network::new(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0), 40).unwrap();
|
||||||
|
Reference in New Issue
Block a user