Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 Aug 2005 22:06:58 +0100 (BST)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        Minh Tran <mtran@groupwise.swin.edu.au>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: Kernel code of reseting/ignoring tcp SYN packets
Message-ID:  <20050806220421.A11054@fledge.watson.org>
In-Reply-To: <s2f52ee3.024@groupwise.swin.edu.au>
References:  <s2f52ee3.024@groupwise.swin.edu.au>

next in thread | previous in thread | raw e-mail | index | archive | help

On Sat, 6 Aug 2005, Minh Tran wrote:

> I was looking around for the files of Kernel code where SYN messages are 
> sent, so we can simply inject some code to send back a reset messages or 
> ignore the SYN requests. I was looking at the function ioctl() which 
> takes fd of the tcp socket. As i track the function down, there is also 
> another call to the dev_ioclt() function where all parameters are passed 
> down. However, i was not sucessful with finding out the description of 
> this dev_ioclt() function. I am having a bit of trouble in finding out 
> the way of injecting code in the kernel to deal with SYN packets. I am 
> thinking of using ipfw to either reset or drop SYN packets.
>
> Would anyone have some hints on the clean way of injecting some code to 
> deal with SYN packets or could you give me some ideas on which files i 
> should look at? I really appreciate that. I saw some promising files in 
> src/sys/netinet but they are not all clear in my mind.

TCP packet input processing occurs in 
src/sys/netinet/tcp_input.c:tcp_input().  This is a very large function, 
so you will want to search for the following line, which precedes 
responsible for the processing of SYN packets that will form new 
connections:

         if (so->so_options & SO_ACCEPTCONN) {

FreeBSD makes use of a combined syncache/syncookie mechanism, so you're 
probably also interested in tcp_syncache.c.

Robert N M Watson



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050806220421.A11054>