From 5fabbc91d50a4c6926b83b2d923600071b039296 Mon Sep 17 00:00:00 2001 From: sharks Date: Tue, 27 Mar 2018 21:36:39 -0500 Subject: [PATCH] If there is no prefix, default to number of bits ipv4/32, ipv6/128 --- src/common.rs | 2 +- src/ipv4.rs | 9 ++++++++- src/ipv6.rs | 9 ++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/common.rs b/src/common.rs index 6c7f346..904e52f 100644 --- a/src/common.rs +++ b/src/common.rs @@ -35,7 +35,7 @@ impl Error for IpNetworkError { pub fn cidr_parts(cidr: &str) -> Result<(&str, &str), IpNetworkError> { let parts = cidr.split('/').collect::>(); if parts.len() == 1 { - Ok((parts[0], "32")) + Ok((parts[0], "")) } else if parts.len() == 2 { Ok((parts[0], parts[1])) } else { diff --git a/src/ipv4.rs b/src/ipv4.rs index 76af8b4..9e02141 100644 --- a/src/ipv4.rs +++ b/src/ipv4.rs @@ -190,7 +190,14 @@ impl FromStr for Ipv4Network { fn from_str(s: &str) -> Result { 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) } } diff --git a/src/ipv6.rs b/src/ipv6.rs index 850654f..d2818fc 100644 --- a/src/ipv6.rs +++ b/src/ipv6.rs @@ -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) } }