# HG changeset patch # User Tom Henderson # Date 1230918297 28800 # Node ID a67042c32b0b2be8a6235b4d14ad0731c448695d # Parent 2b675a0b3b94ec7e1bbea00cf9523adea9e12806 initial patch for bug 458 diff -r 2b675a0b3b94 -r a67042c32b0b src/internet-stack/internet-stack.cc --- a/src/internet-stack/internet-stack.cc Sat Dec 27 13:58:12 2008 -0800 +++ b/src/internet-stack/internet-stack.cc Fri Jan 02 09:44:57 2009 -0800 @@ -82,6 +82,7 @@ AddTcpStack(Ptr node) Ptr tcpFactory = CreateObject (); tcpFactory->SetTcp (tcp); node->AggregateObject (tcpFactory); + node->AggregateObject (tcp); } static void diff -r 2b675a0b3b94 -r a67042c32b0b src/internet-stack/tcp-l4-protocol.cc --- a/src/internet-stack/tcp-l4-protocol.cc Sat Dec 27 13:58:12 2008 -0800 +++ b/src/internet-stack/tcp-l4-protocol.cc Fri Jan 02 09:44:57 2009 -0800 @@ -22,6 +22,7 @@ #include "ns3/log.h" #include "ns3/nstime.h" #include "ns3/boolean.h" +#include "ns3/object-vector.h" #include "ns3/packet.h" #include "ns3/node.h" @@ -334,6 +335,10 @@ TcpL4Protocol::GetTypeId (void) BooleanValue (false), MakeBooleanAccessor (&TcpL4Protocol::m_calcChecksum), MakeBooleanChecker ()) + .AddAttribute ("SocketList", "The list of TcpSocketImpl sockets.", + ObjectVectorValue (), + MakeObjectVectorAccessor (&TcpL4Protocol::m_sockets), + MakeObjectVectorChecker ()) ; return tid; } @@ -366,6 +371,15 @@ TcpL4Protocol::DoDispose (void) TcpL4Protocol::DoDispose (void) { NS_LOG_FUNCTION_NOARGS (); + for (std::vector >::iterator i = m_sockets.begin (); + i != m_sockets.end (); i++) + { + Ptr socket = *i; + socket->Dispose (); + *i = 0; + } + m_sockets.clear (); + if (m_endPoints != 0) { delete m_endPoints; @@ -384,6 +398,7 @@ TcpL4Protocol::CreateSocket (void) socket->SetNode (m_node); socket->SetTcp (this); socket->SetRtt (rtt); + m_sockets.push_back (socket); return socket; } diff -r 2b675a0b3b94 -r a67042c32b0b src/internet-stack/tcp-l4-protocol.h --- a/src/internet-stack/tcp-l4-protocol.h Sat Dec 27 13:58:12 2008 -0800 +++ b/src/internet-stack/tcp-l4-protocol.h Fri Jan 02 09:44:57 2009 -0800 @@ -120,6 +120,9 @@ private: bool m_goodChecksum; bool m_calcChecksum; + + std::vector > m_sockets; + }; }; // namespace ns3