Releases: lance0/ttl
Releases · lance0/ttl
v0.19.0
Interactive Replay Controls
v0.19.0 adds full interactive controls to animated session replay (--replay file --animate):
Added
- Progress bar showing play state, timeline position, speed multiplier, and event count
- Seek controls: Left/Right ±0.5s, [/] ±5s, Home/End jump to start/end
- Speed controls: +/- adjust ±0.5x (0.5x–5.0x range)
- Help overlay (
?) now shows replay-specific keybindings when in replay mode
Fixed
- Replay timing precision: f64 elapsed time calculations prevent drift on long replays
- Replay seek safety: Saturating arithmetic prevents overflow;
Instant::checked_subprevents underflow on corrupted files
v0.18.2
Fixed
- NetBSD UDP probes: Auto-detect source IP for UDP DGRAM sockets on NetBSD. Fixes "No route to host" (EHOSTUNREACH) when sending UDP probes without
--source-ip(#47) - NetBSD IPv4 PMTUD retry spam: PMTUD now terminates immediately on first DF flag failure instead of retrying every probe round. Prints a single warning when
IP_DONTFRAGis unavailable (#47)
Full Changelog: v0.18.1...v0.18.2
v0.18.1
Full Changelog: v0.18.0...v0.18.1
Full Changelog: v0.18.0...v0.18.1
v0.18.0
ECMP Classification & Flow Attribution Hardening
This release fixes how ttl handles ECMP (Equal-Cost Multi-Path) load balancing, particularly per-packet ECMP common on Arista, Juniper, and Cisco switches. Previously, users would see "Paths: 1" in the main table despite 8+ responders visible in the hop detail view.
Added
- ECMP classification — Detects per-flow vs per-packet ECMP using primary concentration heuristics. Paths column now accurately reflects observed responder count for per-packet load balancing (#46)
Eindicator — New ECMP indicator in main table replaces misleading!(route flap) when ECMP is the actual cause- Effective flow capability — Runtime detection of protocol flow support.
--flows > 1with ICMP now warns and collapses to single-flow instead of silently doing nothing - Receiver flow attribution hardening — Out-of-range source ports (NAT/CGNAT) no longer force-attributed to flow 0. Unknown-flow responses only match pending probes when unambiguous
- Hop detail view — Per-packet ECMP section shows responder count and path count; per-flow ECMP section unchanged
- Last RTT semantics documented —
Lastcolumn tracks primary responder's most recent RTT - Main table layout guard tests — Header/cell/width count parity verified across display mode x flow mode matrix
- IPv6 RAW payload fallback tests — Echo Reply and Time Exceeded parsing tests for IPv6
Changed
- Flap detection suppressed during ECMP —
!indicator no longer fires when per-packet ECMP is detected at a hop - Probe engines use per-session config — Each target's engine sees the effective flow count, not the raw CLI value
Full Changelog: v0.17.0...v0.18.0
v0.17.0
Full Changelog: v0.16.1...v0.17.0
v0.16.1
What's Changed
Fix: Hang on exit (#41)
Three targeted fixes for the shutdown hang reported in #41:
- Bounded IPv6 echo drain loop — The
poll_ipv6_echo_replydrain loop now caps at 256 packets per batch and checks the cancellation token, preventing starvation when the socket is continuously readable - Ctrl+C force-exit handler —
tokio::signal::ctrl_c()handler works outside crossterm raw mode; first press cancels gracefully, second press force-exits with code 130 - Shutdown tracing — Set
TTL_SHUTDOWN_TRACE=1to see timestamped shutdown progress logs on stderr, useful for diagnosing any remaining hang scenarios
Full Changelog: v0.16.0...v0.16.1
v0.16.0
Full Changelog: v0.15.3...v0.16.0
v0.15.3
Full Changelog: v0.15.2...v0.15.3
v0.15.2
Full Changelog: v0.15.1...v0.15.2
v0.15.1
Full Changelog: v0.15.0...v0.15.1