From f73543b96621631830620fbd856f974922f06b31 Mon Sep 17 00:00:00 2001 From: "David E. Weekly" Date: Sun, 19 Jul 2026 19:01:23 -0700 Subject: [PATCH] docs: Fix stale IPv6 platform claims in rustdoc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PreferredFamily's Auto rationale still said IPv6 probing was macOS-only; it has covered macOS/Linux/BSD since 0.9.0 and Windows since 0.10.0. The v4-first default remains, now justified solely by behavioral compatibility with pre-0.9 traces. Also update Ipv6NotSupported doc comments (it now only fires on non-tier-1 platforms) — error message strings are unchanged. Co-Authored-By: Claude Fable 5 --- src/lib.rs | 2 +- src/traceroute.rs | 2 +- src/traceroute/config.rs | 12 +++++++----- src/traceroute/error.rs | 4 +++- 4 files changed, 12 insertions(+), 8 deletions(-) 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,