--- 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