Skip to main content

tempo_precompiles/
ip_validation.rs

1//! IP address validation utilities for validator configuration.
2//!
3//! This module provides validation functions for ensuring that addresses conform
4//! to expected IP address formats (with or without ports).
5
6#[derive(Debug, thiserror::Error)]
7pub(crate) enum IpWithPortParseError {
8    #[error("input was not of the form `<ip>:<port>`")]
9    Parse(#[from] std::net::AddrParseError),
10}
11
12/// Validates that `input` is of the form `<ip>:<port>`.
13pub(crate) fn ensure_address_is_ip_port(
14    input: &str,
15) -> core::result::Result<(), IpWithPortParseError> {
16    input.parse::<std::net::SocketAddr>()?;
17    Ok(())
18}
19
20#[derive(Debug, thiserror::Error)]
21pub(crate) enum IpParseError {
22    #[error("input was not a valid IP address")]
23    Parse(#[from] std::net::AddrParseError),
24}
25
26/// Validates that `input` is a valid IP address (v4 or v6, no port).
27pub(crate) fn ensure_address_is_ip(input: &str) -> core::result::Result<(), IpParseError> {
28    input.parse::<std::net::IpAddr>()?;
29    Ok(())
30}