summaryrefslogtreecommitdiffstats
path: root/sys/netinet/tcp_input.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
...
* compute correct window scale when recvpipe option is set in route; basedprovos2000-07-111-4/+6
| | | | on diff from "Pete Kazmier" <pete@kazmier.com>
* be more cautious about tcp option length field. drop bogus ones earlier.itojun2000-07-091-2/+4
| | | | | not sure if there is a real threat or not, but it seems that there's possibility for overrun/underrun (like non-NOP option with optlen > cnt).
* Move domain.h above so this compiles again.fgsch2000-07-061-5/+2
| | | | Remove netinet.h within ifdef INET6; this is already included.
* - more icmp6/ip6 stats.itojun2000-07-061-2/+2
| | | | | | | | | - protect IPv6 ND from being hosed (due to neighbor unreachability detection hint) by wrong tcp traffic. still not sure if there's real attack, but it is good to be cautious. - avoid bitfield for router renumbering header decl. - implement packet-per-sec limitation for icmp6 errors, turn interval limit off (it is not very useful due to unix timer resolution).
* completely remove ipv4 mapped cases from tcp_input().itojun2000-07-061-197/+239
| | | | cleanup (indentation, v4-or-v6 conditions)
* more cleanup for IPv4 mapped address support. there seem to be someitojun2000-07-051-97/+72
| | | | | | | | | inconsistency in corner cases (from NRL I believe). todd (fries) and I have seen panic, with the following call chain: ip6_input -> tcp_input -> tcp_respond -> ip_input -> bang! more cleanups should be done, to decrease complexity. for example, INP_IPV6_MAPPED should be nuked.
* Add comment on input MSS calculation based on previous PMTUD results,angelos2000-05-151-1/+8
| | | | | as per TCP-imply IETF WG draft(s). The correct approach is to just use the relevant interface's MTU.
* actually m_adj tries to drop tcp header part. it is better toitojun2000-04-281-2/+2
| | | | | | touch tcp header before m_adj, than the other way around. (no behavior change with the current m_adj code, new code is safer against any future m_adj changes)
* mbuf is freed by sbappend(), move the references to th up. found by art@provos2000-04-271-3/+3
|
* for layer 3 protocols that does not support path MTU discoveryitojun2000-04-141-28/+40
| | | | | | | | | | | | | | | | | | | | (I mean, IPv4) do not try to use rmx_mtu on routing table. this symptom was introduced by rmx_mtu initialization (necessary for IPv6 path MTU discovery) in net/route.c. now prior behavior is recovered. From: Hugh Graham <hugh@openbsd.org> there are several question about mssdflt semantics, though: Question 1: with the current code, mssdflt does not override rmx_mtu value (mssdflt overrides interface mtu only). should we override rmx_mtu by mssdflt as well? Question 2: with the current code, mssdflt overrides mss computed from if mtu, only when the destination is IPv4 non-local. is it safe enough? we may want to use mssdflt, whenever we are uncertain. mss = if mtu - hdrsiz; if (IPv4 non-local destination) mss = min(mss, mssdflt);
* TCP SACK fixes via Tom Henderson (tomh@cs.berkeley.edu):provos2000-02-211-1/+3
| | | | | | | | | | | | - tcp_sack_adjust() was completely rewritten, since it was erroneously referencing receiver side sequence numbers and comparing with sender side sequence numbers (thanks to Arun Desai (adesai@cisco.com) who discovered the problem) - in tcp_output(), moved assignment of sendalot=0 to the piece of code immediately following the search for sack-eligible retransmissions (bug identified by Arun Desai). - tcp_input() was not clearing t_dupacks if fewer than three dupacks arrived between acks of new data. (bug identified by Gaurav Banga (gaurav@netapp.com))
* option TCP_NEWRENO goes away, its the default case for TCP_SACK ifprovos1999-12-211-29/+13
| | | | SACK is disabled for the connection or via sysctl
* be paranoid about malicious use of v4 mapped addr on v6 packet.itojun1999-12-211-1/+8
| | | | | | | | | malicious party may try to use v4 mapped addr as source/dest to confuse tcp/udp layer, or to bypass security checks, for example, naive stack can mistakingly think a packet with src = ::ffff:127.0.0.1 is from local node. (sync with kame)
* never go into persist mode if there are still segments to be retransmitted.provos1999-12-151-24/+1
| | | | | | set retransmit timer again if it was cleared, that can happen in SACK when there are no elligble SACK holes to be retransmitted and the receiver window is full.
* sack.end may not be > tp->snd_max but can be equal.provos1999-12-141-2/+2
|
* bring in KAME IPv6 code, dated 19991208.itojun1999-12-081-40/+133
| | | | | | | | | replaces NRL IPv6 layer. reuses NRL pcb layer. no IPsec-on-v6 support. see sys/netinet6/{TODO,IMPLEMENTATION} for more details. GENERIC configuration should work fine as before. GENERIC.v6 works fine as well, but you'll need KAME userland tools to play with IPv6 (will be bringed into soon).
* Fix tcp retransmit/persist timers, provos@ OK.hugh1999-11-151-4/+10
| | | | | | | | | | Adapted from NetBSD: Fix a retransmission bug introduced by the Brakmo and Peterson RTO estimation changes. Under some circumstances it would return a value of 0, while the old Van Jacobson RTO code would return a minimum of 3. This would result in 12 retransmissions, each 1 second apart. This takes care of those instances, and ensures that t_rttmin is used everywhere as a lower bound.
* Add comment about gettdb() and spl level.ho1999-11-041-1/+3
|
* increase tcp_iss incrementprovos1999-09-011-2/+2
|
* correctly update window informationprovos1999-08-311-3/+3
|
* more SACK hole validity testing; fix a tcp seq arithmetic bug. cmetz and me.provos1999-08-271-2/+12
|
* back out all recent changes, which continue to be a source for nasty bugsderaadt1999-08-061-539/+273
|
* Moved the m_data/m_len shave of IP and TCP headers back to its originalcmetz1999-07-281-8/+7
| | | | location, as attempts to do it differently have caused too many problems.
* Reintroduce rev 1.41 which brings us TCP signatures again, but this timeniklas1999-07-221-278/+545
| | | | hopefully without random kernel data corruption.
* use proper Cderaadt1999-07-181-2/+2
|
* revert tcp_input.c to before 07/01/1999 - this seems to solve the mysteriousprovos1999-07-171-543/+272
| | | | | data corruptions and panics that people have experienced. by reverting we loose tcp signatures and ipv6 cleanups, the code looked correct to me.
* correct non-STDC casederaadt1999-07-131-1/+2
|
* Added support for TCP MD5 option (RFC 2385).cmetz1999-07-061-10/+156
|
* Fixed compilation problems when INET6 is enabled.cmetz1999-07-061-9/+11
|
* indentderaadt1999-07-031-21/+21
|
* Significant cleanups in the way TCP is made to handle multiple networkcmetz1999-07-021-263/+385
| | | | | | | | | | | | | | | | | | protocols. "struct tcpiphdr" is now gone from much of the code, as are separate pointers for ti and ti6. The result is fewer variables, which is generally a good thing. Simple if(is_ipv6) ... else ... tests are gone in favor of a switch(protocol family), which allows future new protocols to be added easily. This also makes it possible for someone so inclined to re-implement TUBA (TCP over CLNP?) and do it right instead of the kluged way it was done in 4.4. The TCP header template is now referenced through a mbuf rather than done through a data pointer and dtom()ed as needed. This is partly because dtom() is evil and partly because max_linkhdr + IPv6 + TCP + MSS/TS/SACK opts won't fit inside a packet header mbuf, so we need to grab a cluster for that (which the code now does, if needed).
* removed TCPCOOKIE support.pattonme1999-06-111-151/+1
|
* instead of dropping out of window SYNs, send an ACK and drop afterwards.provos1999-05-241-3/+7
| | | | | fixes a problem with NFS over TCP reported by Jason Thorpe, fix from klm@netbsd.org
* From Tom Henderson <tomh@cs.berkeley.edu>:provos1999-04-211-2/+14
| | | | | | | | | | Fixed a sequence wraparound bug in the snd_recover variable discovered in very large (multiple GByte) transfers (in loss free conditions, snd_recover was not sufficiently tracking snd_una). Thanks to Mark Smith for finding this. Fixed a bug in tcp_newreno that was preventing retransmission of data due to partial acks. (Discovered by Jayanth Vijayaraghavan)
* add SADB_X_BINDSA to pfkey allowing incoming SAs to refer to an outgoingprovos1999-03-271-1/+51
| | | | | | | | | SA to be used, use this SA in ip_output if available. allow mobile road warriors for bind SAs with wildcard dst and src addresses. check IPSEC AUTH and ESP level when receiving packets, drop them if protection is insufficient. add stats to show dropped packets because of insufficient IPSEC protection. -- phew. this was all done in canada. dugsong and linh provided the ride and company.
* when allocating sack blocks check for failing malloc(), if it failsprovos1999-02-151-5/+12
| | | | just ignore the sack block + fix misleading comment. tomh@CS.Berkeley.EDU
* correct rst handling should not consult ack field herehugh1999-02-091-4/+2
|
* init incr tcp iss from snd_nxt, not rcv_nxt; 4.4deraadt1999-02-081-2/+2
|
* indentderaadt1999-02-051-21/+21
|
* fix NEWRENO behaviour, the newreo code assumed that the send socket buffer hasprovos1999-01-271-4/+7
| | | | | | | already been cleared of the acked data, though it was called before any sbdrop() call and always called tcp_output() with 0 index in the send socket buffer and thus causing data corruption. so do not set snd_una to th_ack.
* reordered FIN segments caused early termination, bug introduced by ipv6 integrationniklas1999-01-271-2/+2
|
* IN_MULTICAST takes network order addressesniklas1999-01-151-3/+3
|
* Make TCP_SACK compile with new netinetniklas1999-01-111-6/+6
|
* netinet merge of NRL stuff. some indent and shrinkage needed; NRL/cmetzderaadt1999-01-111-214/+547
|
* in_pcblookup() now takes ptr to both ip address argumentsderaadt1999-01-071-3/+3
|
* more min vs. ulmin/lmin fixesmillert1998-11-251-4/+4
|
* NewReno, SACK and FACK support for TCP, adapted from code for BSDIprovos1998-11-171-11/+694
| | | | | | | | by Hari Balakrishnan (hari@lcs.mit.edu), Tom Henderson (tomh@cs.berkeley.edu) and Venkat Padmanabhan (padmanab@cs.berkeley.edu) as part of the Daedalus research group at the University of California, (http://daedalus.cs.berkeley.edu). [I was able to do this on time spent at the Center for Information Technology Integration (citi.umich.edu)]
* - fix three bugs pointed out in Stevens, i.a. updating timestamps correctlyprovos1998-10-281-44/+66
| | | | | | | | | | - fix a 4.4bsd-lite2 bug, when tcp options are present the maximum segment size is not updated correctly, so that fast recovery forces out a segment which is split in two segments by tcp_output(), the fix is adpated from FreeBSD, the effective mss is recorded after option negotiation in 3way handshake. [I was able to fix this on time spent at Center for Information Technology Integration (citi.umich.edu)]
* indentderaadt1998-06-271-8/+11
|
* Add FreeBSD patch (check for SYN packets arriving at a socket inangelos1998-03-181-7/+26
| | | | LISTEN state with source address/port == destination address/port).