convert to Packet tags
This commit is contained in:
@@ -565,7 +565,7 @@ WifiRemoteStation::PrepareForQueue (Ptr<const Packet> packet, uint32_t fullPacke
|
||||
return;
|
||||
}
|
||||
TxModeTag tag = TxModeTag (DoGetRtsMode (), DoGetDataMode (fullPacketSize));
|
||||
packet->AddTag (tag);
|
||||
packet->AddPacketTag (tag);
|
||||
}
|
||||
WifiMode
|
||||
WifiRemoteStation::GetDataMode (Ptr<const Packet> packet, uint32_t fullPacketSize)
|
||||
@@ -576,7 +576,7 @@ WifiRemoteStation::GetDataMode (Ptr<const Packet> packet, uint32_t fullPacketSiz
|
||||
}
|
||||
TxModeTag tag;
|
||||
bool found;
|
||||
found = packet->FindFirstMatchingTag (tag);
|
||||
found = ConstCast<Packet> (packet)->RemovePacketTag (tag);
|
||||
NS_ASSERT (found);
|
||||
return tag.GetDataMode ();
|
||||
}
|
||||
@@ -589,7 +589,7 @@ WifiRemoteStation::GetRtsMode (Ptr<const Packet> packet)
|
||||
}
|
||||
TxModeTag tag;
|
||||
bool found;
|
||||
found = packet->FindFirstMatchingTag (tag);
|
||||
found = ConstCast<Packet> (packet)->RemovePacketTag (tag);
|
||||
NS_ASSERT (found);
|
||||
return tag.GetRtsMode ();
|
||||
}
|
||||
|
||||
@@ -607,7 +607,7 @@ Ipv4L3Protocol::Send (Ptr<Packet> packet,
|
||||
m_identification ++;
|
||||
|
||||
SocketSetDontFragmentTag dfTag;
|
||||
bool found = packet->FindFirstMatchingTag (dfTag);
|
||||
bool found = packet->RemovePacketTag (dfTag);
|
||||
if (found)
|
||||
{
|
||||
if (dfTag.IsEnabled ())
|
||||
@@ -624,7 +624,7 @@ Ipv4L3Protocol::Send (Ptr<Packet> packet,
|
||||
// Set TTL to 1 if it is a broadcast packet of any type. Otherwise,
|
||||
// possibly override the default TTL if the packet is tagged
|
||||
SocketIpTtlTag tag;
|
||||
found = packet->FindFirstMatchingTag (tag);
|
||||
found = packet->RemovePacketTag (tag);
|
||||
|
||||
if (destination.IsBroadcast ())
|
||||
{
|
||||
@@ -633,7 +633,6 @@ Ipv4L3Protocol::Send (Ptr<Packet> packet,
|
||||
else if (found)
|
||||
{
|
||||
ipHeader.SetTtl (tag.GetTtl ());
|
||||
// XXX remove tag here?
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -544,6 +544,9 @@ TcpSocketImpl::Recv (uint32_t maxSize, uint32_t flags)
|
||||
m_rxBufSize += i->second->GetSize()-avail;
|
||||
}
|
||||
}
|
||||
SocketAddressTag tag;
|
||||
tag.SetAddress (InetSocketAddress (m_remoteAddress, m_remotePort));
|
||||
outPacket->AddPacketTag (tag);
|
||||
return outPacket;
|
||||
}
|
||||
|
||||
@@ -558,7 +561,7 @@ TcpSocketImpl::GetRxAvailable (void) const
|
||||
|
||||
Ptr<Packet>
|
||||
TcpSocketImpl::RecvFrom (uint32_t maxSize, uint32_t flags,
|
||||
Address &fromAddress)
|
||||
Address &fromAddress)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << maxSize << flags);
|
||||
Ptr<Packet> packet = Recv (maxSize, flags);
|
||||
@@ -567,7 +570,7 @@ TcpSocketImpl::RecvFrom (uint32_t maxSize, uint32_t flags,
|
||||
{
|
||||
SocketAddressTag tag;
|
||||
bool found;
|
||||
found = packet->FindFirstMatchingTag (tag);
|
||||
found = packet->PeekPacketTag (tag);
|
||||
NS_ASSERT (found);
|
||||
fromAddress = tag.GetAddress ();
|
||||
}
|
||||
@@ -1166,9 +1169,6 @@ void TcpSocketImpl::NewRx (Ptr<Packet> p,
|
||||
p = p->CreateFragment (0,s);
|
||||
m_nextRxSequence += s; // Advance next expected sequence
|
||||
NS_LOG_LOGIC("Case 1, advanced nrxs to " << m_nextRxSequence );
|
||||
SocketAddressTag tag;
|
||||
tag.SetAddress (fromAddress);
|
||||
p->AddTag (tag);
|
||||
//buffer this, it'll be read by call to Recv
|
||||
UnAckData_t::iterator i =
|
||||
m_bufferedData.find (tcpHeader.GetSequenceNumber () );
|
||||
@@ -1236,9 +1236,6 @@ void TcpSocketImpl::NewRx (Ptr<Packet> p,
|
||||
}
|
||||
}
|
||||
// Save for later delivery
|
||||
SocketAddressTag tag;
|
||||
tag.SetAddress (fromAddress);
|
||||
p->AddTag (tag);
|
||||
m_bufferedData[startSeq] = p;
|
||||
i = m_bufferedData.find (startSeq);
|
||||
next = i;
|
||||
@@ -1265,9 +1262,6 @@ void TcpSocketImpl::NewRx (Ptr<Packet> p,
|
||||
p = p->CreateFragment (m_nextRxSequence - tcpHeader.GetSequenceNumber (),s);
|
||||
SequenceNumber start = m_nextRxSequence;
|
||||
m_nextRxSequence += s; // Advance next expected sequence
|
||||
SocketAddressTag tag;
|
||||
tag.SetAddress (fromAddress);
|
||||
p->AddTag (tag);
|
||||
//buffer the new fragment, it'll be read by call to Recv
|
||||
UnAckData_t::iterator i = m_bufferedData.find (start);
|
||||
if (i != m_bufferedData.end () ) //we found it already in the buffer
|
||||
|
||||
@@ -324,17 +324,17 @@ UdpSocketImpl::DoSendTo (Ptr<Packet> p, Ipv4Address dest, uint16_t port)
|
||||
{
|
||||
SocketIpTtlTag tag;
|
||||
tag.SetTtl (m_ipMulticastTtl);
|
||||
p->AddTag (tag);
|
||||
p->AddPacketTag (tag);
|
||||
}
|
||||
else if (m_ipTtl != 0 && !dest.IsMulticast () && !dest.IsBroadcast ())
|
||||
{
|
||||
SocketIpTtlTag tag;
|
||||
tag.SetTtl (m_ipTtl);
|
||||
p->AddTag (tag);
|
||||
p->AddPacketTag (tag);
|
||||
}
|
||||
{
|
||||
SocketSetDontFragmentTag tag;
|
||||
bool found = p->FindFirstMatchingTag (tag);
|
||||
bool found = p->RemovePacketTag (tag);
|
||||
if (!found)
|
||||
{
|
||||
if (m_mtuDiscover)
|
||||
@@ -345,7 +345,7 @@ UdpSocketImpl::DoSendTo (Ptr<Packet> p, Ipv4Address dest, uint16_t port)
|
||||
{
|
||||
tag.Disable ();
|
||||
}
|
||||
p->AddTag (tag);
|
||||
p->AddPacketTag (tag);
|
||||
}
|
||||
}
|
||||
//
|
||||
@@ -462,7 +462,7 @@ UdpSocketImpl::Recv (uint32_t maxSize, uint32_t flags)
|
||||
|
||||
Ptr<Packet>
|
||||
UdpSocketImpl::RecvFrom (uint32_t maxSize, uint32_t flags,
|
||||
Address &fromAddress)
|
||||
Address &fromAddress)
|
||||
{
|
||||
NS_LOG_FUNCTION (this << maxSize << flags);
|
||||
Ptr<Packet> packet = Recv (maxSize, flags);
|
||||
@@ -470,7 +470,7 @@ UdpSocketImpl::RecvFrom (uint32_t maxSize, uint32_t flags,
|
||||
{
|
||||
SocketAddressTag tag;
|
||||
bool found;
|
||||
found = packet->FindFirstMatchingTag (tag);
|
||||
found = packet->PeekPacketTag (tag);
|
||||
NS_ASSERT (found);
|
||||
fromAddress = tag.GetAddress ();
|
||||
}
|
||||
@@ -506,7 +506,7 @@ UdpSocketImpl::ForwardUp (Ptr<Packet> packet, Ipv4Address ipv4, uint16_t port)
|
||||
Address address = InetSocketAddress (ipv4, port);
|
||||
SocketAddressTag tag;
|
||||
tag.SetAddress (address);
|
||||
packet->AddTag (tag);
|
||||
packet->AddPacketTag (tag);
|
||||
m_deliveryQueue.push (packet);
|
||||
m_rxAvailable += packet->GetSize ();
|
||||
NotifyDataRecv ();
|
||||
@@ -742,8 +742,8 @@ UdpSocketImplTest::RunTests (void)
|
||||
NS_TEST_ASSERT_EQUAL (m_receivedPacket->GetSize (), 123);
|
||||
NS_TEST_ASSERT_EQUAL (m_receivedPacket2->GetSize (), 0); // second interface should receive it
|
||||
|
||||
m_receivedPacket->RemoveAllTags ();
|
||||
m_receivedPacket2->RemoveAllTags ();
|
||||
m_receivedPacket->RemoveAllPacketTags ();
|
||||
m_receivedPacket2->RemoveAllPacketTags ();
|
||||
|
||||
// Simple broadcast test
|
||||
|
||||
@@ -756,8 +756,8 @@ UdpSocketImplTest::RunTests (void)
|
||||
// second socket should not receive it (it is bound specifically to the second interface's address
|
||||
NS_TEST_ASSERT_EQUAL (m_receivedPacket2->GetSize (), 0);
|
||||
|
||||
m_receivedPacket->RemoveAllTags ();
|
||||
m_receivedPacket2->RemoveAllTags ();
|
||||
m_receivedPacket->RemoveAllPacketTags ();
|
||||
m_receivedPacket2->RemoveAllPacketTags ();
|
||||
|
||||
// Broadcast test with multiple receiving sockets
|
||||
|
||||
@@ -777,8 +777,8 @@ InetSocketAddress (Ipv4Address("255.255.255.255"), 1234)), 123);
|
||||
NS_TEST_ASSERT_EQUAL (m_receivedPacket->GetSize (), 123);
|
||||
NS_TEST_ASSERT_EQUAL (m_receivedPacket2->GetSize (), 123);
|
||||
|
||||
m_receivedPacket->RemoveAllTags ();
|
||||
m_receivedPacket2->RemoveAllTags ();
|
||||
m_receivedPacket->RemoveAllPacketTags ();
|
||||
m_receivedPacket2->RemoveAllPacketTags ();
|
||||
|
||||
Simulator::Destroy ();
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ PacketSocket::GetTypeId (void)
|
||||
|
||||
PacketSocket::PacketSocket () : m_rxAvailable (0)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this);
|
||||
m_state = STATE_OPEN;
|
||||
m_shutdownSend = false;
|
||||
m_shutdownRecv = false;
|
||||
@@ -64,40 +64,40 @@ PacketSocket::PacketSocket () : m_rxAvailable (0)
|
||||
void
|
||||
PacketSocket::SetNode (Ptr<Node> node)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this << node);
|
||||
m_node = node;
|
||||
}
|
||||
|
||||
PacketSocket::~PacketSocket ()
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this);
|
||||
}
|
||||
|
||||
void
|
||||
PacketSocket::DoDispose (void)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this);
|
||||
m_device = 0;
|
||||
}
|
||||
|
||||
enum Socket::SocketErrno
|
||||
PacketSocket::GetErrno (void) const
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this);
|
||||
return m_errno;
|
||||
}
|
||||
|
||||
Ptr<Node>
|
||||
PacketSocket::GetNode (void) const
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this);
|
||||
return m_node;
|
||||
}
|
||||
|
||||
int
|
||||
PacketSocket::Bind (void)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this);
|
||||
PacketSocketAddress address;
|
||||
address.SetProtocol (0);
|
||||
address.SetAllDevices ();
|
||||
@@ -107,7 +107,7 @@ PacketSocket::Bind (void)
|
||||
int
|
||||
PacketSocket::Bind (const Address &address)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this << address);
|
||||
if (!PacketSocketAddress::IsMatchingType (address))
|
||||
{
|
||||
m_errno = ERROR_INVAL;
|
||||
@@ -120,7 +120,7 @@ PacketSocket::Bind (const Address &address)
|
||||
int
|
||||
PacketSocket::DoBind (const PacketSocketAddress &address)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this << address);
|
||||
if (m_state == STATE_BOUND ||
|
||||
m_state == STATE_CONNECTED)
|
||||
{
|
||||
@@ -153,7 +153,7 @@ PacketSocket::DoBind (const PacketSocketAddress &address)
|
||||
int
|
||||
PacketSocket::ShutdownSend (void)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this);
|
||||
if (m_state == STATE_CLOSED)
|
||||
{
|
||||
m_errno = ERROR_BADF;
|
||||
@@ -166,7 +166,7 @@ PacketSocket::ShutdownSend (void)
|
||||
int
|
||||
PacketSocket::ShutdownRecv (void)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this);
|
||||
if (m_state == STATE_CLOSED)
|
||||
{
|
||||
m_errno = ERROR_BADF;
|
||||
@@ -179,7 +179,7 @@ PacketSocket::ShutdownRecv (void)
|
||||
int
|
||||
PacketSocket::Close(void)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this);
|
||||
if (m_state == STATE_CLOSED)
|
||||
{
|
||||
m_errno = ERROR_BADF;
|
||||
@@ -192,7 +192,7 @@ PacketSocket::Close(void)
|
||||
int
|
||||
PacketSocket::Connect(const Address &ad)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this << ad);
|
||||
PacketSocketAddress address;
|
||||
if (m_state == STATE_CLOSED)
|
||||
{
|
||||
@@ -233,7 +233,7 @@ PacketSocket::Listen(void)
|
||||
int
|
||||
PacketSocket::Send (Ptr<Packet> p, uint32_t flags)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this << p << flags);
|
||||
if (m_state == STATE_OPEN ||
|
||||
m_state == STATE_BOUND)
|
||||
{
|
||||
@@ -278,7 +278,7 @@ PacketSocket::GetTxAvailable (void) const
|
||||
int
|
||||
PacketSocket::SendTo (Ptr<Packet> p, uint32_t flags, const Address &address)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this << p << flags << address);
|
||||
PacketSocketAddress ad;
|
||||
if (m_state == STATE_CLOSED)
|
||||
{
|
||||
@@ -351,7 +351,7 @@ PacketSocket::ForwardUp (Ptr<NetDevice> device, Ptr<const Packet> packet,
|
||||
uint16_t protocol, const Address &from,
|
||||
const Address &to, NetDevice::PacketType packetType)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this << device << packet << protocol << from << to << packetType);
|
||||
if (m_shutdownRecv)
|
||||
{
|
||||
return;
|
||||
@@ -365,10 +365,11 @@ PacketSocket::ForwardUp (Ptr<NetDevice> device, Ptr<const Packet> packet,
|
||||
|
||||
if ((m_rxAvailable + packet->GetSize ()) <= m_rcvBufSize)
|
||||
{
|
||||
Ptr<Packet> copy = packet->Copy ();
|
||||
SocketAddressTag tag;
|
||||
tag.SetAddress (address);
|
||||
packet->AddTag (tag);
|
||||
m_deliveryQueue.push (packet->Copy ());
|
||||
copy->AddPacketTag (tag);
|
||||
m_deliveryQueue.push (copy);
|
||||
m_rxAvailable += packet->GetSize ();
|
||||
NS_LOG_LOGIC ("UID is " << packet->GetUid() << " PacketSocket " << this);
|
||||
NotifyDataRecv ();
|
||||
@@ -388,7 +389,7 @@ PacketSocket::ForwardUp (Ptr<NetDevice> device, Ptr<const Packet> packet,
|
||||
uint32_t
|
||||
PacketSocket::GetRxAvailable (void) const
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this);
|
||||
// We separately maintain this state to avoid walking the queue
|
||||
// every time this might be called
|
||||
return m_rxAvailable;
|
||||
@@ -397,7 +398,7 @@ PacketSocket::GetRxAvailable (void) const
|
||||
Ptr<Packet>
|
||||
PacketSocket::Recv (uint32_t maxSize, uint32_t flags)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this << maxSize << flags);
|
||||
if (m_deliveryQueue.empty() )
|
||||
{
|
||||
return 0;
|
||||
@@ -418,13 +419,13 @@ PacketSocket::Recv (uint32_t maxSize, uint32_t flags)
|
||||
Ptr<Packet>
|
||||
PacketSocket::RecvFrom (uint32_t maxSize, uint32_t flags, Address &fromAddress)
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this << maxSize << flags << fromAddress);
|
||||
Ptr<Packet> packet = Recv (maxSize, flags);
|
||||
if (packet != 0)
|
||||
{
|
||||
SocketAddressTag tag;
|
||||
bool found;
|
||||
found = packet->FindFirstMatchingTag (tag);
|
||||
found = packet->PeekPacketTag (tag);
|
||||
NS_ASSERT (found);
|
||||
fromAddress = tag.GetAddress ();
|
||||
}
|
||||
@@ -434,7 +435,7 @@ PacketSocket::RecvFrom (uint32_t maxSize, uint32_t flags, Address &fromAddress)
|
||||
int
|
||||
PacketSocket::GetSockName (Address &address) const
|
||||
{
|
||||
NS_LOG_FUNCTION_NOARGS ();
|
||||
NS_LOG_FUNCTION (this << address);
|
||||
PacketSocketAddress ad = PacketSocketAddress::ConvertFrom(address);
|
||||
|
||||
ad.SetProtocol (m_protocol);
|
||||
|
||||
Reference in New Issue
Block a user