Skip site navigation (1)Skip section navigation (2)
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>