Enum IpMode
pub enum IpMode {
Ip4,
Ip6,
DualStack,
}Expand description
Sets the socket type to be established and also determines the type of ENRs that we will store
in our routing table.
We store ENR’s that have a get_contractable_addr() based on the IpMode set.
Variants§
Ip4
IPv4 only. This creates an IPv4 only UDP socket and will only store ENRs in the local routing table if they contain a contactable IPv4 address.
Ip6
IPv6 only. This creates an IPv6 only UDP socket and will only store ENRs in the local routing table if they contain a contactable IPv6 address. Mapped addresses will be disabled.
DualStack
Two UDP sockets are in use. One for Ipv4 and one for Ipv6.
Implementations§
§impl IpMode
impl IpMode
pub fn is_ipv4(&self) -> bool
pub fn get_contactable_addr(&self, enr: &Enr<CombinedKey>) -> Option<SocketAddr>
pub fn get_contactable_addr(&self, enr: &Enr<CombinedKey>) -> Option<SocketAddr>
Get the contactable Socket address of an Enr under current configuration. When running in dual stack, an Enr that advertises both an Ipv4 and a canonical Ipv6 address will be contacted using their Ipv6 address.
Trait Implementations§
impl Copy for IpMode
impl Eq for IpMode
impl StructuralPartialEq for IpMode
Auto Trait Implementations§
impl Freeze for IpMode
impl RefUnwindSafe for IpMode
impl Send for IpMode
impl Sync for IpMode
impl Unpin for IpMode
impl UnsafeUnpin for IpMode
impl UnwindSafe for IpMode
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 1 byte
Size for each variant:
Ip4: 0 bytesIp6: 0 bytesDualStack: 0 bytes