merge with HEAD
This commit is contained in:
@@ -111,4 +111,69 @@ DropTailQueue::DoPeek (Packet& p)
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace ns3
|
||||
|
||||
|
||||
#ifdef RUN_SELF_TESTS
|
||||
|
||||
#include "ns3/test.h"
|
||||
|
||||
namespace ns3 {
|
||||
|
||||
class DropTailQueueTest: public Test {
|
||||
public:
|
||||
virtual bool RunTests (void);
|
||||
DropTailQueueTest ();
|
||||
};
|
||||
|
||||
|
||||
DropTailQueueTest::DropTailQueueTest ()
|
||||
: Test ("DropTailQueue") {}
|
||||
|
||||
|
||||
bool
|
||||
DropTailQueueTest::RunTests (void)
|
||||
{
|
||||
bool result = true;
|
||||
|
||||
DropTailQueue queue;
|
||||
queue.SetMaxPackets (3);
|
||||
|
||||
Packet p1, p2, p3, p4;
|
||||
|
||||
NS_TEST_ASSERT_EQUAL (queue.GetNPackets (), 0);
|
||||
queue.Enqueue (p1);
|
||||
NS_TEST_ASSERT_EQUAL (queue.GetNPackets (), 1);
|
||||
queue.Enqueue (p2);
|
||||
NS_TEST_ASSERT_EQUAL (queue.GetNPackets (), 2);
|
||||
queue.Enqueue (p3);
|
||||
NS_TEST_ASSERT_EQUAL (queue.GetNPackets (), 3);
|
||||
queue.Enqueue (p4); // will be dropped
|
||||
NS_TEST_ASSERT_EQUAL (queue.GetNPackets (), 3);
|
||||
|
||||
Packet p;
|
||||
|
||||
NS_TEST_ASSERT (queue.Dequeue (p));
|
||||
NS_TEST_ASSERT_EQUAL (queue.GetNPackets (), 2);
|
||||
NS_TEST_ASSERT_EQUAL (p.GetUid (), p1.GetUid ());
|
||||
|
||||
NS_TEST_ASSERT (queue.Dequeue (p));
|
||||
NS_TEST_ASSERT_EQUAL (queue.GetNPackets (), 1);
|
||||
NS_TEST_ASSERT_EQUAL (p.GetUid (), p2.GetUid ());
|
||||
|
||||
NS_TEST_ASSERT (queue.Dequeue (p));
|
||||
NS_TEST_ASSERT_EQUAL (queue.GetNPackets (), 0);
|
||||
NS_TEST_ASSERT_EQUAL (p.GetUid (), p3.GetUid ());
|
||||
|
||||
NS_TEST_ASSERT (!queue.Dequeue (p));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
static DropTailQueueTest gDropTailQueueTest;
|
||||
|
||||
}; // namespace ns3
|
||||
|
||||
#endif /* RUN_SELF_TESTS */
|
||||
|
||||
|
||||
@@ -222,22 +222,26 @@ PacketSocket::SendTo(const Address &address, const Packet &p)
|
||||
PacketSocketAddress ad;
|
||||
if (m_state == STATE_CLOSED)
|
||||
{
|
||||
NS_LOG_LOGIC ("ERROR_BADF");
|
||||
m_errno = ERROR_BADF;
|
||||
return -1;
|
||||
}
|
||||
if (m_state == STATE_OPEN)
|
||||
{
|
||||
// XXX should return another error here.
|
||||
NS_LOG_LOGIC ("ERROR_INVAL");
|
||||
m_errno = ERROR_INVAL;
|
||||
return -1;
|
||||
}
|
||||
if (m_shutdownSend)
|
||||
{
|
||||
NS_LOG_LOGIC ("ERROR_SHUTDOWN");
|
||||
m_errno = ERROR_SHUTDOWN;
|
||||
return -1;
|
||||
}
|
||||
if (!PacketSocketAddress::IsMatchingType (address))
|
||||
{
|
||||
NS_LOG_LOGIC ("ERROR_AFNOSUPPORT");
|
||||
m_errno = ERROR_AFNOSUPPORT;
|
||||
return -1;
|
||||
}
|
||||
@@ -250,6 +254,7 @@ PacketSocket::SendTo(const Address &address, const Packet &p)
|
||||
Ptr<NetDevice> device = m_node->GetDevice (ad.GetSingleDevice ());
|
||||
if (!device->Send (p, dest, ad.GetProtocol ()))
|
||||
{
|
||||
NS_LOG_LOGIC ("error: NetDevice::Send error");
|
||||
error = true;
|
||||
}
|
||||
}
|
||||
@@ -260,6 +265,7 @@ PacketSocket::SendTo(const Address &address, const Packet &p)
|
||||
Ptr<NetDevice> device = m_node->GetDevice (i);
|
||||
if (!device->Send (p, dest, ad.GetProtocol ()))
|
||||
{
|
||||
NS_LOG_LOGIC ("error: NetDevice::Send error");
|
||||
error = true;
|
||||
}
|
||||
}
|
||||
@@ -271,6 +277,7 @@ PacketSocket::SendTo(const Address &address, const Packet &p)
|
||||
|
||||
if (error)
|
||||
{
|
||||
NS_LOG_LOGIC ("ERROR_INVAL 2");
|
||||
m_errno = ERROR_INVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user