Add new SendOutgoing, Forward, and ForwardUp trace sources.
Rx and Tx are too low level.
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;