mirror of
https://github.com/achanda/ipnetwork.git
synced 2025-06-15 08:36:34 +00:00
If there is no prefix, default to number of bits ipv4/32, ipv6/128
This commit is contained in:
@ -35,7 +35,7 @@ impl Error for IpNetworkError {
|
||||
pub fn cidr_parts(cidr: &str) -> Result<(&str, &str), IpNetworkError> {
|
||||
let parts = cidr.split('/').collect::<Vec<&str>>();
|
||||
if parts.len() == 1 {
|
||||
Ok((parts[0], "32"))
|
||||
Ok((parts[0], ""))
|
||||
} else if parts.len() == 2 {
|
||||
Ok((parts[0], parts[1]))
|
||||
} else {
|
||||
|
@ -190,7 +190,14 @@ impl FromStr for Ipv4Network {
|
||||
fn from_str(s: &str) -> Result<Ipv4Network, IpNetworkError> {
|
||||
let (addr_str, prefix_str) = cidr_parts(s)?;
|
||||
let addr = parse_addr(addr_str)?;
|
||||
let prefix = parse_prefix(prefix_str, IPV4_BITS)?;
|
||||
let prefix = parse_prefix(
|
||||
if prefix_str.is_empty() {
|
||||
IPV4_BITS.to_string()
|
||||
} else {
|
||||
prefix_str
|
||||
},
|
||||
IPV4_BITS,
|
||||
)?;
|
||||
Ipv4Network::new(addr, prefix)
|
||||
}
|
||||
}
|
||||
|
@ -170,7 +170,14 @@ impl FromStr for Ipv6Network {
|
||||
let (addr_str, prefix_str) = cidr_parts(s)?;
|
||||
let addr = Ipv6Addr::from_str(addr_str)
|
||||
.map_err(|_| IpNetworkError::InvalidAddr(addr_str.to_string()))?;
|
||||
let prefix = parse_prefix(prefix_str, IPV6_BITS)?;
|
||||
let prefix = parse_prefix(
|
||||
if prefix_str.is_empty() {
|
||||
IPV6_BITS.to_string()
|
||||
} else {
|
||||
prefix_str
|
||||
},
|
||||
IPV6_BITS,
|
||||
)?;
|
||||
Ipv6Network::new(addr, prefix)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user