diff --git a/src/lib.rs b/src/lib.rs index 7222ae1..be290c6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -87,7 +87,7 @@ //! //! // Other structured errors //! Err(TracerouteError::Ipv6NotSupported) => { -//! eprintln!("IPv6 targets are not yet supported"); +//! eprintln!("IPv6 targets are not supported on this platform"); //! } //! Err(TracerouteError::ResolutionError(msg)) => { //! eprintln!("DNS resolution failed: {}", msg); diff --git a/src/traceroute.rs b/src/traceroute.rs index 71b4106..9d16213 100644 --- a/src/traceroute.rs +++ b/src/traceroute.rs @@ -13,7 +13,7 @@ //! //! - **`InsufficientPermissions`** - Includes what permissions are needed and suggestions //! - **`NotImplemented`** - Feature not yet implemented (e.g., TCP traceroute) -//! - **`Ipv6NotSupported`** - IPv6 targets not yet supported +//! - **`Ipv6NotSupported`** - IPv6 targets not supported on this platform //! - **`ResolutionError`** - DNS resolution failed //! - **`SocketError`** - Socket creation/operation failed //! - **`ConfigError`** - Invalid configuration diff --git a/src/traceroute/config.rs b/src/traceroute/config.rs index 0dc6a96..30390ac 100644 --- a/src/traceroute/config.rs +++ b/src/traceroute/config.rs @@ -61,11 +61,13 @@ impl Default for TimingConfig { /// # Default (`Auto`) /// /// `Auto` prefers IPv4 when a host has both A and AAAA records, and uses -/// IPv6 only when the host is v6-only. This is a deliberately conservative -/// default while IPv6 probing is new (currently macOS-only): a dual-stack -/// host keeps yielding exactly the same trace as previous ftr releases on -/// every platform, and platforms without IPv6 probe support quietly keep -/// working. Pass `V6` (CLI `-6`) to opt in for dual-stack hosts. +/// IPv6 only when the host is v6-only. IPv6 probing is supported on every +/// platform (macOS/Linux/BSD since 0.9.0, Windows since 0.10.0); the +/// v4-first default is kept for behavioral compatibility — a dual-stack +/// host yields exactly the same trace as pre-0.9 ftr releases. This is +/// deliberately not Happy Eyeballs: the OS may prefer IPv6 for its own +/// connections to the same host. Pass `V6` (CLI `-6`) to opt in for +/// dual-stack hosts. #[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)] pub enum PreferredFamily { /// Only resolve to IPv4; error if the host has no A records diff --git a/src/traceroute/error.rs b/src/traceroute/error.rs index 5cb9f3a..9c0980f 100644 --- a/src/traceroute/error.rs +++ b/src/traceroute/error.rs @@ -76,7 +76,9 @@ pub enum TracerouteError { feature: String, }, - /// IPv6 targets are not yet supported + /// IPv6 targets are not supported on this platform (all tier-1 + /// platforms — macOS, Linux, Windows, the BSDs — support IPv6; only + /// other OSes return this) #[error("IPv6 targets are not yet supported")] Ipv6NotSupported,