Home | History | Annotate | Download | only in netinet
History log of /src/sys/netinet/tcp.h
RevisionDateAuthorComments
 1.37  03-Feb-2021  roy CTASSERT -> __CTASSERT to unbreak userland build.

While here move __packed in tcp_debug.h back to where it was and
note removal warrants more investigation.
 1.36  03-Feb-2021  roy Sprinkle CTASSERT to enforce on-wire layout without __packed
 1.35  03-Feb-2021  roy Remove __packed from various network structures

They are already network aligned and adding the __packed attribute
just causes needless compiler warnings about accssing members of packed
objects.
 1.34  01-Nov-2019  christos branches: 1.34.8;
Add comments to the tcp flags.
 1.33  10-Jan-2017  christos branches: 1.33.16;
add a couple of lint comments.
 1.32  02-Jan-2017  christos Fix TCP signature code:
1. pack options more tightly instead of being generous with no/op
2. put TCP_SIGNATURE option before SACK
3. fix computation of options length, by deferring it
XXX: Really we should move the options setting code in one place instead
of having two copies one for input and one for output.
XXX: tcp_optlen/tcp_hdrsiz need to be fixed; they were wrong before too.
 1.31  14-Feb-2015  he branches: 1.31.2;
Port over the TCP_INFO socket option from FreeBSD, originally from
the Linux 2.6 TCP API. This permits the caller to query certain information
about a TCP connection, and is used by pkgsrc's net/iperf3 test program
if available.

This extends struct tcbcb with three fields to count retransmits,
out-of-sequence receives and zero window announcements, and will
therefore warrant a kernel revision bump (done separately).
 1.30  07-Jan-2012  christos branches: 1.30.6; 1.30.22; 1.30.24;
make standalone
 1.29  11-Dec-2011  christos u_int -> uint
 1.28  25-Dec-2007  perry branches: 1.28.44; 1.28.48;
Convert many of the uses of __attribute__ to equivalent
__packed, __unused and __dead macros from cdefs.h
 1.27  02-Aug-2007  rmind branches: 1.27.4; 1.27.10; 1.27.12; 1.27.16; 1.27.20;
TCP socket buffers automatic sizing - ported from FreeBSD.
http://mail-index.netbsd.org/tech-net/2007/02/04/0006.html

! Disabled by default, marked as experimental. Testers are very needed.
! Someone should thoroughly test this, and improve if possible.

Discussed on <tech-net>:
http://mail-index.netbsd.org/tech-net/2007/07/12/0002.html
Thanks Greg Troxel for comments.

OK by the long silence on <tech-net>.
 1.26  20-Jun-2007  christos branches: 1.26.2;
- per socket keepalive settings
- settable connection establishment timeout
 1.25  09-Oct-2006  rpaulo branches: 1.25.8; 1.25.10;
Modular (I tried ;-) TCP congestion control API. Whenever certain conditions
happen in the TCP stack, this interface calls the specified callback to
handle the situation according to the currently selected congestion
control algorithm.
A new sysctl node was created: net.inet.tcp.congctl.{available,selected}
with obvious meanings.
The old net.inet.tcp.newreno MIB was removed.
The API is discussed in tcp_congctl(9).

In the near future, it will be possible to selected a congestion control
algorithm on a per-socket basis.

Discussed on tech-net and reviewed by <yamt>.
 1.24  25-Sep-2006  rpaulo Remove line that shouldn't have been committed.
 1.23  25-Sep-2006  rpaulo PR/14806: NetBSD uses the wrong default TCP MSS.
No objections in tech-net.
 1.22  05-Sep-2006  rpaulo branches: 1.22.2; 1.22.4;
Import of TCP ECN algorithm for congestion control.
Both available for IPv4 and IPv6.
Basic implementation test results are available at
http://netbsd-soc.sourceforge.net/projects/ecn/testresults.html.

Work sponsored by the Google Summer of Code project 2006.
Special thanks to Kentaro Kurahone, Allen Briggs and Matt Thomas for their
help, comments and support during the project.
 1.21  10-Dec-2005  elad branches: 1.21.4; 1.21.8;
Multiple inclusion protection, as suggested by christos@ on tech-kern@
few days ago.
 1.20  21-Jul-2005  riz Add a definition for TCPOLEN_SIGLEN from OpenBSD, so a kernel with
options TCP_SIGNATURE will compile again after the new PMTU checks
were brought in from OpenBSD. Approved by christos.
 1.19  07-Mar-2005  yamt branches: 1.19.4;
tcp_sack_option: the max number of sack blocks in a packet is 4, not 3.
 1.18  07-Dec-2004  yamt branches: 1.18.4; 1.18.6;
remove TCPOPT_MD5SIGNATURE because no one in our tree uses it
and it's duplicated with TCPOPT_SIGNATURE.
i preferred TCPOPT_SIGNATURE because it's used by FreeBSD and OpenBSD.
 1.17  07-May-2004  kleink Add definitions for the (currently unimplemented) ECN TCP flags;
from Chuck Swiger in PR standards/25058.
 1.16  25-Apr-2004  jonathan Initial commit of a port of the FreeBSD implementation of RFC 2385
(MD5 signatures for TCP, as used with BGP). Credit for original
FreeBSD code goes to Bruce M. Simpson, with FreeBSD sponsorship
credited to sentex.net. Shortening of the setsockopt() name
attributed to Vincent Jardin.

This commit is a minimal, working version of the FreeBSD code, as
MFC'ed to FreeBSD-4. It has received minimal testing with a ttcp
modified to set the TCP-MD5 option; BMS's additions to tcpdump-current
(tcpdump -M) confirm that the MD5 signatures are correct. Committed
as-is for further testing between a NetBSD BGP speaker (e.g., quagga)
and industry-standard BGP speakers (e.g., Cisco, Juniper).


NOTE: This version has two potential flaws. First, I do see any code
that verifies recieved TCP-MD5 signatures. Second, the TCP-MD5
options are internally padded and assumed to be 32-bit aligned. A more
space-efficient scheme is to pack all TCP options densely (and
possibly unaligned) into the TCP header ; then do one final padding to
a 4-byte boundary. Pre-existing comments note that accounting for
TCP-option space when we add SACK is yet to be done. For now, I'm
punting on that; we can solve it properly, in a way that will handle
SACK blocks, as a separate exercise.

In case a pullup to NetBSD-2 is requested, this adds sys/netipsec/xform_tcp.c
,and modifies:

sys/net/pfkeyv2.h,v 1.15
sys/netinet/files.netinet,v 1.5
sys/netinet/ip.h,v 1.25
sys/netinet/tcp.h,v 1.15
sys/netinet/tcp_input.c,v 1.200
sys/netinet/tcp_output.c,v 1.109
sys/netinet/tcp_subr.c,v 1.165
sys/netinet/tcp_usrreq.c,v 1.89
sys/netinet/tcp_var.h,v 1.109
sys/netipsec/files.netipsec,v 1.3
sys/netipsec/ipsec.c,v 1.11
sys/netipsec/ipsec.h,v 1.7
sys/netipsec/key.c,v 1.11
share/man/man4/tcp.4,v 1.16
lib/libipsec/pfkey.c,v 1.20
lib/libipsec/pfkey_dump.c,v 1.17
lib/libipsec/policy_token.l,v 1.8
sbin/setkey/parse.y,v 1.14
sbin/setkey/setkey.8,v 1.27
sbin/setkey/token.l,v 1.15

Note that the preceding two revisions to tcp.4 will be
required to cleanly apply this diff.
 1.15  07-Aug-2003  agc Move UCB-licensed code from 4-clause to 3-clause licence.

Patches provided by Joel Baker in PR 22364, verified by myself.
 1.14  05-May-2003  bjh21 branches: 1.14.2;
Header cleanup: Hide all of this file apart from the socket options
from POSIX/XNS applications.
 1.13  26-May-2001  matt Add TCP_MD5SIGNATURE option.
 1.12  05-Jul-2000  christos branches: 1.12.2;
added a linted comment about non-portable bitfields. Unfortunately it cannot
be fixed portably.
 1.11  20-Nov-1999  thorpej Add the `packed' attribute to structures which describe wire protocol data.
 1.10  04-Oct-1998  matt branches: 1.10.12; 1.10.18;
Adapt the NEWRENO changes from the UCSB diffs of BSDI 3.0's TCP
to NetBSD. Ignore the SACK & FACK stuff for now.
 1.9  10-Feb-1998  perry add/cleanup multiple inclusion protection.
 1.8  17-Apr-1995  cgd spacing cleaup. also, minor type mixup fixups.
 1.7  13-Apr-1995  cgd be a bit more careful and explicit with types. (basically a large no-op.)
 1.6  29-Jun-1994  cgd New RCS ID's, take two. they're more aesthecially pleasant, and use 'NetBSD'
 1.5  13-May-1994  mycroft Update to 4.4-Lite networking code, with a few local changes.
 1.4  08-Jan-1994  mycroft Fix some inconsistent spacing; spaces at the end of lines, etc.
 1.3  20-May-1993  cgd more rcsid additions and file header cleanups
 1.2  19-Apr-1993  mycroft Add consistent multiple-inclusion protection.
 1.1  21-Mar-1993  cgd branches: 1.1.1;
Initial revision
 1.1.1.2  05-Jan-1998  thorpej Import sys/netinet from 4.4BSD-Lite for reference purposes.
 1.1.1.1  21-Mar-1993  cgd initial import of 386bsd-0.1 sources
 1.10.18.1  27-Dec-1999  wrstuden Pull up to last week's -current.
 1.10.12.1  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
 1.12.2.1  21-Jun-2001  nathanw Catch up to -current.
 1.14.2.7  11-Dec-2005  christos Sync with head.
 1.14.2.6  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.14.2.5  08-Mar-2005  skrll Sync with HEAD.
 1.14.2.4  18-Dec-2004  skrll Sync with HEAD.
 1.14.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.14.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.14.2.1  03-Aug-2004  skrll Sync with HEAD
 1.18.6.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.18.4.1  29-Apr-2005  kent sync with -current
 1.19.4.4  21-Jan-2008  yamt sync with head
 1.19.4.3  03-Sep-2007  yamt sync with head.
 1.19.4.2  30-Dec-2006  yamt sync with head.
 1.19.4.1  21-Jun-2006  yamt sync with head.
 1.21.8.1  14-Sep-2006  yamt sync with head.
 1.21.4.1  09-Sep-2006  rpaulo sync with head
 1.22.4.1  22-Oct-2006  yamt sync with head
 1.22.2.1  18-Nov-2006  ad Sync with head.
 1.25.10.1  11-Jul-2007  mjf Sync with head.
 1.25.8.2  20-Aug-2007  ad Sync with HEAD.
 1.25.8.1  15-Jul-2007  ad Sync with head.
 1.26.2.1  15-Aug-2007  skrll Sync with HEAD.
 1.27.20.2  02-Aug-2007  rmind TCP socket buffers automatic sizing - ported from FreeBSD.
http://mail-index.netbsd.org/tech-net/2007/02/04/0006.html

! Disabled by default, marked as experimental. Testers are very needed.
! Someone should thoroughly test this, and improve if possible.

Discussed on <tech-net>:
http://mail-index.netbsd.org/tech-net/2007/07/12/0002.html
Thanks Greg Troxel for comments.

OK by the long silence on <tech-net>.
 1.27.20.1  02-Aug-2007  rmind file tcp.h was added on branch matt-mips64 on 2007-08-02 02:42:41 +0000
 1.27.16.1  02-Jan-2008  bouyer Sync with HEAD
 1.27.12.1  26-Dec-2007  ad Sync with head.
 1.27.10.1  18-Feb-2008  mjf Sync with HEAD.
 1.27.4.1  09-Jan-2008  matt sync with HEAD
 1.28.48.1  18-Feb-2012  mrg merge to -current.
 1.28.44.1  17-Apr-2012  yamt sync with head
 1.30.24.2  05-Feb-2017  skrll Sync with HEAD
 1.30.24.1  06-Apr-2015  skrll Sync with HEAD
 1.30.22.1  21-Feb-2015  martin Pull up following revision(s) (requested by he in ticket #530):
sys/netinet/tcp_output.c: revision 1.180
sys/netinet/tcp_input.c: revision 1.336
sys/netinet/tcp_usrreq.c: revision 1.203
share/man/man4/tcp.4: revision 1.30
sys/netinet/tcp.h: revision 1.31
sys/netinet/tcp_subr.c: revision 1.258
sys/netinet/tcp_var.h: revision 1.176
sys/netinet/tcp_var.h: revision 1.177
sys/sys/param.h: bump revision

Port over the TCP_INFO socket option from FreeBSD, originally from
the Linux 2.6 TCP API. This permits the caller to query certain information
about a TCP connection, and is used by pkgsrc's net/iperf3 test program
if available.

This extends struct tcbcb with three fields to count retransmits,
out-of-sequence receives and zero window announcements, and will
therefore warrant a kernel revision bump (done separately).

Change the new counter variables in struct tcpcb to uint32_t, as
per christos' comments.
 1.30.6.1  03-Dec-2017  jdolecek update from HEAD
 1.31.2.2  20-Mar-2017  pgoyette Sync with HEAD
 1.31.2.1  07-Jan-2017  pgoyette Sync with HEAD. (Note that most of these changes are simply $NetBSD$
tag issues.)
 1.33.16.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.34.8.1  03-Apr-2021  thorpej Sync with HEAD.

RSS XML Feed