bug 1054: ipv6 InternetStackHelper EnablePcapIpv6All() broken
authorTom Henderson <tomh@tomh.org>
Thu, 12 May 2011 22:47:31 -0700
changeset 7158 4fe055d32d78
parent 7157 43d2fb5bfb12
child 7159 009cd4e1b486
bug 1054: ipv6 InternetStackHelper EnablePcapIpv6All() broken
RELEASE_NOTES
src/internet/model/ipv6-l3-protocol.cc
src/internet/model/ipv6-l3-protocol.h
--- a/RELEASE_NOTES	Thu May 12 21:49:50 2011 -0700
+++ b/RELEASE_NOTES	Thu May 12 22:47:31 2011 -0700
@@ -74,6 +74,7 @@
    - 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
 ------------
--- a/src/internet/model/ipv6-l3-protocol.cc	Thu May 12 21:49:50 2011 -0700
+++ b/src/internet/model/ipv6-l3-protocol.cc	Thu May 12 22:47:31 2011 -0700
@@ -657,7 +657,7 @@
   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<Ipv6> (), GetInterfaceForDevice(oif));
     }
 }
 
@@ -677,7 +677,7 @@
         {
           if (ipv6Interface->IsUp ())
             {
-              m_rxTrace (packet, interface);
+              m_rxTrace (packet, m_node->GetObject<Ipv6> (), interface);
               break;
             }
           else
@@ -685,7 +685,7 @@
               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<Ipv6> (), interface);
               return;
             }
         }
@@ -735,7 +735,7 @@
                                  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<Ipv6> (), interface);
     }
 }
 
@@ -789,21 +789,21 @@
               /* IPv6 header is already added in fragments */
               for (std::list<Ptr<Packet> >::const_iterator it = fragments.begin (); it != fragments.end (); it++)
                 {
-                  m_txTrace (*it, interface);
+                  m_txTrace (*it, m_node->GetObject<Ipv6> (), interface);
                   outInterface->Send (*it, route->GetGateway ());
                 }
             }
           else
             {
               packet->AddHeader (ipHeader);
-              m_txTrace (packet, interface);
+              m_txTrace (packet, m_node->GetObject<Ipv6> (), 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<Ipv6> (), interface);
         }
     }
   else
@@ -819,21 +819,21 @@
               /* IPv6 header is already added in fragments */
               for (std::list<Ptr<Packet> >::const_iterator it = fragments.begin (); it != fragments.end (); it++)
                 {
-                  m_txTrace (*it, interface);
+                  m_txTrace (*it, m_node->GetObject<Ipv6> (), interface);
                   outInterface->Send (*it, ipHeader.GetDestinationAddress ());
                 }
             }
           else
             {
               packet->AddHeader (ipHeader);
-              m_txTrace (packet, interface);
+              m_txTrace (packet, m_node->GetObject<Ipv6> (), 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<Ipv6> (), interface);
         }
     }
 }
@@ -857,7 +857,7 @@
   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<Ipv6> (), 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 @@
           if (h.GetHopLimit () == 0)
             {
               NS_LOG_WARN ("TTL exceeded.  Drop.");
-              m_dropTrace (header, packet, DROP_TTL_EXPIRED, i);
+              m_dropTrace (header, packet, DROP_TTL_EXPIRED, m_node->GetObject<Ipv6> (), i);
               return;
             }
 
@@ -993,7 +993,7 @@
                 {
                   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<Ipv6> (), iif);
               break;
             }
           else
@@ -1030,7 +1030,7 @@
 {
   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<Ipv6> (), 0);
 }
 
 Ipv6Header Ipv6L3Protocol::BuildHeader (Ipv6Address src, Ipv6Address dst, uint8_t protocol, uint16_t payloadSize, uint8_t ttl)
--- a/src/internet/model/ipv6-l3-protocol.h	Thu May 12 21:49:50 2011 -0700
+++ b/src/internet/model/ipv6-l3-protocol.h	Thu May 12 22:47:31 2011 -0700
@@ -368,17 +368,17 @@
   /**
    * \brief Callback to trace TX (transmission) packets.
    */ 
-  TracedCallback<Ptr<const Packet>, uint32_t> m_txTrace;
+  TracedCallback<Ptr<const Packet>, Ptr<Ipv6>, uint32_t> m_txTrace;
 
   /**
    * \brief Callback to trace RX (reception) packets.
    */ 
-  TracedCallback<Ptr<const Packet>, uint32_t> m_rxTrace;
+  TracedCallback<Ptr<const Packet>, Ptr<Ipv6>, uint32_t> m_rxTrace;
 
   /**
    * \brief Callback to trace drop packets.
    */ 
-  TracedCallback<const Ipv6Header &, Ptr<const Packet>, DropReason, uint32_t> m_dropTrace;
+  TracedCallback<const Ipv6Header &, Ptr<const Packet>, DropReason, Ptr<Ipv6>, uint32_t> m_dropTrace;
 
   /**
    * \brief Copy constructor.