rama_net/
mode.rs

1#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Hash)]
2/// Enum representing the IP modes that can be used by the DNS resolver.
3pub enum DnsResolveIpMode {
4    #[default]
5    Dual,
6    SingleIpV4,
7    SingleIpV6,
8    DualPreferIpV4,
9}
10
11impl DnsResolveIpMode {
12    /// checks if IPv4 is supported in current mode
13    pub fn ipv4_supported(&self) -> bool {
14        matches!(
15            self,
16            DnsResolveIpMode::Dual
17                | DnsResolveIpMode::SingleIpV4
18                | DnsResolveIpMode::DualPreferIpV4
19        )
20    }
21
22    /// checks if IPv6 is supported in current mode
23    pub fn ipv6_supported(&self) -> bool {
24        matches!(
25            self,
26            DnsResolveIpMode::Dual
27                | DnsResolveIpMode::SingleIpV6
28                | DnsResolveIpMode::DualPreferIpV4
29        )
30    }
31}
32///Mode for establishing a connection
33#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Hash)]
34pub enum ConnectIpMode {
35    #[default]
36    Dual,
37    Ipv4,
38    Ipv6,
39}