diff --git a/src/applications/packet-sink/packet-sink.cc b/src/applications/packet-sink/packet-sink.cc index d71de1495..3f4a9f27e 100644 --- a/src/applications/packet-sink/packet-sink.cc +++ b/src/applications/packet-sink/packet-sink.cc @@ -106,10 +106,10 @@ void PacketSink::HandleRead (Ptr socket) while (packet = socket->Recv ()) { SocketRxAddressTag tag; - bool found = packet->PeekTag (tag); + bool found = packet->FindFirstMatchingTag (tag); NS_ASSERT (found); Address from = tag.GetAddress (); - packet->RemoveTag (tag); + // XXX packet->RemoveTag (tag); if (InetSocketAddress::IsMatchingType (from)) { InetSocketAddress address = InetSocketAddress::ConvertFrom (from); diff --git a/src/applications/udp-echo/udp-echo-client.cc b/src/applications/udp-echo/udp-echo-client.cc index 0d2713fca..787e2dcf7 100644 --- a/src/applications/udp-echo/udp-echo-client.cc +++ b/src/applications/udp-echo/udp-echo-client.cc @@ -153,10 +153,10 @@ UdpEchoClient::HandleRead (Ptr socket) while (packet = socket->Recv ()) { SocketRxAddressTag tag; - bool found = packet->PeekTag (tag); + bool found = packet->FindFirstMatchingTag (tag); NS_ASSERT (found); Address from = tag.GetAddress (); - packet->RemoveTag (tag); + // XXX packet->RemoveTag (tag); if (InetSocketAddress::IsMatchingType (from)) { InetSocketAddress address = InetSocketAddress::ConvertFrom (from); diff --git a/src/applications/udp-echo/udp-echo-server.cc b/src/applications/udp-echo/udp-echo-server.cc index 135b2800a..e2dab0bf8 100644 --- a/src/applications/udp-echo/udp-echo-server.cc +++ b/src/applications/udp-echo/udp-echo-server.cc @@ -98,10 +98,10 @@ UdpEchoServer::HandleRead (Ptr socket) while (packet = socket->Recv ()) { SocketRxAddressTag tag; - bool found = packet->PeekTag (tag); + bool found = packet->FindFirstMatchingTag (tag); NS_ASSERT (found); Address from = tag.GetAddress (); - packet->RemoveTag (tag); + // XXX packet->RemoveTag (tag); if (InetSocketAddress::IsMatchingType (from)) { InetSocketAddress address = InetSocketAddress::ConvertFrom (from); diff --git a/src/internet-node/ipv4-l3-protocol.cc b/src/internet-node/ipv4-l3-protocol.cc index 7be8959c9..f314be856 100644 --- a/src/internet-node/ipv4-l3-protocol.cc +++ b/src/internet-node/ipv4-l3-protocol.cc @@ -490,9 +490,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; - bool found = packet->PeekTag (tag); - uint8_t socketTtl = tag.GetTtl (); - packet->RemoveTag (tag); + bool found = packet->FindFirstMatchingTag (tag); if (destination.IsBroadcast ()) { @@ -500,7 +498,8 @@ Ipv4L3Protocol::Send (Ptr packet, } else if (found) { - ipHeader.SetTtl (socketTtl); + ipHeader.SetTtl (tag.GetTtl ()); + // XXX remove tag here? } else { diff --git a/src/node/socket.cc b/src/node/socket.cc index 566154b47..07ebaf401 100644 --- a/src/node/socket.cc +++ b/src/node/socket.cc @@ -30,19 +30,6 @@ NS_LOG_COMPONENT_DEFINE ("Socket"); namespace ns3 { -#if 0 -TypeId -Socket::GetTypeId (void) -{ - static TypeId tid = TypeId ("ns3::Socket") - .SetParent () - .AddConstructor () - ; - return tid; -} - -#endif - Socket::Socket (void) { NS_LOG_FUNCTION_NOARGS (); @@ -266,42 +253,14 @@ Socket::NotifyDataRecv (void) } } +/*************************************************************** + * Socket Tags + ***************************************************************/ + SocketRxAddressTag::SocketRxAddressTag () { } -uint32_t -SocketRxAddressTag::GetUid (void) -{ - static uint32_t uid = ns3::Tag::AllocateUid ("SocketRxAddressTag.ns3"); - return uid; -} - -void -SocketRxAddressTag::Print (std::ostream &os) const -{ - os << "address="<< m_address; -} - -uint32_t -SocketRxAddressTag::GetSerializedSize (void) const -{ - return 0; -} - -void -SocketRxAddressTag::Serialize (Buffer::Iterator i) const -{ - // for local use in stack only -} - -uint32_t -SocketRxAddressTag::Deserialize (Buffer::Iterator i) -{ - // for local use in stack only - return 0; -} - void SocketRxAddressTag::SetAddress (Address addr) { @@ -314,42 +273,41 @@ SocketRxAddressTag::GetAddress (void) const return m_address; } + +TypeId +SocketRxAddressTag::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::SocketRxAddressTag") + .SetParent () + .AddConstructor () + ; + return tid; +} +TypeId +SocketRxAddressTag::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} +uint32_t +SocketRxAddressTag::GetSerializedSize (void) const +{ + return 0; +} +void +SocketRxAddressTag::Serialize (TagBuffer i) const +{ + // for local use in stack only +} +void +SocketRxAddressTag::Deserialize (TagBuffer i) +{ + // for local use in stack only +} + SocketIpTtlTag::SocketIpTtlTag () { } -uint32_t -SocketIpTtlTag::GetUid (void) -{ - static uint32_t uid = ns3::Tag::AllocateUid ("SocketIpTtlTag.ns3"); - return uid; -} - -void -SocketIpTtlTag::Print (std::ostream &os) const -{ - os << "ttl="<< m_ttl; -} - -uint32_t -SocketIpTtlTag::GetSerializedSize (void) const -{ - return 0; -} - -void -SocketIpTtlTag::Serialize (Buffer::Iterator i) const -{ - // for local use in stack only -} - -uint32_t -SocketIpTtlTag::Deserialize (Buffer::Iterator i) -{ - // for local use in stack only - return 0; -} - void SocketIpTtlTag::SetTtl (uint8_t ttl) { @@ -362,4 +320,35 @@ SocketIpTtlTag::GetTtl (void) const return m_ttl; } + +TypeId +SocketIpTtlTag::GetTypeId (void) +{ + static TypeId tid = TypeId ("ns3::SocketIpTtlTag") + .SetParent () + .AddConstructor () + ; + return tid; +} +TypeId +SocketIpTtlTag::GetInstanceTypeId (void) const +{ + return GetTypeId (); +} +uint32_t +SocketIpTtlTag::GetSerializedSize (void) const +{ + return 0; +} +void +SocketIpTtlTag::Serialize (TagBuffer i) const +{ + // for local use in stack only +} +void +SocketIpTtlTag::Deserialize (TagBuffer i) +{ + // for local use in stack only +} + }//namespace ns3 diff --git a/src/node/socket.h b/src/node/socket.h index a500f3152..d0705762f 100644 --- a/src/node/socket.h +++ b/src/node/socket.h @@ -368,14 +368,15 @@ class SocketRxAddressTag : public Tag { public: SocketRxAddressTag (); - static uint32_t GetUid (void); - void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator i) const; - uint32_t Deserialize (Buffer::Iterator i); - void SetAddress (Address addr); Address GetAddress (void) const; + + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (TagBuffer i) const; + virtual void Deserialize (TagBuffer i); + private: Address m_address; }; @@ -388,14 +389,15 @@ class SocketIpTtlTag : public Tag { public: SocketIpTtlTag (); - static uint32_t GetUid (void); - void Print (std::ostream &os) const; - uint32_t GetSerializedSize (void) const; - void Serialize (Buffer::Iterator i) const; - uint32_t Deserialize (Buffer::Iterator i); - void SetTtl (uint8_t ttl); uint8_t GetTtl (void) const; + + static TypeId GetTypeId (void); + virtual TypeId GetInstanceTypeId (void) const; + virtual uint32_t GetSerializedSize (void) const; + virtual void Serialize (TagBuffer i) const; + virtual void Deserialize (TagBuffer i); + private: uint8_t m_ttl; }; diff --git a/src/routing/olsr/olsr-agent-impl.cc b/src/routing/olsr/olsr-agent-impl.cc index 929a2b446..56d4e8c76 100644 --- a/src/routing/olsr/olsr-agent-impl.cc +++ b/src/routing/olsr/olsr-agent-impl.cc @@ -312,7 +312,7 @@ AgentImpl::RecvOlsr (Ptr socket) receivedPacket = socket->Recv (); SocketRxAddressTag tag; - bool found = receivedPacket->PeekTag (tag); + bool found = receivedPacket->FindFirstMatchingTag (tag); NS_ASSERT (found); Address sourceAddress = tag.GetAddress ();