[freeBSD-6.1RELEASE] wonderings about function tcp_input()
Andre Oppermann
andre at freebsd.org
Mon Jun 19 13:49:54 UTC 2006
Blue wrote:
> Hi, all:
>
> I have a question about line 1765 to 1776 in tcp_input():
>
> /*
> * If the ACK bit is off: if in SYN-RECEIVED state or SENDSYN
> * flag is on (half-synchronized state), then queue data for
> * later processing; else drop segment and return.
> */
> if ((thflags & TH_ACK) == 0) {
> if (tp->t_state == TCPS_SYN_RECEIVED ||
> (tp->t_flags & TF_NEEDSYN))
> goto step6;
> else
> goto drop;
> }
>
> My question is: if we are currently in TCPS_SYN_RECEIVED state, why does
> a segment without ACK bother? Why we need to store the segment and
> process it? Without considering T/TCP, the code should be:
>
> if ((thflags & TH_ACK) == 0) {
> goto drop;
> }
This code is dead at the moment since most of T/TCP (RFC1644) was
removed and the SYN_RECEIVED case is no longer handled here but in
tcp_syncache.c.
--
Andre
More information about the freebsd-net
mailing list