src/node/net-device.cc
changeset 451 3fe2c883cb47
parent 445 10cd9049a0ad
child 452 e4712748b5a0
--- a/src/node/net-device.cc	Mon Apr 30 10:24:43 2007 +0200
+++ b/src/node/net-device.cc	Mon Apr 30 10:37:22 2007 +0200
@@ -179,19 +179,15 @@
 bool
 NetDevice::ForwardUp (Packet& packet)
 {
+  bool retval = false;
   LlcSnapHeader llc;
   packet.Peek (llc);
   packet.Remove (llc);
-  if (GetNode()->GetL3Demux() != 0)
+  if (!m_receiveCallback.IsNull ())
     {
-      L3Protocol *target = GetNode()->GetL3Demux()->Lookup(llc.GetType ());
-      if (target != 0) 
-        {
-          target->Receive(packet, *this);
-          return true;
-        }
+      retval = m_receiveCallback (this, packet, llc.GetType ());
     }
-  return false;
+  return retval;
 }
 
 void 
@@ -226,4 +222,10 @@
   return DoNeedsArp ();
 }
 
+void 
+NetDevice::SetReceiveCallback (Callback<bool,NetDevice *,const Packet &,uint16_t> cb)
+{
+  m_receiveCallback = cb;
+}
+
 }; // namespace ns3