diff -r 93b77f8fb697 src/internet-stack/tcp-l4-protocol.cc --- a/src/internet-stack/tcp-l4-protocol.cc Tue Sep 29 10:30:23 2009 -0400 +++ b/src/internet-stack/tcp-l4-protocol.cc Wed Sep 30 12:26:38 2009 -0400 @@ -512,7 +512,33 @@ TcpL4Protocol::Receive (Ptr pack source.Print (oss); oss<<" source port: "< rstPacket = Create (); + TcpHeader header; + if (tcpHeader.GetFlags () & TcpHeader::ACK) + { + // ACK bit was set + header.SetFlags (TcpHeader::RST); + header.SetSequenceNumber (header.GetAckNumber ()); + } + else + { + header.SetFlags (TcpHeader::RST | TcpHeader::ACK); + header.SetSequenceNumber (SequenceNumber (0)); + header.SetAckNumber (header.GetSequenceNumber () + SequenceNumber (1)); + } + header.SetSourcePort (tcpHeader.GetDestinationPort ()); + header.SetDestinationPort (tcpHeader.GetSourcePort ()); + SendPacket (rstPacket, header, destination, source); + return Ipv4L4Protocol::RX_OK; + } + else + { + return Ipv4L4Protocol::RX_ENDPOINT_UNREACH; + } } NS_ASSERT_MSG (endPoints.size() == 1 , "Demux returned more than one endpoint"); NS_LOG_LOGIC ("TcpL4Protocol "<