pub struct Report {Show 19 fields
pub udp: bool,
pub ipv6: bool,
pub ipv4: bool,
pub ipv6_can_send: bool,
pub ipv4_can_send: bool,
pub os_has_ipv6: bool,
pub icmpv4: Option<bool>,
pub icmpv6: Option<bool>,
pub mapping_varies_by_dest_ip: Option<bool>,
pub mapping_varies_by_dest_ipv6: Option<bool>,
pub hair_pinning: Option<bool>,
pub portmap_probe: Option<ProbeOutput>,
pub preferred_relay: Option<RelayUrl>,
pub relay_latency: RelayLatencies,
pub relay_v4_latency: RelayLatencies,
pub relay_v6_latency: RelayLatencies,
pub global_v4: Option<SocketAddrV4>,
pub global_v6: Option<SocketAddrV6>,
pub captive_portal: Option<bool>,
}
Expand description
A netcheck report.
Can be obtained by calling Client::get_report
.
Fields§
§udp: bool
A UDP STUN round trip completed.
ipv6: bool
An IPv6 STUN round trip completed.
ipv4: bool
An IPv4 STUN round trip completed.
ipv6_can_send: bool
An IPv6 packet was able to be sent
ipv4_can_send: bool
an IPv4 packet was able to be sent
os_has_ipv6: bool
could bind a socket to ::1
icmpv4: Option<bool>
An ICMPv4 round trip completed, None
if not checked.
icmpv6: Option<bool>
An ICMPv6 round trip completed, None
if not checked.
mapping_varies_by_dest_ip: Option<bool>
Whether STUN results depend on which STUN server you’re talking to (on IPv4).
mapping_varies_by_dest_ipv6: Option<bool>
Whether STUN results depend on which STUN server you’re talking to (on IPv6).
Note that we don’t really expect this to happen and are merely logging this if detecting rather than using it. For now.
hair_pinning: Option<bool>
Whether the router supports communicating between two local devices through the NATted public IP address (on IPv4).
portmap_probe: Option<ProbeOutput>
Probe indicating the presence of port mapping protocols on the LAN.
preferred_relay: Option<RelayUrl>
None
for unknown
relay_latency: RelayLatencies
keyed by relay Url
relay_v4_latency: RelayLatencies
keyed by relay Url
relay_v6_latency: RelayLatencies
keyed by relay Url
global_v4: Option<SocketAddrV4>
ip:port of global IPv4
global_v6: Option<SocketAddrV6>
[ip]:port
of global IPv6
captive_portal: Option<bool>
CaptivePortal is set when we think there’s a captive portal that is intercepting HTTP traffic.
Trait Implementations§
impl Eq for Report
impl StructuralPartialEq for Report
Auto Trait Implementations§
impl Freeze for Report
impl RefUnwindSafe for Report
impl Send for Report
impl Sync for Report
impl Unpin for Report
impl UnwindSafe for Report
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.