|
Lines 41-57
TcpGeneralTest::TcpGeneralTest (const std::string &desc,
|
Link Here
|
|---|
|
| 41 |
TypeId congestionControl, |
41 |
TypeId congestionControl, |
| 42 |
uint32_t mtu) |
42 |
uint32_t mtu) |
| 43 |
: TestCase (desc), |
43 |
: TestCase (desc), |
| 44 |
m_congControlTypeId (congestionControl), |
44 |
m_congControlTypeId (congestionControl), |
| 45 |
m_propagationDelay (propagationDelay), |
45 |
m_propagationDelay (propagationDelay), |
| 46 |
m_startTime (startTime), |
46 |
m_startTime (startTime), |
| 47 |
m_mtu (mtu), |
47 |
m_mtu (mtu), |
| 48 |
m_pktSize (pktSize), |
48 |
m_pktSize (pktSize), |
| 49 |
m_pktCount (pktCount), |
49 |
m_pktCount (pktCount), |
| 50 |
m_interPacketInterval (pktInterval), |
50 |
m_interPacketInterval (pktInterval), |
| 51 |
m_initialSlowStartThresh (initialSlowStartThresh), |
51 |
m_initialSlowStartThresh (initialSlowStartThresh), |
| 52 |
m_initialCwnd (initialCwnd), |
52 |
m_initialCwnd (initialCwnd), |
| 53 |
m_segmentSize (segmentSize), |
53 |
m_segmentSize (segmentSize), |
| 54 |
m_remoteAddr (Ipv4Address::GetAny (), 4477) |
54 |
m_remoteAddr (Ipv4Address::GetAny (), 4477) |
| 55 |
{ |
55 |
{ |
| 56 |
NS_LOG_FUNCTION (this << desc); |
56 |
NS_LOG_FUNCTION (this << desc); |
| 57 |
} |
57 |
} |
|
Lines 164-169
TcpGeneralTest::DoRun (void)
|
Link Here
|
|---|
|
| 164 |
m_receiverSocket->SetProcessedAckCb (MakeCallback (&TcpGeneralTest::ProcessedAckCb, this)); |
164 |
m_receiverSocket->SetProcessedAckCb (MakeCallback (&TcpGeneralTest::ProcessedAckCb, this)); |
| 165 |
m_receiverSocket->SetRetransmitCb (MakeCallback (&TcpGeneralTest::RtoExpiredCb, this)); |
165 |
m_receiverSocket->SetRetransmitCb (MakeCallback (&TcpGeneralTest::RtoExpiredCb, this)); |
| 166 |
m_receiverSocket->SetForkCb (MakeCallback (&TcpGeneralTest::ForkCb, this)); |
166 |
m_receiverSocket->SetForkCb (MakeCallback (&TcpGeneralTest::ForkCb, this)); |
|
|
167 |
m_receiverSocket->SetUpdateRttHistoryCb (MakeCallback (&TcpGeneralTest::UpdateRttHistoryCb, this)); |
| 167 |
m_receiverSocket->TraceConnectWithoutContext ("Tx", |
168 |
m_receiverSocket->TraceConnectWithoutContext ("Tx", |
| 168 |
MakeCallback (&TcpGeneralTest::TxPacketCb, this)); |
169 |
MakeCallback (&TcpGeneralTest::TxPacketCb, this)); |
| 169 |
m_receiverSocket->TraceConnectWithoutContext ("Rx", |
170 |
m_receiverSocket->TraceConnectWithoutContext ("Rx", |
|
Lines 180-186
TcpGeneralTest::DoRun (void)
|
Link Here
|
|---|
|
| 180 |
m_senderSocket->SetRcvAckCb (MakeCallback (&TcpGeneralTest::RcvAckCb, this)); |
181 |
m_senderSocket->SetRcvAckCb (MakeCallback (&TcpGeneralTest::RcvAckCb, this)); |
| 181 |
m_senderSocket->SetProcessedAckCb (MakeCallback (&TcpGeneralTest::ProcessedAckCb, this)); |
182 |
m_senderSocket->SetProcessedAckCb (MakeCallback (&TcpGeneralTest::ProcessedAckCb, this)); |
| 182 |
m_senderSocket->SetRetransmitCb (MakeCallback (&TcpGeneralTest::RtoExpiredCb, this)); |
183 |
m_senderSocket->SetRetransmitCb (MakeCallback (&TcpGeneralTest::RtoExpiredCb, this)); |
| 183 |
m_senderSocket->SetDataSentCallback(MakeCallback (&TcpGeneralTest::DataSentCb, this)); |
184 |
m_senderSocket->SetUpdateRttHistoryCb (MakeCallback (&TcpGeneralTest::UpdateRttHistoryCb, this)); |
|
|
185 |
m_senderSocket->SetDataSentCallback (MakeCallback (&TcpGeneralTest::DataSentCb, this)); |
| 184 |
m_senderSocket->TraceConnectWithoutContext ("CongestionWindow", |
186 |
m_senderSocket->TraceConnectWithoutContext ("CongestionWindow", |
| 185 |
MakeCallback (&TcpGeneralTest::CWndTrace, this)); |
187 |
MakeCallback (&TcpGeneralTest::CWndTrace, this)); |
| 186 |
m_senderSocket->TraceConnectWithoutContext ("CongState", |
188 |
m_senderSocket->TraceConnectWithoutContext ("CongState", |
|
Lines 337-342
TcpGeneralTest::NormalCloseCb (Ptr<Socket> socket)
|
Link Here
|
|---|
|
| 337 |
} |
339 |
} |
| 338 |
|
340 |
|
| 339 |
void |
341 |
void |
|
|
342 |
TcpGeneralTest::UpdateRttHistoryCb (Ptr<const TcpSocketBase> tcp, |
| 343 |
const SequenceNumber32 & seq, uint32_t sz, |
| 344 |
bool isRetransmission) |
| 345 |
{ |
| 346 |
if (tcp->GetNode () == m_receiverSocket->GetNode ()) |
| 347 |
{ |
| 348 |
UpdatedRttHistory (seq, sz, isRetransmission, RECEIVER); |
| 349 |
} |
| 350 |
else if (tcp->GetNode () == m_senderSocket->GetNode ()) |
| 351 |
{ |
| 352 |
UpdatedRttHistory (seq, sz, isRetransmission, SENDER); |
| 353 |
} |
| 354 |
else |
| 355 |
{ |
| 356 |
NS_FATAL_ERROR ("Closed socket, but not recognized"); |
| 357 |
} |
| 358 |
} |
| 359 |
|
| 360 |
void |
| 340 |
TcpGeneralTest::RtoExpiredCb (const Ptr<const TcpSocketState> tcb, |
361 |
TcpGeneralTest::RtoExpiredCb (const Ptr<const TcpSocketState> tcb, |
| 341 |
const Ptr<const TcpSocketBase> tcp) |
362 |
const Ptr<const TcpSocketBase> tcp) |
| 342 |
{ |
363 |
{ |
|
Lines 532-538
TcpGeneralTest::GetDelAckCount (SocketWho who)
|
Link Here
|
|---|
|
| 532 |
} |
553 |
} |
| 533 |
|
554 |
|
| 534 |
Time |
555 |
Time |
| 535 |
TcpGeneralTest::GetDelAckTimeout(SocketWho who) |
556 |
TcpGeneralTest::GetDelAckTimeout (SocketWho who) |
| 536 |
{ |
557 |
{ |
| 537 |
if (who == SENDER) |
558 |
if (who == SENDER) |
| 538 |
{ |
559 |
{ |
|
Lines 777-797
TcpSocketMsgBase::Fork (void)
|
Link Here
|
|---|
|
| 777 |
} |
798 |
} |
| 778 |
|
799 |
|
| 779 |
void |
800 |
void |
| 780 |
TcpSocketMsgBase::SetRcvAckCb (AckManagementCallback cb) |
801 |
TcpSocketMsgBase::SetRcvAckCb (AckManagementCb cb) |
| 781 |
{ |
802 |
{ |
| 782 |
NS_ASSERT (!cb.IsNull ()); |
803 |
NS_ASSERT (!cb.IsNull ()); |
| 783 |
m_rcvAckCb = cb; |
804 |
m_rcvAckCb = cb; |
| 784 |
} |
805 |
} |
| 785 |
|
806 |
|
| 786 |
void |
807 |
void |
| 787 |
TcpSocketMsgBase::SetProcessedAckCb (AckManagementCallback cb) |
808 |
TcpSocketMsgBase::SetProcessedAckCb (AckManagementCb cb) |
| 788 |
{ |
809 |
{ |
| 789 |
NS_ASSERT (!cb.IsNull ()); |
810 |
NS_ASSERT (!cb.IsNull ()); |
| 790 |
m_processedAckCb = cb; |
811 |
m_processedAckCb = cb; |
| 791 |
} |
812 |
} |
| 792 |
|
813 |
|
| 793 |
void |
814 |
void |
| 794 |
TcpSocketMsgBase::SetRetransmitCb (RetrCallback cb) |
815 |
TcpSocketMsgBase::SetRetransmitCb (RetrCb cb) |
| 795 |
{ |
816 |
{ |
| 796 |
NS_ASSERT (!cb.IsNull ()); |
817 |
NS_ASSERT (!cb.IsNull ()); |
| 797 |
m_retrCallback = cb; |
818 |
m_retrCallback = cb; |
|
Lines 824-829
TcpSocketMsgBase::SetForkCb (Callback<void, Ptr<TcpSocketMsgBase> > cb)
|
Link Here
|
|---|
|
| 824 |
} |
845 |
} |
| 825 |
|
846 |
|
| 826 |
void |
847 |
void |
|
|
848 |
TcpSocketMsgBase::SetUpdateRttHistoryCb (UpdateRttCallback cb) |
| 849 |
{ |
| 850 |
NS_ASSERT (!cb.IsNull ()); |
| 851 |
m_updateRttCb = cb; |
| 852 |
} |
| 853 |
|
| 854 |
void |
| 855 |
TcpSocketMsgBase::UpdateRttHistory (const SequenceNumber32 &seq, uint32_t sz, |
| 856 |
bool isRetransmission) |
| 857 |
{ |
| 858 |
TcpSocketBase::UpdateRttHistory (seq, sz, isRetransmission); |
| 859 |
if (!m_updateRttCb.IsNull ()) |
| 860 |
{ |
| 861 |
m_updateRttCb (this, seq, sz, isRetransmission); |
| 862 |
} |
| 863 |
} |
| 864 |
|
| 865 |
void |
| 827 |
TcpSocketMsgBase::CompleteFork (Ptr<Packet> p, const TcpHeader &tcpHeader, |
866 |
TcpSocketMsgBase::CompleteFork (Ptr<Packet> p, const TcpHeader &tcpHeader, |
| 828 |
const Address &fromAddress, const Address &toAddress) |
867 |
const Address &fromAddress, const Address &toAddress) |
| 829 |
{ |
868 |
{ |