diff options
| author | ache <ache@ache.one> | 2026-08-04 18:27:58 +0200 |
|---|---|---|
| committer | ache <ache@ache.one> | 2026-08-04 18:27:58 +0200 |
| commit | b6ce2ea9948cee959e31013221e483eceb9b4a47 (patch) | |
| tree | 727c6df94b340385664372e8cf8e8e80f62b459b /src/ip.rs | |
| parent | Remove dead code (diff) | |
Linting and format
Diffstat (limited to 'src/ip.rs')
| -rw-r--r-- | src/ip.rs | 32 |
1 files changed, 15 insertions, 17 deletions
@@ -29,7 +29,7 @@ pub fn parse_bsd_ipv4(s: &str) -> Result<Ipv4Addr, String> { let parts: Vec<&str> = s.split('.').collect(); let n = parts.len(); - if n < 1 || n > 4 { + if !(1..=4).contains(&n) { return Err("invalid number of parts".into()); } @@ -41,33 +41,31 @@ pub fn parse_bsd_ipv4(s: &str) -> Result<Ipv4Addr, String> { let addr: u32 = match n { 4 => { - if parsed_parts[0] > 0xFF || parsed_parts[1] > 0xFF || - parsed_parts[2] > 0xFF || parsed_parts[3] > 0xFF { + if parsed_parts[0] > 0xFF + || parsed_parts[1] > 0xFF + || parsed_parts[2] > 0xFF + || parsed_parts[3] > 0xFF + { return Err("invalid IP part out of range".into()); } - (parsed_parts[0] << 24) | - (parsed_parts[1] << 16) | - (parsed_parts[2] << 8) | - parsed_parts[3] + (parsed_parts[0] << 24) + | (parsed_parts[1] << 16) + | (parsed_parts[2] << 8) + | parsed_parts[3] } 3 => { if parsed_parts[0] > 0xFF || parsed_parts[1] > 0xFF || parsed_parts[2] > 0xFFFF { return Err("invalid IP part out of range".into()); } - (parsed_parts[0] << 24) | - (parsed_parts[1] << 16) | - parsed_parts[2] + (parsed_parts[0] << 24) | (parsed_parts[1] << 16) | parsed_parts[2] } 2 => { if parsed_parts[0] > 0xFF || parsed_parts[1] > 0xFFFFFF { return Err("invalid IP part out of range".into()); } - (parsed_parts[0] << 24) | - parsed_parts[1] - } - 1 => { - parsed_parts[0] + (parsed_parts[0] << 24) | parsed_parts[1] } + 1 => parsed_parts[0], _ => { return Err("invalid number of parts".into()); } @@ -81,11 +79,11 @@ pub fn parse_ip(s: &str) -> Result<IpAddr, String> { if let Ok(ip) = s.parse::<Ipv6Addr>() { return Ok(IpAddr::V6(ip)); } - + // Try to parse as BSD valid IPv4 if let Ok(ipv4) = parse_bsd_ipv4(s) { return Ok(IpAddr::V4(ipv4)); } - + Err(format!("invalid IP address: {}", s)) } |