use core::net::{Ipv4Addr, SocketAddrV4};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[non_exhaustive]
pub struct LocalSubnet {
pub broadcast: SocketAddrV4,
pub mask: Option<Ipv4Addr>,
pub alone: bool,
pub directed: Option<Ipv4Addr>,
}
impl LocalSubnet {
#[must_use]
pub const fn new(broadcast: SocketAddrV4) -> Self {
Self {
broadcast,
mask: None,
alone: false,
directed: None,
}
}
#[must_use]
pub const fn member(group: SocketAddrV4, directed: Option<Ipv4Addr>) -> Self {
Self {
broadcast: group,
mask: None,
alone: false,
directed,
}
}
#[must_use]
pub const fn is_group(&self) -> bool {
self.broadcast.ip().is_multicast()
}
}