From e9e1e82c4ac557125ade15c4f2f88ce2dea20aab Mon Sep 17 00:00:00 2001 From: Tom Henderson Date: Thu, 12 May 2011 22:47:31 -0700 Subject: [PATCH] bug 1054: ipv6 InternetStackHelper EnablePcapIpv6All() broken --- RELEASE_NOTES | 1 + src/internet/model/ipv6-l3-protocol.cc | 28 +++++++++++++------------- src/internet/model/ipv6-l3-protocol.h | 6 +++--- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/RELEASE_NOTES b/RELEASE_NOTES index ae7fd5d66..f54623990 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -74,6 +74,7 @@ since ns-3.10, in many cases referencing the Bugzilla bug number. - bug 1044 - Seconds (1e-9) creates Time that is not IsPositive () - bug 1056 - CSMA: padding not handled correctly for LLC encapsulation - bug 1058 - documentation help to avoid InternetStackHelper pitfall + - bug 1054 - ipv6 InternetStackHelper EnablePcapIpv6All() broken Known issues ------------ diff --git a/src/internet/model/ipv6-l3-protocol.cc b/src/internet/model/ipv6-l3-protocol.cc index 0286b1489..3551a4e58 100644 --- a/src/internet/model/ipv6-l3-protocol.cc +++ b/src/internet/model/ipv6-l3-protocol.cc @@ -657,7 +657,7 @@ void Ipv6L3Protocol::Send (Ptr packet, Ipv6Address source, Ipv6Address d else { NS_LOG_WARN ("No route to host, drop!"); - m_dropTrace (hdr, packet, DROP_NO_ROUTE, GetInterfaceForDevice(oif)); + m_dropTrace (hdr, packet, DROP_NO_ROUTE, m_node->GetObject (), GetInterfaceForDevice(oif)); } } @@ -677,7 +677,7 @@ void Ipv6L3Protocol::Receive (Ptr device, Ptr p, uint16 { if (ipv6Interface->IsUp ()) { - m_rxTrace (packet, interface); + m_rxTrace (packet, m_node->GetObject (), interface); break; } else @@ -685,7 +685,7 @@ void Ipv6L3Protocol::Receive (Ptr device, Ptr p, uint16 NS_LOG_LOGIC ("Dropping received packet-- interface is down"); Ipv6Header hdr; packet->RemoveHeader (hdr); - m_dropTrace (hdr, packet, DROP_INTERFACE_DOWN, interface); + m_dropTrace (hdr, packet, DROP_INTERFACE_DOWN, m_node->GetObject (), interface); return; } } @@ -735,7 +735,7 @@ void Ipv6L3Protocol::Receive (Ptr device, Ptr p, uint16 MakeCallback (&Ipv6L3Protocol::RouteInputError, this))) { NS_LOG_WARN ("No route found for forwarding packet. Drop."); - m_dropTrace (hdr, packet, DROP_NO_ROUTE, interface); + m_dropTrace (hdr, packet, DROP_NO_ROUTE, m_node->GetObject (), interface); } } @@ -789,21 +789,21 @@ void Ipv6L3Protocol::SendRealOut (Ptr route, Ptr packet, Ipv6 /* IPv6 header is already added in fragments */ for (std::list >::const_iterator it = fragments.begin (); it != fragments.end (); it++) { - m_txTrace (*it, interface); + m_txTrace (*it, m_node->GetObject (), interface); outInterface->Send (*it, route->GetGateway ()); } } else { packet->AddHeader (ipHeader); - m_txTrace (packet, interface); + m_txTrace (packet, m_node->GetObject (), interface); outInterface->Send (packet, route->GetGateway ()); } } else { NS_LOG_LOGIC ("Dropping-- outgoing interface is down: " << route->GetGateway ()); - m_dropTrace (ipHeader, packet, DROP_INTERFACE_DOWN, interface); + m_dropTrace (ipHeader, packet, DROP_INTERFACE_DOWN, m_node->GetObject (), interface); } } else @@ -819,21 +819,21 @@ void Ipv6L3Protocol::SendRealOut (Ptr route, Ptr packet, Ipv6 /* IPv6 header is already added in fragments */ for (std::list >::const_iterator it = fragments.begin (); it != fragments.end (); it++) { - m_txTrace (*it, interface); + m_txTrace (*it, m_node->GetObject (), interface); outInterface->Send (*it, ipHeader.GetDestinationAddress ()); } } else { packet->AddHeader (ipHeader); - m_txTrace (packet, interface); + m_txTrace (packet, m_node->GetObject (), interface); outInterface->Send (packet, ipHeader.GetDestinationAddress ()); } } else { NS_LOG_LOGIC ("Dropping-- outgoing interface is down: " << ipHeader.GetDestinationAddress ()); - m_dropTrace (ipHeader, packet, DROP_INTERFACE_DOWN, interface); + m_dropTrace (ipHeader, packet, DROP_INTERFACE_DOWN, m_node->GetObject (), interface); } } } @@ -857,7 +857,7 @@ void Ipv6L3Protocol::IpForward (Ptr rtentry, Ptr p, con if (ipHeader.GetHopLimit () == 0) { NS_LOG_WARN ("TTL exceeded. Drop."); - m_dropTrace (ipHeader, packet, DROP_TTL_EXPIRED, 0); + m_dropTrace (ipHeader, packet, DROP_TTL_EXPIRED, m_node->GetObject (), 0); // Do not reply to ICMPv6 or to multicast IPv6 address if (ipHeader.GetNextHeader () != Icmpv6L4Protocol::PROT_NUMBER && ipHeader.GetDestinationAddress ().IsMulticast () == false) @@ -922,7 +922,7 @@ void Ipv6L3Protocol::IpMulticastForward (Ptr mrtentry, PtrGetObject (), i); return; } @@ -993,7 +993,7 @@ void Ipv6L3Protocol::LocalDeliver (Ptr packet, Ipv6Header const& i { GetIcmpv6 ()->SendErrorParameterError (malformedPacket, dst, Icmpv6Header::ICMPV6_UNKNOWN_NEXT_HEADER, ip.GetSerializedSize () + nextHeaderPosition); } - m_dropTrace (ip, p, DROP_UNKNOWN_PROTOCOL, iif); + m_dropTrace (ip, p, DROP_UNKNOWN_PROTOCOL, m_node->GetObject (), iif); break; } else @@ -1030,7 +1030,7 @@ void Ipv6L3Protocol::RouteInputError (Ptr p, const Ipv6Header& ipH { NS_LOG_FUNCTION (this << p << ipHeader << sockErrno); NS_LOG_LOGIC ("Route input failure-- dropping packet to " << ipHeader << " with errno " << sockErrno); - m_dropTrace (ipHeader, p, DROP_ROUTE_ERROR, 0); + m_dropTrace (ipHeader, p, DROP_ROUTE_ERROR, m_node->GetObject (), 0); } Ipv6Header Ipv6L3Protocol::BuildHeader (Ipv6Address src, Ipv6Address dst, uint8_t protocol, uint16_t payloadSize, uint8_t ttl) diff --git a/src/internet/model/ipv6-l3-protocol.h b/src/internet/model/ipv6-l3-protocol.h index 5d3521d71..c0f49edf4 100644 --- a/src/internet/model/ipv6-l3-protocol.h +++ b/src/internet/model/ipv6-l3-protocol.h @@ -368,17 +368,17 @@ private: /** * \brief Callback to trace TX (transmission) packets. */ - TracedCallback, uint32_t> m_txTrace; + TracedCallback, Ptr, uint32_t> m_txTrace; /** * \brief Callback to trace RX (reception) packets. */ - TracedCallback, uint32_t> m_rxTrace; + TracedCallback, Ptr, uint32_t> m_rxTrace; /** * \brief Callback to trace drop packets. */ - TracedCallback, DropReason, uint32_t> m_dropTrace; + TracedCallback, DropReason, Ptr, uint32_t> m_dropTrace; /** * \brief Copy constructor.