From nobody Tue Feb 01 03:55:26 2022 X-Original-To: freebsd-net@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 62B37198B25B for ; Tue, 1 Feb 2022 03:55:28 +0000 (UTC) (envelope-from pauamma@gundo.com) Received: from mail.gundo.com (gibson.gundo.com [75.145.166.65]) by mx1.freebsd.org (Postfix) with ESMTP id 4JnrgM1FkKz4rpn for ; Tue, 1 Feb 2022 03:55:27 +0000 (UTC) (envelope-from pauamma@gundo.com) Received: from webmail.gundo.com (variax.gundo.com [75.145.166.70]) by mail.gundo.com (Postfix) with ESMTP id DC67F4C12E1 for ; Mon, 31 Jan 2022 21:55:26 -0600 (CST) List-Id: Networking and TCP/IP with FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-net List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-net@freebsd.org MIME-Version: 1.0 Date: Tue, 01 Feb 2022 03:55:26 +0000 From: Pau Amma To: freebsd-net@freebsd.org Subject: How stable is TCP_INFO? In-Reply-To: <8fc40642b8cb441e8979559c378c1c89@gundo.com> References: <8fc40642b8cb441e8979559c378c1c89@gundo.com> User-Agent: Roundcube Webmail/1.4.8 Message-ID: X-Sender: pauamma@gundo.com Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 4JnrgM1FkKz4rpn X-Spamd-Bar: + Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=pass (policy=quarantine) header.from=gundo.com; spf=pass (mx1.freebsd.org: domain of pauamma@gundo.com designates 75.145.166.65 as permitted sender) smtp.mailfrom=pauamma@gundo.com X-Spamd-Result: default: False [1.09 / 15.00]; ARC_NA(0.00)[]; FREEFALL_USER(0.00)[pauamma]; FROM_HAS_DN(0.00)[]; RWL_MAILSPIKE_GOOD(0.00)[75.145.166.65:from]; R_SPF_ALLOW(-0.20)[+ip4:75.145.166.64/28:c]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-net@freebsd.org]; TO_DN_NONE(0.00)[]; NEURAL_SPAM_MEDIUM(1.00)[1.000]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_SPAM_SHORT(0.99)[0.987]; RCVD_IN_DNSWL_MED(-0.20)[75.145.166.65:from]; DMARC_POLICY_ALLOW(-0.50)[gundo.com,quarantine]; MLMMJ_DEST(0.00)[freebsd-net]; RCVD_NO_TLS_LAST(0.10)[]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:7922, ipnet:75.144.0.0/13, country:US]; SUBJECT_ENDS_QUESTION(1.00)[]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_COUNT_TWO(0.00)[2] X-ThisMailContainsUnwantedMimeParts: N (Please cc me on replies - I'm subscribed nomail as this is a one-off question.) While reviewing the manual page bits in https://reviews.freebsd.org/D23230, I checked tcp(4) as it stands in 14-current (using https://www.freebsd.org/cgi/man.cgi?query=tcp&apropos=0&sektion=4&manpath=FreeBSD+14.0-current&arch=default&format=html), and it mentions it's subject to change. (It's also very poorly documented, perhaps as a result of the stated instability.) The history section mentions it was brought in following Linux 2.6, and checking the git log dates its arrival in FreeBSD to November 2004, and official acknowledgement in documentation of its existence to January 2007. The TCP_INFO language in tcp(4) hasn't changed since as far as I can tell. Half of the 16 changes https://cgit.freebsd.org/src/log/?qt=grep&q=tcp_info returns are over 12 years in the past, and of the remaining ones, after a gap of about 6.75 years, only https://cgit.freebsd.org/src/commit/?id=5a17b6ad98c6c3fa7a7a1ab02551abfb25cc40c9 (report use of the ECN option), maybe https://cgit.freebsd.org/src/commit/?id=f8fea0d90e04d0a1908c36080ab1cfb84dc705a2 (something related to cxgbe that may or may not change what it reports), maybe https://cgit.freebsd.org/src/commit/?id=7576fe761e9df400f097d4d7ce9f24340f8c4dd7 (report something related to that same driver), and probably https://cgit.freebsd.org/src/commit/?id=61e02298cea3bee31604640e53da1567271dfa57 (report something else(?) still related to that driver) seem to change that API, if I'm reading the code right (not a given at all). That's 1 definite change, 1 likely change, and 2 possible changes in over 5 years. So how unstable is that API, and is it time to document it now?