On Sun, Apr 28, 2013 at 10:31:48PM +0000, Barry Spinney wrote:
> I am sorry if this is a dumb question, but I was trying to understand the 
> FreeBSD TCP stack,
> and In particular I was trying to understand the use of the TF_NEEDSYN flag.  
> This flag
> is referenced a number of times in tcp_input.c and tcp_output.c, but I don't 
> think that
> it can ever be set.
> 
> In particular grepping through the "../src/sys/netinet", one discovers that 
> the only code
> that can set this flag is lines 1018 and 1020 of tcp_input.c.  But, it 
> appears to me that
> none of the lines in tcp_input.c from 999 thru 1023 are even reachable!  The 
> reason they
> are not reachable is because just ahead of them are the following lines:
> 
>     if (!syncache_add(&inc, &to, th, &so, m))
>         goto drop;
>     if (so == NULL) {
>         ...  // uninteresting lines, but no gotos
>         return;
>     }
>     ... /unreachable code here
> 
> 
>   Studying syncache_add (in file tcp_syncache.c), reveals three return 
> statements.
>   One of the returns, returns the value 0, which will cause the "goto drop" 
> to be executed.
>   The other two returns, return both the value 1 AND set "*sop = NULL", which 
> should cause
>   the following "if (so == NULL)" to execute the subsequent return statement.
> 
> Is this intentional? (i.e. dead code awaiting future development?), or a bug?
> Or I am going blind to something obvious?
> 
> Thanx Barry Spinney.
> 
> (p.s. I doubt it matters which version of code, but to be precise this is 
> from the
> /pub/FreeBSD/development/tarballs named "src_stable_6.tar.gz" dated 
> "4/21/2013 01:15 AM",
> gotten from ftp1.us.freebsd.org<ftp://ftp1.us.freebsd.org>)

That tarball presumably contains sources for the stable branch of
FreeBSD 6, which probably isn't what you're looking for - the last
release from that branch was in 2008.

The relevant code in FreeBSD-CURRENT is different and your observations
don't seem to apply there. Based on a comment added in r156125, you seem
to be correct though. :)
http://svnweb.freebsd.org/base?view=revision&revision=156125

I'd suggest fetching src_current.tar.gz from the FTP same directory and
looking at that instead - you're more likely to get replies to questions
about the current tip of development.
_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to