diff --git a/Kernel/Net/NetworkAdapter.cpp b/Kernel/Net/NetworkAdapter.cpp index cc69f75859..c07d00c53b 100644 --- a/Kernel/Net/NetworkAdapter.cpp +++ b/Kernel/Net/NetworkAdapter.cpp @@ -88,6 +88,8 @@ void NetworkAdapter::did_receive(const u8* data, int length) m_packets_in++; m_bytes_in += length; m_packet_queue.append(KBuffer::copy(data, length)); + if (m_on_receive) + m_on_receive(); } Optional NetworkAdapter::dequeue_packet() diff --git a/Kernel/Net/NetworkAdapter.h b/Kernel/Net/NetworkAdapter.h index 06ab6c740e..2eec468452 100644 --- a/Kernel/Net/NetworkAdapter.h +++ b/Kernel/Net/NetworkAdapter.h @@ -45,6 +45,8 @@ public: u32 packets_out() const { return m_packets_out; } u32 bytes_out() const { return m_bytes_out; } + void set_on_receive(Function on_receive) { m_on_receive = move(on_receive); } + protected: NetworkAdapter(); void set_interface_name(const StringView& basename); @@ -63,4 +65,5 @@ private: u32 m_bytes_in { 0 }; u32 m_packets_out { 0 }; u32 m_bytes_out { 0 }; + Function m_on_receive; };