src/internet-node/arp-l3-protocol.cc
changeset 1176 4894ea885c0f
parent 1167 2cb083ff04c6
child 1177 c7bf3cf186ac
--- a/src/internet-node/arp-l3-protocol.cc	Tue Jul 31 07:54:26 2007 +0200
+++ b/src/internet-node/arp-l3-protocol.cc	Tue Jul 31 09:09:31 2007 +0200
@@ -24,11 +24,11 @@
 #include "ns3/node.h"
 #include "ns3/net-device.h"
 
+#include "ipv4-l3-protocol.h"
 #include "arp-l3-protocol.h"
 #include "arp-header.h"
 #include "arp-cache.h"
 #include "ipv4-interface.h"
-#include "ipv4-private.h"
 
 NS_DEBUG_COMPONENT_DEFINE ("ArpL3Protocol");
 
@@ -37,8 +37,7 @@
 const uint16_t ArpL3Protocol::PROT_NUMBER = 0x0806;
 
 ArpL3Protocol::ArpL3Protocol (Ptr<Node> node)
-  : L3Protocol (PROT_NUMBER, 0/* XXX: correct version number ? */ ),
-    m_node (node)
+  : m_node (node)
 {}
 
 ArpL3Protocol::~ArpL3Protocol ()
@@ -53,7 +52,7 @@
     }
   m_cacheList.clear ();
   m_node = 0;
-  L3Protocol::DoDispose ();
+  Object::DoDispose ();
 }
 
 TraceResolver *
@@ -72,7 +71,7 @@
 	  return *i;
 	}
     }
-  Ptr<Ipv4Private> ipv4 = m_node->QueryInterface<Ipv4Private> (Ipv4Private::iid);
+  Ptr<Ipv4L3Protocol> ipv4 = m_node->QueryInterface<Ipv4L3Protocol> (Ipv4L3Protocol::iid);
   Ipv4Interface *interface = ipv4->FindInterfaceForDevice (device);
   ArpCache * cache = new ArpCache (device, interface);
   NS_ASSERT (device->IsBroadcast ());
@@ -82,10 +81,11 @@
 }
 
 void 
-ArpL3Protocol::Receive(Packet& packet, Ptr<NetDevice> device)
+ArpL3Protocol::Receive(const Packet& p, uint16_t protocol, Ptr<NetDevice> device)
 {
   ArpCache *cache = FindCache (device);
   ArpHeader arp;
+  Packet packet = p;
   packet.RemoveHeader (arp);
   
   NS_DEBUG ("ARP: received "<< (arp.IsRequest ()? "request" : "reply") <<