head 1.9; access; symbols pkgsrc-2026Q3:1.8.0.2 pkgsrc-2026Q3-base:1.8 pkgsrc-2026Q2:1.4.0.2 pkgsrc-2026Q2-base:1.4 pkgsrc-2026Q1:1.2.0.2 pkgsrc-2026Q1-base:1.2; locks; strict; comment @# @; 1.9 date 2026.10.22.13.35.07; author pin; state Exp; branches; next 1.8; commitid LuHY3QzdMhIVAt0H; 1.8 date 2026.09.18.10.08.29; author pin; state Exp; branches; next 1.7; commitid cXEMHKneUvpNx5WG; 1.7 date 2026.08.25.11.09.07; author pin; state Exp; branches; next 1.6; commitid vXc3gjVohsiqE0TG; 1.6 date 2026.07.14.11.13.04; author pin; state Exp; branches; next 1.5; commitid CNueg6WMk0jj1CNG; 1.5 date 2026.06.28.11.55.37; author pin; state Exp; branches; next 1.4; commitid HtWmjd3XVx8YLyLG; 1.4 date 2026.06.12.12.30.39; author pin; state Exp; branches; next 1.3; commitid ou5NhDQgWrMRtvJG; 1.3 date 2026.05.02.19.45.11; author pin; state Exp; branches; next 1.2; commitid DTn7LzaybuFEchEG; 1.2 date 2026.02.28.06.56.31; author pin; state Exp; branches; next 1.1; commitid D7Xp6OGP5JKvY6wG; 1.1 date 2026.02.24.11.59.09; author pin; state Exp; branches; next ; commitid 1cWzR4kzD6DiMCvG; desc @@ 1.9 log @net/ttl: update to 0.24.1 [0.24.1] - 2026-10-21 Security webpki-roots and webpki-root-certs 1.0.7 → 1.0.10 clear RUSTSEC-2026-0381 and RUSTSEC-2026-0383: the bundled Mozilla root set still trusted intermediates issued by the breached emSign CA. webpki-roots backs the update check (ureq); webpki-root-certs reaches ttl via reqwest's platform verifier (PeeringDB). rustls-webpki 0.103.15 → 0.103.16 clears RUSTSEC-2026-0382 (certificate verification could accept distrusted intermediates). Reaches ttl via rustls in reqwest and ureq. [0.24.0] - 2026-10-16 Added Native Windows build (#141): the crate now compiles and its test suite runs on Windows, checked by a new build-windows CI job. Live tracing still needs WSL2: on native Windows ttl exits with a pointer to WSL2 instead of probing, while --replay and --diff work. No pre-built Windows binaries yet. Contributed by @@athallajovian9-cyber. MPLS and interface details in text reports (#146): --report (including --replay --report) now prints indented lines under each hop with RFC 5837 interface data (role, name, address, ifIndex, MTU) and the MPLS label stack (label, traffic class, bottom-of-stack flag, TTL), tagged with the responding IP. Responders are sorted by address so ECMP output is deterministic, and interface names are sanitized before printing. Hops without extensions are unchanged. --replay-size-limit (#157): opens trusted --replay/--diff recordings larger than the default 10 MiB cap (range 1-1024). The limit is enforced while reading, and the error for an oversized file now says how to raise it. Changed Depend on pnet_packet (plus pnet_datalink on unix) instead of the pnet umbrella crate, dropping the unused pnet_transport. IP_HDRINCL is now set through socket2 instead of a hand-written setsockopt. ICMP extension indicator (#145): hops whose responders sent RFC 5837 interface or MPLS data show a + beside the host in the main table. The marker checks every responder, and the hop detail view now includes extension data from secondary responders too. Conflicting output modes are rejected (#148): --json, --csv and --report are mutually exclusive, --diff accepts only text or --json output, and --animate cannot be combined with --json, --csv, --report or --no-tui. These combinations used to succeed while silently ignoring all but one option, so scripts that relied on that precedence now get a usage error. A non-finite --speed (such as NaN) is also rejected. Readable selections and calmer probe history (#153): RGB themes raise any selected-row foreground below 4.5:1 contrast against the selection background, so ASN and status text stay legible on the highlighted hop, target or replay progress row; ANSI colors in the default theme stay under terminal control. Unselected hop rows keep the terminal's default foreground instead of the default theme forcing White, which was unreadable on light terminals. The Recent column now shows the last ten outcomes oldest to newest as a dim · per reply and a red (theme error color) × per timeout, replacing the bright green blocks, and a 0% loss figure is dimmed so real loss stands out. Help explains the symbols. One visual language across the TUI (#164): title flags are small badges without brackets (NAT, RL?, ASYM, TTL!, MTU 1400, MTU unconfirmed, max_ttl=30, a reversed PAUSED), and the interval, probe count, routing and RTT ms unit sit dim on the right of the title, giving way first on narrow borders. Table numbers are right-aligned with one decimal and no per-column units; loss is always shown with one decimal, reads – until a probe completes, and suspected rate limiting is a dim RL tag after the value instead of 79%RL. Hops that never replied are dimmed. Narrow windows drop columns in a new order that keeps Host readable (ASN yields first, Sent goes before Last), the ASN column is omitted with --no-asn, and a static replay hides Last and Recent. Popups share one rounded frame with key hints on the border and wrap text at word boundaries; the status bar uses one hint style, keeps status messages beside the hints, and hides live-only keys in a static replay. Help is grouped into sections with a Legend for host markers, the RL tag, Recent symbols and title flags. Hop details are laid out in sections with one aligned value grid. The target list shows one row per target with hops, loss and RTT at the destination; Add Target shows a Hostname or IP address placeholder; Settings says why the update check is locked (for example [off] set by --no-update-check). The default theme uses the terminal's own foreground so it reads on light terminals; the other themes, intended for dark terminals, lift dim text to at least 4.5:1 contrast. Documentation reorganized (#162): the README is a short front door (quick start, what ttl finds, install summary, platform support, task table). Installation, permissions, completions, Windows/WSL2, download verification and troubleshooting moved to the new docs/INSTALL.md; limitations moved to KNOWN_ISSUES.md; docs/README.md indexes every page. Old README anchors still resolve. Doc claims that had drifted from the code were corrected, including the jq recipes in docs/SCRIPTING.md, which used fields the JSON export does not have, and the PeeringDB refresh key (Ctrl+R). Fixed MPLS labels missing from some routers (#144): when a router's ICMP length field advertises a short original datagram but pads the quote to RFC 4884's 128 bytes, ttl read probe payload as the extension header and showed no labels. The extension offset is now at least 128 bytes; longer advertised quotes keep their actual offset. ICMP extension checksums validated (#158): every transmitted extension checksum is now checked, and legacy (length 0) extension detection requires a valid, non-zero checksum, so damaged extensions or ordinary quoted payload no longer appear as MPLS or interface data. Objects whose length is not a whole number of 32-bit words are rejected. Invalid extension metadata is dropped without losing the hop's response. ICMPv6 Parameter Problem replies (#160): these are now matched to their probe instead of showing as timeouts. They never confirm a PMTUD size or mark the destination as reached. PMTUD requires destination confirmation (#159): a path MTU is reported only after the destination answers at that size. Router Packet Too Big hints are treated as upper bounds, so paths with more than one bottleneck are handled; a search where nothing got through shows MTU: unconfirmed (JSON discovered_mtu stays null) instead of reporting the protocol minimum; and hints below the protocol minimum or below an already confirmed size are ignored. Hop details stay readable (#145): long RFC 5837 interface names and addresses wrap instead of pushing the MTU out of the popup, and details that overflow scroll with PgUp/PgDn (paging by the visible height) and Home/End. Small terminals (#151): the hop table drops whole columns that do not fit instead of truncating headings and digits (omitted statistics remain in hop details), the selected hop or target scrolls into view, the help screen scrolls with PgUp/PgDn/Home/End paging by its visible height, and the status bar hints are never clipped. Add Target dialog (#149): the cursor and typed text stay visible when a hostname is longer than the input field. TUI input responsiveness (#152): queued keystrokes are processed without waiting a frame each, so pause or quit no longer lags behind a burst of navigation keys. Ctrl-C now quits from any dialog, including Settings. Unbounded memory in headless runs (#155): --daemon, --prometheus and plain --no-tui runs no longer record replay events that nothing reads, so memory stays flat over long runs. --stream-json, TUI and batch JSON sessions keep their replay history. Enrichment starvation (#156): rDNS, ASN, GeoIP and IX lookups skip recently failed addresses before filling each batch, so later hops get enriched even when the first batch's worth of hops have no result. Shutdown cancels in-flight lookup batches instead of waiting for their network timeouts (for example with an unreachable --dns server). Metrics endpoint request handling (#150): --prometheus reads the full HTTP request head across TCP reads, so requests split over several packets no longer get 404/405. Headers are capped at 8 KiB (431 above that), and reading the request and writing the response each have a 5-second deadline. Requests must now be complete: a bare echo "GET /metrics" | nc without an HTTP version and blank line gets 400; use curl. Atomic saves (#157): preferences and TUI JSON exports are written to a temporary file and renamed into place, so a failed write keeps the previous file. A symlinked preferences file keeps its link (the target is replaced), and exports made under sudo keep normal permissions instead of 0600. Concurrent instances no longer cross-talk (#163): the ICMP identifier was the process ID, so ttl instances in separate containers (all PID 1) shared it and picked up each other's replies. Each process now uses a random identifier, and replies are matched only against the destination they quote instead of falling back to any target with the same sequence. With a single target, replies quoting a DNAT-translated destination are still accepted; with several targets they are dropped. Silent hops are not flagged as rate limited (#163): a hop that never answered showed 100%RL and put RL? in the title of every unreachable trace. Detection now requires at least one reply. ASN prefix (#163): hop details showed the country code (Prefix: US) instead of the BGP prefix from Team Cymru. Animated replay keeps enrichment (#163): --replay --animate showed bare IPs because probe events carry no hostnames or ASNs; enrichment is now copied from the loaded session during playback and seeking. --report columns stay aligned (#163): long hostnames are shortened with an ellipsis (the IP is always kept) instead of pushing later columns right. --pmtud with -p udp/-p tcp is rejected (#163): PMTUD only probes with ICMP, so this combination used to be accepted and do nothing. --theme default overrides a saved theme (#163): it was indistinguishable from omitting --theme. Omit the flag to keep the saved theme. Update check shown as off when disabled for the run (#163): Settings showed [on] under --no-update-check, DO_NOT_TRACK or TTL_NO_UPDATE_CHECK. It now shows off and locked, and the saved preference is not changed. Help text (#163): the --flows example in --help now uses -p udp, and the FreeBSD/NetBSD interface-binding error names --interface instead of -i. Security rustls 0.23.45 → 0.23.46 clears RUSTSEC-2026-0346 (Debug impls expose TLS secrets), RUSTSEC-2026-0347 (buffered data sent to the outer server after ECH rejection), RUSTSEC-2026-0348 (Brotli certificate decompression can allocate up to 1 GiB before authentication), and RUSTSEC-2026-0349 (unauthenticated ServerHello can downgrade later connections to classical key exchange). Reaches ttl via reqwest (PeeringDB) and ureq (update check). quinn-proto 0.11.15 → 0.11.19 clears RUSTSEC-2026-0338 through RUSTSEC-2026-0342. It is resolved in the lockfile through an optional QUIC dependency that ttl does not enable, so it was never compiled into ttl; bumped to keep cargo audit clean. Dependencies maxminddb 0.31 → 0.32 and getifs 0.6 → 0.7 (direct), clap 4.6.6 → 4.6.7, clap_complete 4.6.9 → 4.6.11, tokio 1.53.1 → 1.53.3, tokio-util 0.7.19 → 0.7.20, serde_json 1.0.151 → 1.0.154, toml 1.1.6 → 1.1.8, libc 0.2.189 → 0.2.190, and mio 1.2.0 → 1.2.4 (required on FreeBSD with libc 0.2.190). tempfile promoted from a dev-dependency to a regular dependency for atomic saves (#157); the locked version (3.27) is unchanged. @ text @# $NetBSD: Makefile,v 1.8 2026/09/18 10:08:29 pin Exp $ DISTNAME= ttl-0.24.1 CATEGORIES= net MASTER_SITES= ${MASTER_SITE_GITHUB:=lance0/} GITHUB_TAG= v${PKGVERSION_NOREV} MAINTAINER= pkgsrc-users@@NetBSD.org HOMEPAGE= https://github.com/lance0/ttl/ COMMENT= Modern traceroute with real-time TUI LICENSE= apache-2.0 OR mit # See, https://github.com/briansmith/ring/issues/1999 .include "../../mk/compiler/i386-sse2.mk" TOOL_DEPENDS+= cmake-[0-9]*:../../devel/cmake .include "cargo-depends.mk" RUST_REQ= 1.88.0 .include "../../lang/rust/cargo.mk" .include "../../net/libpcap/buildlink3.mk" .include "../../mk/bsd.pkg.mk" @ 1.8 log @net/ttl: update to 0.23.0 (leaf pkg) What's Changed chore(deps): rustls 0.23.45 (RUSTSEC-2026-0285), unyank chacha20, supersede #133 by @@lance0 in #135 feat: implement RFC 5837 ICMP interface and next-hop identification by @@lance0 in #137 chore(deps): bump the cargo-dependencies group across 1 directory with 2 updates by @@dependabot[bot] in #136 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.7 2026/08/25 11:09:07 pin Exp $ d3 1 a3 1 DISTNAME= ttl-0.23.0 d13 3 @ 1.7 log @net/ttl: update to 0.22.0 What's Changed chore(deps): bump the cargo-dependencies group across 1 directory with 12 updates by @@dependabot[bot] in #125 chore(deps): bump the cargo-dependencies group across 1 directory with 3 updates by @@dependabot[bot] in #127 chore: clippy 1.98 nits (prerequisite) by @@lance0 in #130 chore(deps): bump lru 0.18.0 → 0.18.2 (LAN-1114) by @@lance0 in #128 perf(tui): skip snapshot+draw when idle (LAN-1222 experiment) by @@lance0 in #129 chore(tui): make the render fingerprint exhaustive over its inputs by @@lance0 in #131 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.6 2026/07/14 11:13:04 pin Exp $ d3 1 a3 1 DISTNAME= ttl-0.22.0 @ 1.6 log @net/ttl: update to 0.21.0 v0.21.0 What's Changed ci: harden workflow coverage and automation by @@lance0 in #120 feat(update): allow disabling the update check (#110) by @@lance0 in #122 v0.20.2 What's Changed Bump docker/setup-buildx-action from 3 to 4 by @@dependabot[bot] in #86 Bump docker/metadata-action from 5 to 6 by @@dependabot[bot] in #87 Bump docker/setup-qemu-action from 3 to 4 by @@dependabot[bot] in #88 Bump docker/login-action from 3 to 4 by @@dependabot[bot] in #89 Bump docker/build-push-action from 6 to 7 by @@dependabot[bot] in #90 fix: PMTUD correlation, lock ordering, and enrichment dedup by @@lance0 in #104 fix: harden unsafe socket code against alignment UB and bad cmsg by @@lance0 in #102 fix: harden CLI validation against panics and port overflow by @@lance0 in #99 fix: file security and output hygiene by @@lance0 in #103 fix: prevent TUI panics on multi-byte input and edge cases by @@lance0 in #100 fix: prevent arithmetic panics on clock jumps and oversized packets by @@lance0 in #101 docs: add SAFETY comment to set_ip_hdrincl unsafe block by @@lance0 in #111 Bump actions/checkout from 6 to 7 by @@dependabot[bot] in #105 Bump actions/cache from 5 to 6 by @@dependabot[bot] in #106 Bump anyhow from 1.0.102 to 1.0.103 by @@dependabot[bot] in #107 Bump clap_complete from 4.6.5 to 4.6.7 by @@dependabot[bot] in #108 Bump maxminddb from 0.28.1 to 0.29.0 by @@dependabot[bot] in #109 test: cover multibyte settings cursor editing by @@lance0 in #112 fix: propagate IPv6 scope_id through recv/bind paths (LAN-143) by @@lance0 in #113 fix: parse IPv6 extension headers in quoted error payloads (LAN-144) by @@lance0 in #114 fix: bound enrichment caches to prevent unbounded memory growth (LAN-145) by @@lance0 in #115 fix: TUI async polling, replay validation, assert→Result (LAN-150, LAN-181) by @@lance0 in #116 fix: populate response TTL on macOS/BSD IPv4 (1-byte IP_RECVTTL cmsg) by @@lance0 in #117 refactor: use PMTUD_MARKER const for the payload marker write by @@lance0 in #118 fix: cap export filename length to stay within NAME_MAX by @@lance0 in #119 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.5 2026/06/28 11:55:37 pin Exp $ d3 1 a3 1 DISTNAME= ttl-0.21.0 @ 1.5 log @net/ttl: update to 0.20.1 What's Changed Fix macOS single-hop traces: per-probe send sockets for ICMP/UDP/TCP (#12) by @@lance0 in #96 Unify IPv4 send path on IP_HDRINCL (TTL in the IP header) (#12) by @@lance0 in #97 IPv6: per-probe sockets on FreeBSD/NetBSD; remove the inter-probe delay (#12) by @@lance0 in #98 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.4 2026/06/12 12:30:39 pin Exp $ d3 1 a3 1 DISTNAME= ttl-0.20.1 @ 1.4 log @net/ttl: update to 0.20.0 What's Changed Bump maxminddb from 0.27.3 to 0.28.1 by @@dependabot[bot] in #75 Bump clap_complete from 4.6.3 to 4.6.5 by @@dependabot[bot] in #77 Bump serde_json from 1.0.149 to 1.0.150 by @@dependabot[bot] in #79 Bump getifs from 0.4.0 to 0.6.1 by @@dependabot[bot] in #80 Bump tokio from 1.52.1 to 1.52.3 by @@dependabot[bot] in #78 Add trace diffing (--diff) and streaming JSON output (--stream-json) by @@lance0 in #81 Add daemon mode, Prometheus exporter, and official Dockerfile by @@lance0 in #82 Publish multi-arch container images to GHCR on release by @@lance0 in #83 Add interactive target selection by @@lance0 in #84 Use a radix trie for IX prefix lookup by @@lance0 in #85 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.3 2026/05/02 19:45:11 pin Exp $ d3 1 a3 1 DISTNAME= ttl-0.20.0 @ 1.3 log @net/ttl: update to 0.19.1 Security & maintenance release This is a patch release covering security advisories, the hickory-resolver 0.26 upgrade, CI quality improvements, and a community contribution. No user-facing API changes. Security hickory-proto via hickory-resolver 0.26.1 — RUSTSEC-2026-0119 (O(n²) DNS name compression CPU exhaustion). RUSTSEC-2026-0118 (NSEC3 unbounded loop) also no longer applies; ttl does not validate DNSSEC. rustls-webpki 0.103.13 — cumulative fixes for RUSTSEC-2026-0049/0098/0099/0104. aws-lc-sys 0.39.0 — RUSTSEC-2026-0044/0045/0046/0047/0048 (CRL/AES-CCM/X.509/PKCS7). quinn-proto 0.11.14 — RUSTSEC-2026-0037 (Quinn endpoint DoS — not exploitable in ttl, which only acts as a TLS client). Added Pre-commit hooks (.pre-commit-config.yaml) for cargo fmt / clippy / test. Setup documented in CONTRIBUTING.md (recommends prek). CI: cargo clippy --all-targets -- -D warnings now runs on macOS and FreeBSD in addition to Linux. README: NetBSD pkgsrc install instructions; replay controls listed in the keybindings table. Changed hickory-resolver upgraded 0.25 → 0.26 (transparent API migration). toml upgraded 0.9 → 1.x (no code changes required). CI: softprops/action-gh-release upgraded v2 → v3 (Node.js 24 runtime). Fixed DNS resolver fallback (#71): restored Google DNS fallback when the system resolver builder constructs but its build() step fails. macOS clippy warnings (#72): unused imports, is_dgram variable, and three needless_return lints in src/probe/socket.rs. Contributed by @@SSakutaro. FreeBSD/NetBSD: dead-code warnings on DGRAM ICMP socket helpers cfg-gated. clippy 1.95: collapsible_match and unnecessary_sort_by. FreeBSD CI: install ca_root_nss before fetching crates to avoid SSL verification failures from the FreeBSD VM image. Dependencies libc 0.2.182 → 0.2.186, tokio 1.49 → 1.50, socket2 0.6.2 → 0.6.3, clap 4.5 → 4.6, clap_complete 4.5 → 4.6, proptest 1.10 → 1.11, chrono 0.4.43 → 0.4.44 @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.2 2026/02/28 06:56:31 pin Exp $ d3 1 a3 1 DISTNAME= ttl-0.19.1 @ 1.2 log @net/ttl: update to 0.19.0 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_sub prevents underflow on corrupted files @ text @d1 1 a1 1 # $NetBSD: Makefile,v 1.1 2026/02/24 11:59:09 pin Exp $ d3 1 a3 1 DISTNAME= ttl-0.19.0 @ 1.1 log @net/ttl: import package Network diagnostic tool that goes beyond traceroute: MTU discovery, NAT detection, route flap alerts, IX identification, and more. @ text @d1 1 a1 1 # $NetBSD$ d3 1 a3 1 DISTNAME= ttl-0.18.2 @