src/node/ipv4.h
changeset 345 47b41507a45a
parent 293 007bc9e735f3
child 406 c3f72daa6430
--- a/src/node/ipv4.h	Sun Mar 18 19:31:32 2007 +0100
+++ b/src/node/ipv4.h	Sun Mar 18 14:06:51 2007 -0700
@@ -24,6 +24,8 @@
 
 #include <list>
 #include <stdint.h>
+#include "ns3/callback-trace-source.h"
+#include "ns3/array-trace-resolver.h"
 #include "ipv4-address.h"
 #include "l3-protocol.h"
 
@@ -36,6 +38,8 @@
 class Ipv4Header;
 class Ipv4Route;
 class Node;
+class TraceResolver;
+class TraceContext;
 
 
 /**
@@ -46,9 +50,19 @@
 public:
   static const uint16_t PROT_NUMBER;
 
+  enum TraceType {
+    TX,
+    RX,
+    DROP,
+    INTERFACES,
+  };
+  typedef ArrayTraceResolver<Ipv4Interface>::Index InterfaceIndex;
+
   Ipv4(Node *node);
   virtual ~Ipv4 ();
 
+  virtual TraceResolver *CreateTraceResolver (TraceContext const &context);
+
   void SetDefaultTtl (uint8_t ttl);
     
   /* add route to host dest through host nextHop 
@@ -88,7 +102,7 @@
   
   uint32_t AddInterface (Ipv4Interface *interface);
   Ipv4Interface * GetInterface (uint32_t i);
-  uint32_t GetNInterfaces (void) const;
+  uint32_t GetNInterfaces (void);
   Ipv4Interface *FindInterfaceForDevice (NetDevice const*device);
   
 
@@ -109,6 +123,7 @@
   void SendRealOut (Packet const &packet, Ipv4Header const &ip, Ipv4Route const &route);
   bool Forwarding (Packet const &packet, Ipv4Header &ipHeader, NetDevice &device);
   void ForwardUp (Packet p, Ipv4Header const&ip);
+  TraceResolver *InterfacesCreateTraceResolver (TraceContext const &context);
 
   typedef std::list<Ipv4Interface*> Ipv4InterfaceList;
   typedef std::list<Ipv4Route *> HostRoutes;
@@ -126,6 +141,9 @@
   NetworkRoutes m_networkRoutes;
   Ipv4Route *m_defaultRoute;
   Node *m_node;
+  CallbackTraceSource<Packet const &> m_txTrace;
+  CallbackTraceSource<Packet const &> m_rxTrace;
+  CallbackTraceSource<Packet const &> m_dropTrace;
 };
 
 } // Namespace ns3