use std::net::SocketAddrV4;
#[derive(Debug)]
#[cfg_attr(
feature = "v4_server",
derive(serde::Serialize, serde::Deserialize),
serde(default = "SocketConfig::default_server")
)]
#[cfg_attr(feature = "v4_client", derive(clap::Args))]
pub struct SocketConfig {
#[cfg_attr(feature = "v4_client", arg(long, default_value_t = Self::default_client().listen_address))]
pub listen_address: SocketAddrV4,
#[cfg_attr(feature = "v4_client", arg(long))]
pub interface: Option<String>,
}
impl SocketConfig {
#[cfg(feature = "v4_server")]
pub fn default_server() -> Self {
use std::net::Ipv4Addr;
SocketConfig {
listen_address: SocketAddrV4::new(
Ipv4Addr::new(0, 0, 0, 0),
crate::v4::RESOLVED_SERVER_PORT,
),
interface: None,
}
}
#[cfg(feature = "v4_client")]
pub fn default_client() -> Self {
use std::net::Ipv4Addr;
SocketConfig {
listen_address: SocketAddrV4::new(
Ipv4Addr::new(0, 0, 0, 0),
crate::v4::RESOLVED_CLIENT_PORT,
),
interface: None,
}
}
}