Suppress / delay SYN-ACK

Martin Schiller
2006-10-12T08:08:51Z

Hi!

I'm searching for a solution to suppress / delay the SYN-ACK packet of a
listening server (-application) until he has decided (e.g. analysed the
requesting ip-address or checked if the corresponding other end of a
connection is available) if he wants to accept the connect request of the
client. If not, it should be possible to reject the connect request.

My idea is to add two ioctl's:
- One to set the listening socket into "delay_synack" mode.
- And one to send the synack packet, if the connection should be
accepted.

If the "delay_synack" mode is not enabled, the connection should just work
as usual.

I had a look at the tcp/ipv4 stack for a while and have found out, that this
three-way-handshake is already done before anything comes up to user-space
when I am doing a call to accept(). So I think it wouldn't be possible to
add this feature with "a little hack".

Does anybody have any hints for me where I should start to work?

Regards,
Martin Schiller