mirror of
https://github.com/achanda/ipnetwork.git
synced 2025-06-17 01:08:53 +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> {
|
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() == 1 {
|
if parts.len() == 1 {
|
||||||
Ok((parts[0], "32"))
|
Ok((parts[0], ""))
|
||||||
} else if parts.len() == 2 {
|
} else if parts.len() == 2 {
|
||||||
Ok((parts[0], parts[1]))
|
Ok((parts[0], parts[1]))
|
||||||
} else {
|
} else {
|
||||||
|
@ -190,7 +190,14 @@ impl FromStr for Ipv4Network {
|
|||||||
fn from_str(s: &str) -> Result<Ipv4Network, IpNetworkError> {
|
fn from_str(s: &str) -> Result<Ipv4Network, IpNetworkError> {
|
||||||
let (addr_str, prefix_str) = cidr_parts(s)?;
|
let (addr_str, prefix_str) = cidr_parts(s)?;
|
||||||
let addr = parse_addr(addr_str)?;
|
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)
|
Ipv4Network::new(addr, prefix)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -170,7 +170,14 @@ impl FromStr for Ipv6Network {
|
|||||||
let (addr_str, prefix_str) = cidr_parts(s)?;
|
let (addr_str, prefix_str) = cidr_parts(s)?;
|
||||||
let addr = Ipv6Addr::from_str(addr_str)
|
let addr = Ipv6Addr::from_str(addr_str)
|
||||||
.map_err(|_| IpNetworkError::InvalidAddr(addr_str.to_string()))?;
|
.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)
|
Ipv6Network::new(addr, prefix)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user