Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
NetBSD master CVS tree commits
mellon
Wed May 14 10:42:30 PDT 1997
Update of /cvsroot/src/sys/netinet
In directory netbsd1:/var/slash-tmp/cvs-serv24005
Modified Files:
Tag: SYN_cache_branch
tcp_input.c
Log Message:
Incorporate David Borman of BSDI's tcp SYN caching patches for
4.4BSD-lite2:
- define non-global syn cache variables
- define syn cache hashing algorithm
in tcp_input():
- package ts_val, ts_ecr and ts_present in a tcp_opt_info
structure so that they can be passed en masse to the
syn_cache code.
if the packet matched a socket that's in the ACCEPTING state:
- if an incoming connection does not yet have a tcpcb, but
it's not a SYN packet, check in the syn cache to see if we
cached the initial SYN. If not, send an RST packet. If
so, and if it's an RST packet, though, just blow away the
cache entry. If there was a cache entry and we aren't
processing an RST packet, create the full-blown connection
now and jump into the part of tcp_input() that deals with
connected sockets.
- if it is a SYN, and sonewconn() wouldn't queue it because
the limit for incoming half-up connections has been
exceeded, but the limit for established connections hasn't
yet been exceeded, then put this connection into the syn
cache.
after we've handled the accepting state:
- call tcp_dooptions with tcp_opt_info structure rather than
discrete option state variables.
- If the connection is half-up, and we get an ACK packet, but
it's not for the SYN we sent, drop the connection and send
an RST, per rfc793, p. 36.
in tcp_dooptions:
- combine all the option state passed as arguments into one
tcp_opt_info structure.
add syn cache management functions, verbatim from David's
patch:
syn_cache_insert: insert a connection into the SYN cache. If
we reach the per-bucket or cache size limit, toss the oldest
entry in the bucket, or if there are no entries in this
bucket yet, go looking for an entry to toss.
syn_cache_timer: blow away aging cache entries.
syn_cache_lookup: find the syn cache entry matching a
particular tcp packet, if any.
syn_cache_get: take an entry out of the cache and make a
socket for it.
syn_cache_reset: zap a connection in the syn cache based on
receipt of an RST packet.
syn_cache_unreach: zap a connection in the syn cache based on
an ICMP unreachable message.
syn_cache_add: given a LISTEN socket and an inbound SYN
request, add an entry to the syn cache and send a SYN,ACK to
the source.
syn_cache_respond: actually sends the SYN,ACK.
Home |
Main Index |
Thread Index |
Old Index