diff --git a/src/devices/wifi/wifi-remote-station-manager.cc b/src/devices/wifi/wifi-remote-station-manager.cc index 296a28e7b..1d0a88482 100644 --- a/src/devices/wifi/wifi-remote-station-manager.cc +++ b/src/devices/wifi/wifi-remote-station-manager.cc @@ -565,7 +565,7 @@ WifiRemoteStation::PrepareForQueue (Ptr packet, uint32_t fullPacke return; } TxModeTag tag = TxModeTag (DoGetRtsMode (), DoGetDataMode (fullPacketSize)); - packet->AddTag (tag); + packet->AddPacketTag (tag); } WifiMode WifiRemoteStation::GetDataMode (Ptr packet, uint32_t fullPacketSize) @@ -576,7 +576,7 @@ WifiRemoteStation::GetDataMode (Ptr packet, uint32_t fullPacketSiz } TxModeTag tag; bool found; - found = packet->FindFirstMatchingTag (tag); + found = ConstCast (packet)->RemovePacketTag (tag); NS_ASSERT (found); return tag.GetDataMode (); } @@ -589,7 +589,7 @@ WifiRemoteStation::GetRtsMode (Ptr packet) } TxModeTag tag; bool found; - found = packet->FindFirstMatchingTag (tag); + found = ConstCast (packet)->RemovePacketTag (tag); NS_ASSERT (found); return tag.GetRtsMode (); } diff --git a/src/internet-stack/ipv4-l3-protocol.cc b/src/internet-stack/ipv4-l3-protocol.cc index 5970701f8..adc3c55de 100644 --- a/src/internet-stack/ipv4-l3-protocol.cc +++ b/src/internet-stack/ipv4-l3-protocol.cc @@ -607,7 +607,7 @@ Ipv4L3Protocol::Send (Ptr 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, // 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, else if (found) { ipHeader.SetTtl (tag.GetTtl ()); - // XXX remove tag here? } else { diff --git a/src/internet-stack/tcp-socket-impl.cc b/src/internet-stack/tcp-socket-impl.cc index 9630a4596..b287abafe 100644 --- a/src/internet-stack/tcp-socket-impl.cc +++ b/src/internet-stack/tcp-socket-impl.cc @@ -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 TcpSocketImpl::RecvFrom (uint32_t maxSize, uint32_t flags, - Address &fromAddress) + Address &fromAddress) { NS_LOG_FUNCTION (this << maxSize << flags); Ptr 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 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 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 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 diff --git a/src/internet-stack/udp-socket-impl.cc b/src/internet-stack/udp-socket-impl.cc index f58d3c659..fc14fc248 100644 --- a/src/internet-stack/udp-socket-impl.cc +++ b/src/internet-stack/udp-socket-impl.cc @@ -324,17 +324,17 @@ UdpSocketImpl::DoSendTo (Ptr 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 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 UdpSocketImpl::RecvFrom (uint32_t maxSize, uint32_t flags, - Address &fromAddress) + Address &fromAddress) { NS_LOG_FUNCTION (this << maxSize << flags); Ptr 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, 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 (); diff --git a/src/node/packet-socket.cc b/src/node/packet-socket.cc index 6aef802e6..2045a411c 100644 --- a/src/node/packet-socket.cc +++ b/src/node/packet-socket.cc @@ -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) { - 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 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 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 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 device, Ptr 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 device, Ptr packet, if ((m_rxAvailable + packet->GetSize ()) <= m_rcvBufSize) { + Ptr 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 device, Ptr 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 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 PacketSocket::RecvFrom (uint32_t maxSize, uint32_t flags, Address &fromAddress) { - NS_LOG_FUNCTION_NOARGS (); + NS_LOG_FUNCTION (this << maxSize << flags << fromAddress); Ptr 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);