Date: Fri, 01 May 2026 11:40:25 +0000
From: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org>
To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Cc: randomizedcoder <dave.seddon.ca@gmail.com>
Subject: git: 21e4e7904345 - main - net/tcpstats-{kmod,reader}: Add new ports
Message-ID: <69f49129.32178.5374924b@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by pouria: URL: https://cgit.FreeBSD.org/ports/commit/?id=21e4e7904345ee52dcab1ca19041e46105eec95f commit 21e4e7904345ee52dcab1ca19041e46105eec95f Author: randomizedcoder <dave.seddon.ca@gmail.com> AuthorDate: 2026-04-30 18:47:50 +0000 Commit: Pouria Mousavizadeh Tehrani <pouria@FreeBSD.org> CommitDate: 2026-05-01 11:39:58 +0000 net/tcpstats-{kmod,reader}: Add new ports tcpstats-kmod is a FreeBSD kernel module that exports per-connection TCP socket statistics via a /dev/tcpstats character device. Provides 320-byte fixed-size records containing addresses, ports, TCP state, congestion control parameters, RTT measurements, retransmit counts, and ECN state. Includes a tcpstats(4) man page. tcpstats-reader is a companion CLI tool that reads from /dev/tcpstats and outputs JSON Lines to stdout. Includes a tcpstats-reader(1) man page. WWW: https://github.com/randomizedcoder/bsd-xtcp Signed-off-by: randomizedcoder <dave.seddon.ca@gmail.com> Approved by: fuz (ports) Reviewed by: fuz, pouria Pull-Request: https://github.com/freebsd/freebsd-ports/pull/497 --- net/Makefile | 2 + net/tcpstats-kmod/Makefile | 50 ++++++++++ net/tcpstats-kmod/distinfo | 3 + net/tcpstats-kmod/pkg-descr | 10 ++ net/tcpstats-reader/Makefile | 145 +++++++++++++++++++++++++++ net/tcpstats-reader/distinfo | 227 ++++++++++++++++++++++++++++++++++++++++++ net/tcpstats-reader/pkg-descr | 10 ++ 7 files changed, 447 insertions(+) diff --git a/net/Makefile b/net/Makefile index ead981bbbaf1..5ffa844a5e64 100644 --- a/net/Makefile +++ b/net/Makefile @@ -1601,6 +1601,8 @@ SUBDIR += tcpslice SUBDIR += tcpsplit SUBDIR += tcpstat + SUBDIR += tcpstats-kmod + SUBDIR += tcpstats-reader SUBDIR += tcptestsuite SUBDIR += tcptrace SUBDIR += tcptraceroute diff --git a/net/tcpstats-kmod/Makefile b/net/tcpstats-kmod/Makefile new file mode 100644 index 000000000000..ac5856cb3e40 --- /dev/null +++ b/net/tcpstats-kmod/Makefile @@ -0,0 +1,50 @@ +PORTNAME= tcpstats +DISTVERSIONPREFIX= v +DISTVERSION= 1.0.4 +CATEGORIES= net +PKGNAMESUFFIX= -kmod + +MAINTAINER= dave.seddon.ca@gmail.com +COMMENT= Kernel module for system-wide TCP socket statistics +WWW= https://github.com/randomizedcoder/bsd-xtcp + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/../../LICENSE + +USES= kmod uidfix +USE_GITHUB= yes +GH_ACCOUNT= randomizedcoder +GH_PROJECT= bsd-xtcp + +WRKSRC_SUBDIR= kmod/tcpstats + +PLIST_FILES= ${KMODDIR}/tcpstats.ko \ + share/man/man4/tcpstats.4.gz + +OPTIONS_DEFINE= DTRACE STATS + +DTRACE_DESC= Enable DTrace SDT probes +STATS_DESC= Enable per-socket statistics counters + +DTRACE_CFLAGS= -DTCPSTATS_DTRACE -DKDTRACE_HOOKS +STATS_CFLAGS= -DTCPSTATS_STATS + +DTRACE_PLIST_FILES= share/examples/tcpstats/all_probes.d \ + share/examples/tcpstats/fill_time.d \ + share/examples/tcpstats/filter_skip_reasons.d \ + share/examples/tcpstats/read_latency.d \ + share/examples/tcpstats/read_summary.d + +post-install: + @${MKDIR} ${STAGEDIR}${PREFIX}/share/man/man4 + ${INSTALL_MAN} ${WRKSRC}/man/tcpstats.4 ${STAGEDIR}${PREFIX}/share/man/man4/ + +post-install-DTRACE-on: + @${MKDIR} ${STAGEDIR}${PREFIX}/share/examples/tcpstats + ${INSTALL_DATA} ${WRKSRC}/dtrace/all_probes.d ${STAGEDIR}${PREFIX}/share/examples/tcpstats/ + ${INSTALL_DATA} ${WRKSRC}/dtrace/fill_time.d ${STAGEDIR}${PREFIX}/share/examples/tcpstats/ + ${INSTALL_DATA} ${WRKSRC}/dtrace/filter_skip_reasons.d ${STAGEDIR}${PREFIX}/share/examples/tcpstats/ + ${INSTALL_DATA} ${WRKSRC}/dtrace/read_latency.d ${STAGEDIR}${PREFIX}/share/examples/tcpstats/ + ${INSTALL_DATA} ${WRKSRC}/dtrace/read_summary.d ${STAGEDIR}${PREFIX}/share/examples/tcpstats/ + +.include <bsd.port.mk> diff --git a/net/tcpstats-kmod/distinfo b/net/tcpstats-kmod/distinfo new file mode 100644 index 000000000000..76a46f0eb28a --- /dev/null +++ b/net/tcpstats-kmod/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1777569252 +SHA256 (randomizedcoder-bsd-xtcp-v1.0.4_GH0.tar.gz) = 87d3488c1b810f6316e88ebc6e0002b6f9fd6eb0aa91ccd05eb6b676b35c2ac1 +SIZE (randomizedcoder-bsd-xtcp-v1.0.4_GH0.tar.gz) = 312454 diff --git a/net/tcpstats-kmod/pkg-descr b/net/tcpstats-kmod/pkg-descr new file mode 100644 index 000000000000..0c7363f5fb9e --- /dev/null +++ b/net/tcpstats-kmod/pkg-descr @@ -0,0 +1,10 @@ +Kernel module providing system-wide TCP socket statistics via /dev/tcpstats. + +The tcpstats module creates a read-only character device that streams +fixed-size 320-byte records containing per-connection TCP metrics including +addresses, ports, TCP state, congestion control parameters (cwnd, ssthresh), +RTT measurements, retransmit counts, ECN statistics, and process attribution. + +Features include in-kernel filtering by port, TCP state, IP version, and CIDR +address ranges, with DoS protection via tunable concurrent reader and file +descriptor limits. diff --git a/net/tcpstats-reader/Makefile b/net/tcpstats-reader/Makefile new file mode 100644 index 000000000000..fb375d450b7d --- /dev/null +++ b/net/tcpstats-reader/Makefile @@ -0,0 +1,145 @@ +PORTNAME= tcpstats-reader +DISTVERSIONPREFIX= v +DISTVERSION= 1.0.4 +CATEGORIES= net + +MAINTAINER= dave.seddon.ca@gmail.com +COMMENT= TCP socket statistics reader for FreeBSD tcpstats kernel module +WWW= https://github.com/randomizedcoder/bsd-xtcp + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/LICENSE + +BUILD_DEPENDS= protobuf>=3.0:devel/protobuf + +USES= cargo +USE_GITHUB= yes +GH_ACCOUNT= randomizedcoder +GH_PROJECT= bsd-xtcp +CARGO_ENV+= GIT_CEILING_DIRECTORIES=${WRKDIR} + +CARGO_CRATES= aho-corasick-1.1.4 \ + android_system_properties-0.1.5 \ + anstream-0.6.21 \ + anstyle-1.0.13 \ + anstyle-parse-0.2.7 \ + anstyle-query-1.1.5 \ + anstyle-wincon-3.0.11 \ + anyhow-1.0.102 \ + ascii-1.1.0 \ + autocfg-1.5.0 \ + base64-0.21.7 \ + bitflags-2.11.0 \ + bumpalo-3.20.2 \ + bytes-1.11.1 \ + cc-1.2.56 \ + cfg-if-1.0.4 \ + chrono-0.4.44 \ + chunked_transfer-1.5.0 \ + clap-4.5.60 \ + clap_builder-4.5.60 \ + clap_derive-4.5.55 \ + clap_lex-1.0.0 \ + colorchoice-1.0.4 \ + core-foundation-sys-0.8.7 \ + either-1.15.0 \ + equivalent-1.0.2 \ + errno-0.3.14 \ + escape8259-0.5.3 \ + fastrand-2.3.0 \ + find-msvc-tools-0.1.9 \ + fixedbitset-0.5.7 \ + foldhash-0.1.5 \ + getrandom-0.4.2 \ + hashbrown-0.15.5 \ + hashbrown-0.16.1 \ + heck-0.5.0 \ + hostname-0.4.2 \ + httpdate-1.0.3 \ + iana-time-zone-0.1.65 \ + iana-time-zone-haiku-0.1.2 \ + id-arena-2.3.0 \ + indexmap-2.13.0 \ + is_terminal_polyfill-1.70.2 \ + itertools-0.13.0 \ + itertools-0.14.0 \ + itoa-1.0.17 \ + js-sys-0.3.91 \ + leb128fmt-0.1.0 \ + libc-0.2.182 \ + libtest-mimic-0.8.1 \ + linux-raw-sys-0.12.1 \ + log-0.4.29 \ + memchr-2.8.0 \ + multimap-0.10.1 \ + num-traits-0.2.19 \ + once_cell-1.21.3 \ + once_cell_polyfill-1.70.2 \ + pbjson-0.7.0 \ + pbjson-build-0.7.0 \ + pbjson-types-0.7.0 \ + petgraph-0.7.1 \ + prettyplease-0.2.37 \ + proc-macro2-1.0.106 \ + prost-0.13.5 \ + prost-build-0.13.5 \ + prost-derive-0.13.5 \ + prost-types-0.13.5 \ + quote-1.0.45 \ + r-efi-6.0.0 \ + regex-1.12.3 \ + regex-automata-0.4.14 \ + regex-syntax-0.8.10 \ + rustix-1.1.4 \ + rustversion-1.0.22 \ + semver-1.0.27 \ + serde-1.0.228 \ + serde_core-1.0.228 \ + serde_derive-1.0.228 \ + serde_json-1.0.149 \ + shlex-1.3.0 \ + strsim-0.11.1 \ + syn-2.0.117 \ + tempfile-3.26.0 \ + thiserror-2.0.18 \ + thiserror-impl-2.0.18 \ + tiny_http-0.12.0 \ + unicode-ident-1.0.24 \ + unicode-xid-0.2.6 \ + utf8parse-0.2.2 \ + wasip2-1.0.2+wasi-0.2.9 \ + wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06 \ + wasm-bindgen-0.2.114 \ + wasm-bindgen-macro-0.2.114 \ + wasm-bindgen-macro-support-0.2.114 \ + wasm-bindgen-shared-0.2.114 \ + wasm-encoder-0.244.0 \ + wasm-metadata-0.244.0 \ + wasmparser-0.244.0 \ + windows-core-0.62.2 \ + windows-implement-0.60.2 \ + windows-interface-0.59.3 \ + windows-link-0.2.1 \ + windows-result-0.4.1 \ + windows-strings-0.5.1 \ + windows-sys-0.61.2 \ + wit-bindgen-0.51.0 \ + wit-bindgen-core-0.51.0 \ + wit-bindgen-rust-0.51.0 \ + wit-bindgen-rust-macro-0.51.0 \ + wit-component-0.244.0 \ + wit-parser-0.244.0 \ + zmij-1.0.21 + +PLIST_FILES= bin/${PORTNAME} \ + share/man/man1/${PORTNAME}.1.gz + +post-extract: + @${MKDIR} ${WRKSRC}/.git/refs ${WRKSRC}/.git/objects + @echo "ref: refs/heads/main" > ${WRKSRC}/.git/HEAD + +post-install: + @${MKDIR} ${STAGEDIR}${PREFIX}/share/man/man1 + ${INSTALL_MAN} ${WRKSRC}/man/${PORTNAME}.1 ${STAGEDIR}${PREFIX}/share/man/man1/ + +.include <bsd.port.mk> diff --git a/net/tcpstats-reader/distinfo b/net/tcpstats-reader/distinfo new file mode 100644 index 000000000000..39671a53d65a --- /dev/null +++ b/net/tcpstats-reader/distinfo @@ -0,0 +1,227 @@ +TIMESTAMP = 1777569266 +SHA256 (rust/crates/aho-corasick-1.1.4.crate) = ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301 +SIZE (rust/crates/aho-corasick-1.1.4.crate) = 184015 +SHA256 (rust/crates/android_system_properties-0.1.5.crate) = 819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311 +SIZE (rust/crates/android_system_properties-0.1.5.crate) = 5243 +SHA256 (rust/crates/anstream-0.6.21.crate) = 43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a +SIZE (rust/crates/anstream-0.6.21.crate) = 29516 +SHA256 (rust/crates/anstyle-1.0.13.crate) = 5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78 +SIZE (rust/crates/anstyle-1.0.13.crate) = 17651 +SHA256 (rust/crates/anstyle-parse-0.2.7.crate) = 4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2 +SIZE (rust/crates/anstyle-parse-0.2.7.crate) = 21707 +SHA256 (rust/crates/anstyle-query-1.1.5.crate) = 40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc +SIZE (rust/crates/anstyle-query-1.1.5.crate) = 10264 +SHA256 (rust/crates/anstyle-wincon-3.0.11.crate) = 291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d +SIZE (rust/crates/anstyle-wincon-3.0.11.crate) = 12638 +SHA256 (rust/crates/anyhow-1.0.102.crate) = 7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c +SIZE (rust/crates/anyhow-1.0.102.crate) = 48658 +SHA256 (rust/crates/ascii-1.1.0.crate) = d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16 +SIZE (rust/crates/ascii-1.1.0.crate) = 36075 +SHA256 (rust/crates/autocfg-1.5.0.crate) = c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8 +SIZE (rust/crates/autocfg-1.5.0.crate) = 18729 +SHA256 (rust/crates/base64-0.21.7.crate) = 9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567 +SIZE (rust/crates/base64-0.21.7.crate) = 82576 +SHA256 (rust/crates/bitflags-2.11.0.crate) = 843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af +SIZE (rust/crates/bitflags-2.11.0.crate) = 48906 +SHA256 (rust/crates/bumpalo-3.20.2.crate) = 5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb +SIZE (rust/crates/bumpalo-3.20.2.crate) = 97696 +SHA256 (rust/crates/bytes-1.11.1.crate) = 1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33 +SIZE (rust/crates/bytes-1.11.1.crate) = 78584 +SHA256 (rust/crates/cc-1.2.56.crate) = aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2 +SIZE (rust/crates/cc-1.2.56.crate) = 96059 +SHA256 (rust/crates/cfg-if-1.0.4.crate) = 9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801 +SIZE (rust/crates/cfg-if-1.0.4.crate) = 9360 +SHA256 (rust/crates/chrono-0.4.44.crate) = c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0 +SIZE (rust/crates/chrono-0.4.44.crate) = 240549 +SHA256 (rust/crates/chunked_transfer-1.5.0.crate) = 6e4de3bc4ea267985becf712dc6d9eed8b04c953b3fcfb339ebc87acd9804901 +SIZE (rust/crates/chunked_transfer-1.5.0.crate) = 9779 +SHA256 (rust/crates/clap-4.5.60.crate) = 2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a +SIZE (rust/crates/clap-4.5.60.crate) = 62002 +SHA256 (rust/crates/clap_builder-4.5.60.crate) = 24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876 +SIZE (rust/crates/clap_builder-4.5.60.crate) = 171105 +SHA256 (rust/crates/clap_derive-4.5.55.crate) = a92793da1a46a5f2a02a6f4c46c6496b28c43638adea8306fcb0caa1634f24e5 +SIZE (rust/crates/clap_derive-4.5.55.crate) = 33502 +SHA256 (rust/crates/clap_lex-1.0.0.crate) = 3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831 +SIZE (rust/crates/clap_lex-1.0.0.crate) = 13466 +SHA256 (rust/crates/colorchoice-1.0.4.crate) = b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75 +SIZE (rust/crates/colorchoice-1.0.4.crate) = 8196 +SHA256 (rust/crates/core-foundation-sys-0.8.7.crate) = 773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b +SIZE (rust/crates/core-foundation-sys-0.8.7.crate) = 37712 +SHA256 (rust/crates/either-1.15.0.crate) = 48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719 +SIZE (rust/crates/either-1.15.0.crate) = 20114 +SHA256 (rust/crates/equivalent-1.0.2.crate) = 877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f +SIZE (rust/crates/equivalent-1.0.2.crate) = 7419 +SHA256 (rust/crates/errno-0.3.14.crate) = 39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb +SIZE (rust/crates/errno-0.3.14.crate) = 12002 +SHA256 (rust/crates/escape8259-0.5.3.crate) = 5692dd7b5a1978a5aeb0ce83b7655c58ca8efdcb79d21036ea249da95afec2c6 +SIZE (rust/crates/escape8259-0.5.3.crate) = 4989 +SHA256 (rust/crates/fastrand-2.3.0.crate) = 37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be +SIZE (rust/crates/fastrand-2.3.0.crate) = 15076 +SHA256 (rust/crates/find-msvc-tools-0.1.9.crate) = 5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582 +SIZE (rust/crates/find-msvc-tools-0.1.9.crate) = 31493 +SHA256 (rust/crates/fixedbitset-0.5.7.crate) = 1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99 +SIZE (rust/crates/fixedbitset-0.5.7.crate) = 26537 +SHA256 (rust/crates/foldhash-0.1.5.crate) = d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2 +SIZE (rust/crates/foldhash-0.1.5.crate) = 21901 +SHA256 (rust/crates/getrandom-0.4.2.crate) = 0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555 +SIZE (rust/crates/getrandom-0.4.2.crate) = 53905 +SHA256 (rust/crates/hashbrown-0.15.5.crate) = 9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1 +SIZE (rust/crates/hashbrown-0.15.5.crate) = 140908 +SHA256 (rust/crates/hashbrown-0.16.1.crate) = 841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100 +SIZE (rust/crates/hashbrown-0.16.1.crate) = 147785 +SHA256 (rust/crates/heck-0.5.0.crate) = 2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea +SIZE (rust/crates/heck-0.5.0.crate) = 11517 +SHA256 (rust/crates/hostname-0.4.2.crate) = 617aaa3557aef3810a6369d0a99fac8a080891b68bd9f9812a1eeda0c0730cbd +SIZE (rust/crates/hostname-0.4.2.crate) = 12983 +SHA256 (rust/crates/httpdate-1.0.3.crate) = df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9 +SIZE (rust/crates/httpdate-1.0.3.crate) = 10639 +SHA256 (rust/crates/iana-time-zone-0.1.65.crate) = e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470 +SIZE (rust/crates/iana-time-zone-0.1.65.crate) = 34079 +SHA256 (rust/crates/iana-time-zone-haiku-0.1.2.crate) = f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f +SIZE (rust/crates/iana-time-zone-haiku-0.1.2.crate) = 7185 +SHA256 (rust/crates/id-arena-2.3.0.crate) = 3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954 +SIZE (rust/crates/id-arena-2.3.0.crate) = 12883 +SHA256 (rust/crates/indexmap-2.13.0.crate) = 7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017 +SIZE (rust/crates/indexmap-2.13.0.crate) = 102206 +SHA256 (rust/crates/is_terminal_polyfill-1.70.2.crate) = a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695 +SIZE (rust/crates/is_terminal_polyfill-1.70.2.crate) = 7548 +SHA256 (rust/crates/itertools-0.13.0.crate) = 413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186 +SIZE (rust/crates/itertools-0.13.0.crate) = 146261 +SHA256 (rust/crates/itertools-0.14.0.crate) = 2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285 +SIZE (rust/crates/itertools-0.14.0.crate) = 152715 +SHA256 (rust/crates/itoa-1.0.17.crate) = 92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2 +SIZE (rust/crates/itoa-1.0.17.crate) = 15905 +SHA256 (rust/crates/js-sys-0.3.91.crate) = b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c +SIZE (rust/crates/js-sys-0.3.91.crate) = 91416 +SHA256 (rust/crates/leb128fmt-0.1.0.crate) = 09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2 +SIZE (rust/crates/leb128fmt-0.1.0.crate) = 14138 +SHA256 (rust/crates/libc-0.2.182.crate) = 6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112 +SIZE (rust/crates/libc-0.2.182.crate) = 814873 +SHA256 (rust/crates/libtest-mimic-0.8.1.crate) = 5297962ef19edda4ce33aaa484386e0a5b3d7f2f4e037cbeee00503ef6b29d33 +SIZE (rust/crates/libtest-mimic-0.8.1.crate) = 27812 +SHA256 (rust/crates/linux-raw-sys-0.12.1.crate) = 32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53 +SIZE (rust/crates/linux-raw-sys-0.12.1.crate) = 3006116 +SHA256 (rust/crates/log-0.4.29.crate) = 5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897 +SIZE (rust/crates/log-0.4.29.crate) = 51515 +SHA256 (rust/crates/memchr-2.8.0.crate) = f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79 +SIZE (rust/crates/memchr-2.8.0.crate) = 97780 +SHA256 (rust/crates/multimap-0.10.1.crate) = 1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084 +SIZE (rust/crates/multimap-0.10.1.crate) = 15232 +SHA256 (rust/crates/num-traits-0.2.19.crate) = 071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841 +SIZE (rust/crates/num-traits-0.2.19.crate) = 51631 +SHA256 (rust/crates/once_cell-1.21.3.crate) = 42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d +SIZE (rust/crates/once_cell-1.21.3.crate) = 34534 +SHA256 (rust/crates/once_cell_polyfill-1.70.2.crate) = 384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe +SIZE (rust/crates/once_cell_polyfill-1.70.2.crate) = 7448 +SHA256 (rust/crates/pbjson-0.7.0.crate) = c7e6349fa080353f4a597daffd05cb81572a9c031a6d4fff7e504947496fcc68 +SIZE (rust/crates/pbjson-0.7.0.crate) = 2621 +SHA256 (rust/crates/pbjson-build-0.7.0.crate) = 6eea3058763d6e656105d1403cb04e0a41b7bbac6362d413e7c33be0c32279c9 +SIZE (rust/crates/pbjson-build-0.7.0.crate) = 16918 +SHA256 (rust/crates/pbjson-types-0.7.0.crate) = e54e5e7bfb1652f95bc361d76f3c780d8e526b134b85417e774166ee941f0887 +SIZE (rust/crates/pbjson-types-0.7.0.crate) = 49444 +SHA256 (rust/crates/petgraph-0.7.1.crate) = 3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772 +SIZE (rust/crates/petgraph-0.7.1.crate) = 736025 +SHA256 (rust/crates/prettyplease-0.2.37.crate) = 479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b +SIZE (rust/crates/prettyplease-0.2.37.crate) = 72033 +SHA256 (rust/crates/proc-macro2-1.0.106.crate) = 8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934 +SIZE (rust/crates/proc-macro2-1.0.106.crate) = 59765 +SHA256 (rust/crates/prost-0.13.5.crate) = 2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5 +SIZE (rust/crates/prost-0.13.5.crate) = 32469 +SHA256 (rust/crates/prost-build-0.13.5.crate) = be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf +SIZE (rust/crates/prost-build-0.13.5.crate) = 47493 +SHA256 (rust/crates/prost-derive-0.13.5.crate) = 8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d +SIZE (rust/crates/prost-derive-0.13.5.crate) = 20600 +SHA256 (rust/crates/prost-types-0.13.5.crate) = 52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16 +SIZE (rust/crates/prost-types-0.13.5.crate) = 49145 +SHA256 (rust/crates/quote-1.0.45.crate) = 41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924 +SIZE (rust/crates/quote-1.0.45.crate) = 31564 +SHA256 (rust/crates/r-efi-6.0.0.crate) = f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf +SIZE (rust/crates/r-efi-6.0.0.crate) = 65303 +SHA256 (rust/crates/regex-1.12.3.crate) = e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276 +SIZE (rust/crates/regex-1.12.3.crate) = 153392 +SHA256 (rust/crates/regex-automata-0.4.14.crate) = 6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f +SIZE (rust/crates/regex-automata-0.4.14.crate) = 618012 +SHA256 (rust/crates/regex-syntax-0.8.10.crate) = dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a +SIZE (rust/crates/regex-syntax-0.8.10.crate) = 358781 +SHA256 (rust/crates/rustix-1.1.4.crate) = b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190 +SIZE (rust/crates/rustix-1.1.4.crate) = 425241 +SHA256 (rust/crates/rustversion-1.0.22.crate) = b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d +SIZE (rust/crates/rustversion-1.0.22.crate) = 21096 +SHA256 (rust/crates/semver-1.0.27.crate) = d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2 +SIZE (rust/crates/semver-1.0.27.crate) = 30081 +SHA256 (rust/crates/serde-1.0.228.crate) = 9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e +SIZE (rust/crates/serde-1.0.228.crate) = 83652 +SHA256 (rust/crates/serde_core-1.0.228.crate) = 41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad +SIZE (rust/crates/serde_core-1.0.228.crate) = 63111 +SHA256 (rust/crates/serde_derive-1.0.228.crate) = d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79 +SIZE (rust/crates/serde_derive-1.0.228.crate) = 59605 +SHA256 (rust/crates/serde_json-1.0.149.crate) = 83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86 +SIZE (rust/crates/serde_json-1.0.149.crate) = 155994 +SHA256 (rust/crates/shlex-1.3.0.crate) = 0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64 +SIZE (rust/crates/shlex-1.3.0.crate) = 18713 +SHA256 (rust/crates/strsim-0.11.1.crate) = 7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f +SIZE (rust/crates/strsim-0.11.1.crate) = 14266 +SHA256 (rust/crates/syn-2.0.117.crate) = e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99 +SIZE (rust/crates/syn-2.0.117.crate) = 306011 +SHA256 (rust/crates/tempfile-3.26.0.crate) = 82a72c767771b47409d2345987fda8628641887d5466101319899796367354a0 +SIZE (rust/crates/tempfile-3.26.0.crate) = 43478 +SHA256 (rust/crates/thiserror-2.0.18.crate) = 4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4 +SIZE (rust/crates/thiserror-2.0.18.crate) = 28875 +SHA256 (rust/crates/thiserror-impl-2.0.18.crate) = ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5 +SIZE (rust/crates/thiserror-impl-2.0.18.crate) = 21413 +SHA256 (rust/crates/tiny_http-0.12.0.crate) = 389915df6413a2e74fb181895f933386023c71110878cd0825588928e64cdc82 +SIZE (rust/crates/tiny_http-0.12.0.crate) = 51330 +SHA256 (rust/crates/unicode-ident-1.0.24.crate) = e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75 +SIZE (rust/crates/unicode-ident-1.0.24.crate) = 49298 +SHA256 (rust/crates/unicode-xid-0.2.6.crate) = ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853 +SIZE (rust/crates/unicode-xid-0.2.6.crate) = 15744 +SHA256 (rust/crates/utf8parse-0.2.2.crate) = 06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821 +SIZE (rust/crates/utf8parse-0.2.2.crate) = 13499 +SHA256 (rust/crates/wasip2-1.0.2+wasi-0.2.9.crate) = 9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5 +SIZE (rust/crates/wasip2-1.0.2+wasi-0.2.9.crate) = 129778 +SHA256 (rust/crates/wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.crate) = 5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5 +SIZE (rust/crates/wasip3-0.4.0+wasi-0.3.0-rc-2026-01-06.crate) = 123354 +SHA256 (rust/crates/wasm-bindgen-0.2.114.crate) = 6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e +SIZE (rust/crates/wasm-bindgen-0.2.114.crate) = 59350 +SHA256 (rust/crates/wasm-bindgen-macro-0.2.114.crate) = 18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6 +SIZE (rust/crates/wasm-bindgen-macro-0.2.114.crate) = 9289 +SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.114.crate) = 03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3 +SIZE (rust/crates/wasm-bindgen-macro-support-0.2.114.crate) = 63445 +SHA256 (rust/crates/wasm-bindgen-shared-0.2.114.crate) = 75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16 +SIZE (rust/crates/wasm-bindgen-shared-0.2.114.crate) = 10538 +SHA256 (rust/crates/wasm-encoder-0.244.0.crate) = 990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319 +SIZE (rust/crates/wasm-encoder-0.244.0.crate) = 85804 +SHA256 (rust/crates/wasm-metadata-0.244.0.crate) = bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909 +SIZE (rust/crates/wasm-metadata-0.244.0.crate) = 21500 +SHA256 (rust/crates/wasmparser-0.244.0.crate) = 47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe +SIZE (rust/crates/wasmparser-0.244.0.crate) = 265607 +SHA256 (rust/crates/windows-core-0.62.2.crate) = b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb +SIZE (rust/crates/windows-core-0.62.2.crate) = 36932 +SHA256 (rust/crates/windows-implement-0.60.2.crate) = 053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf +SIZE (rust/crates/windows-implement-0.60.2.crate) = 15325 +SHA256 (rust/crates/windows-interface-0.59.3.crate) = 3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358 +SIZE (rust/crates/windows-interface-0.59.3.crate) = 11809 +SHA256 (rust/crates/windows-link-0.2.1.crate) = f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5 +SIZE (rust/crates/windows-link-0.2.1.crate) = 6133 +SHA256 (rust/crates/windows-result-0.4.1.crate) = 7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5 +SIZE (rust/crates/windows-result-0.4.1.crate) = 13381 +SHA256 (rust/crates/windows-strings-0.5.1.crate) = 7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091 +SIZE (rust/crates/windows-strings-0.5.1.crate) = 13966 +SHA256 (rust/crates/windows-sys-0.61.2.crate) = ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc +SIZE (rust/crates/windows-sys-0.61.2.crate) = 2517186 +SHA256 (rust/crates/wit-bindgen-0.51.0.crate) = d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5 +SIZE (rust/crates/wit-bindgen-0.51.0.crate) = 68035 +SHA256 (rust/crates/wit-bindgen-core-0.51.0.crate) = ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc +SIZE (rust/crates/wit-bindgen-core-0.51.0.crate) = 35048 +SHA256 (rust/crates/wit-bindgen-rust-0.51.0.crate) = b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21 +SIZE (rust/crates/wit-bindgen-rust-0.51.0.crate) = 57051 +SHA256 (rust/crates/wit-bindgen-rust-macro-0.51.0.crate) = 0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a +SIZE (rust/crates/wit-bindgen-rust-macro-0.51.0.crate) = 14283 +SHA256 (rust/crates/wit-component-0.244.0.crate) = 9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2 +SIZE (rust/crates/wit-component-0.244.0.crate) = 256882 +SHA256 (rust/crates/wit-parser-0.244.0.crate) = ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736 +SIZE (rust/crates/wit-parser-0.244.0.crate) = 159371 +SHA256 (rust/crates/zmij-1.0.21.crate) = b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa +SIZE (rust/crates/zmij-1.0.21.crate) = 26665 +SHA256 (randomizedcoder-bsd-xtcp-v1.0.4_GH0.tar.gz) = 87d3488c1b810f6316e88ebc6e0002b6f9fd6eb0aa91ccd05eb6b676b35c2ac1 +SIZE (randomizedcoder-bsd-xtcp-v1.0.4_GH0.tar.gz) = 312454 diff --git a/net/tcpstats-reader/pkg-descr b/net/tcpstats-reader/pkg-descr new file mode 100644 index 000000000000..d20461bb7171 --- /dev/null +++ b/net/tcpstats-reader/pkg-descr @@ -0,0 +1,10 @@ +Command-line tool for reading TCP socket statistics from the tcpstats +kernel module on FreeBSD. + +Reads fixed-size 320-byte records from /dev/tcpstats containing per-connection +TCP metrics including addresses, ports, TCP state, congestion control parameters +(cwnd, ssthresh), RTT measurements, retransmit counts, ECN statistics, and +process attribution. Supports JSON Lines, pretty-printed JSON, and protobuf +output formats with configurable collection intervals. + +Requires the tcpstats-kmod port to be installed and loaded.home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69f49129.32178.5374924b>
