Add new SendOutgoing, Forward, and ForwardUp trace sources.
authorGustavo J. A. M. Carneiro <gjc@inescporto.pt>
Thu Apr 23 15:48:35 2009 +0100 (9 months ago)
changeset 39234b0217822a44
parent 3922 668e10c5106b
child 3924 849438d10d1d
Add new SendOutgoing, Forward, and ForwardUp trace sources.

Rx and Tx are too low level.
src/internet-stack/ipv4-l3-protocol.cc
src/internet-stack/ipv4-l3-protocol.h
     1.1 --- a/src/internet-stack/ipv4-l3-protocol.cc	Tue Apr 21 19:04:32 2009 +0100
     1.2 +++ b/src/internet-stack/ipv4-l3-protocol.cc	Thu Apr 23 15:48:35 2009 +0100
     1.3 @@ -72,6 +72,14 @@
     1.4                     ObjectVectorValue (),
     1.5                     MakeObjectVectorAccessor (&Ipv4L3Protocol::m_interfaces),
     1.6                     MakeObjectVectorChecker<Ipv4Interface> ())
     1.7 +
     1.8 +    .AddTraceSource ("SendOutgoing", "A newly-generated by this node ipv4 packet is about to be queued for transmission",
     1.9 +                     MakeTraceSourceAccessor (&Ipv4L3Protocol::m_sendOutgoingTrace))
    1.10 +    .AddTraceSource ("Forward", "An ipv4 packet was received by this node and is being forwarded to another node",
    1.11 +                     MakeTraceSourceAccessor (&Ipv4L3Protocol::m_forwardTrace))
    1.12 +    .AddTraceSource ("ForwardUp", "An ipv4 packet was received by/for this node, and it is being forward up the stack",
    1.13 +                     MakeTraceSourceAccessor (&Ipv4L3Protocol::m_forwardUpTrace))
    1.14 +
    1.15      ;
    1.16    return tid;
    1.17  }
    1.18 @@ -519,6 +527,7 @@
    1.19        return;
    1.20      }
    1.21  
    1.22 +  m_forwardUpTrace (ipHeader, packet, index);
    1.23    ForwardUp (packet, ipHeader, ipv4Interface);
    1.24  }
    1.25  
    1.26 @@ -602,11 +611,37 @@
    1.27        // most likely with a packet tag. The higher layers do not
    1.28        // do this yet for us.
    1.29        Lookup (ipHeader, packet,
    1.30 -              MakeCallback (&Ipv4L3Protocol::SendRealOut, this));
    1.31 +              MakeCallback (&Ipv4L3Protocol::SendRealOutOutgoing, this));
    1.32      }
    1.33  }
    1.34  
    1.35  void
    1.36 +Ipv4L3Protocol::SendRealOutOutgoing (bool found,
    1.37 +                                     Ipv4Route const &route,
    1.38 +                                     Ptr<Packet> packet,
    1.39 +                                     Ipv4Header const &ipHeader)
    1.40 +{
    1.41 +  if (found)
    1.42 +    {
    1.43 +      m_sendOutgoingTrace (ipHeader, packet, route.GetInterface ());
    1.44 +    }
    1.45 +  SendRealOut (found, route, packet, ipHeader);
    1.46 +}
    1.47 +
    1.48 +void
    1.49 +Ipv4L3Protocol::SendRealOutForwarding (bool found,
    1.50 +                                       Ipv4Route const &route,
    1.51 +                                       Ptr<Packet> packet,
    1.52 +                                       Ipv4Header const &ipHeader)
    1.53 +{
    1.54 +  if (found)
    1.55 +    {
    1.56 +      m_forwardTrace (ipHeader, packet, route.GetInterface ());
    1.57 +    }
    1.58 +  SendRealOut (found, route, packet, ipHeader);
    1.59 +}
    1.60 +
    1.61 +void
    1.62  Ipv4L3Protocol::SendRealOut (bool found,
    1.63                               Ipv4Route const &route,
    1.64                               Ptr<Packet> packet,
    1.65 @@ -711,13 +746,13 @@
    1.66            // the packet, affecting our local delivery
    1.67            NS_LOG_LOGIC ("Forwarding (multicast).");
    1.68            Lookup (ifIndex, ipHeader, packet->Copy (),
    1.69 -                  MakeCallback (&Ipv4L3Protocol::SendRealOut, this));
    1.70 +                  MakeCallback (&Ipv4L3Protocol::SendRealOutForwarding, this));
    1.71            return false;
    1.72          }   
    1.73      }     
    1.74    NS_LOG_LOGIC ("Not for me, forwarding.");
    1.75    Lookup (ifIndex, ipHeader, packet,
    1.76 -          MakeCallback (&Ipv4L3Protocol::SendRealOut, this));
    1.77 +          MakeCallback (&Ipv4L3Protocol::SendRealOutForwarding, this));
    1.78    
    1.79    return true;
    1.80  }
     2.1 --- a/src/internet-stack/ipv4-l3-protocol.h	Tue Apr 21 19:04:32 2009 +0100
     2.2 +++ b/src/internet-stack/ipv4-l3-protocol.h	Thu Apr 23 15:48:35 2009 +0100
     2.3 @@ -206,6 +206,14 @@
     2.4                 Ptr<Packet> packet,
     2.5                 Ipv4RoutingProtocol::RouteReplyCallback routeReply);
     2.6  
     2.7 +  void SendRealOutForwarding (bool found,
     2.8 +                              Ipv4Route const &route,
     2.9 +                              Ptr<Packet> packet,
    2.10 +                              Ipv4Header const &ipHeader);
    2.11 +  void SendRealOutOutgoing (bool found,
    2.12 +                            Ipv4Route const &route,
    2.13 +                            Ptr<Packet> packet,
    2.14 +                            Ipv4Header const &ipHeader);
    2.15    void SendRealOut (bool found,
    2.16                      Ipv4Route const &route,
    2.17                      Ptr<Packet> packet,
    2.18 @@ -233,6 +241,11 @@
    2.19    bool m_calcChecksum;
    2.20    uint16_t m_identification;
    2.21    Ptr<Node> m_node;
    2.22 +
    2.23 +  TracedCallback<const Ipv4Header &, Ptr<const Packet>, uint32_t> m_sendOutgoingTrace;
    2.24 +  TracedCallback<const Ipv4Header &, Ptr<const Packet>, uint32_t> m_forwardTrace;
    2.25 +  TracedCallback<const Ipv4Header &, Ptr<const Packet>, uint32_t> m_forwardUpTrace;
    2.26 +
    2.27    TracedCallback<Ptr<const Packet>, uint32_t> m_txTrace;
    2.28    TracedCallback<Ptr<const Packet>, uint32_t> m_rxTrace;
    2.29    TracedCallback<Ptr<const Packet> > m_dropTrace;