Expand description
Reachability backend.
All probes run synchronously on the calling thread. No tokio — probes are small sequential I/O and the overhead of a runtime per call isn’t worth it here (unlike netlink/D-Bus, which need async for stream protocols).
ICMP: datagram sockets with IPPROTO_ICMP / IPPROTO_ICMPV6. These work
without CAP_NET_RAW when the kernel’s ping_group_range covers the
caller (verified at startup via /proc/sys/net/ipv4/ping_group_range).
Falls back to returning capabilities().has_ping = false when we can’t
open the socket, so the Diagnostician can skip ICMP probes gracefully.
TCP: std::net::TcpStream::connect_timeout. Good enough for v0.1.
TLS: rustls with webpki-roots; we just want “did the handshake complete with a valid chain?” — not full validation semantics.
Structs§
- Probe
Backend - Reachability backend: ICMP ping, TCP connect, TLS handshake, HTTP HEAD, and traceroute. All methods are synchronous.