1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 13:28:11 +00:00
serenity/Kernel/NetworkAdapter.h
Andreas Kling 318b01e055 Kernel: Bring up enough networking code that we can respond to ARP requests.
This is all pretty rickety but we can now respond to "arping" from the host
while running inside QEMU. Very cool. :^)
2019-03-11 23:21:38 +01:00

34 lines
891 B
C++

#pragma once
#include <AK/ByteBuffer.h>
#include <AK/SinglyLinkedList.h>
#include <AK/Types.h>
#include <Kernel/MACAddress.h>
#include <Kernel/IPv4Address.h>
#include <Kernel/ARPPacket.h>
class NetworkAdapter {
public:
virtual ~NetworkAdapter();
virtual const char* class_name() const = 0;
MACAddress mac_address() { return m_mac_address; }
IPv4Address ipv4_address() const { return m_ipv4_address; }
void set_ipv4_address(const IPv4Address&);
void send(const MACAddress&, const ARPPacket&);
ByteBuffer dequeue_packet();
protected:
NetworkAdapter();
void set_mac_address(const MACAddress& mac_address) { m_mac_address = mac_address; }
virtual void send_raw(const byte*, int) = 0;
void did_receive(const byte*, int);
private:
MACAddress m_mac_address;
IPv4Address m_ipv4_address;
SinglyLinkedList<ByteBuffer> m_packet_queue;
};