27 lines
565 B
C
27 lines
565 B
C
#pragma once
|
|
#include "sys/types.h"
|
|
#include "sys/net/netdev.h"
|
|
|
|
#define ETHERTYPE_ARP 0x0806
|
|
#define ETHERTYPE_IPV4 0x0800
|
|
|
|
struct eth_frame {
|
|
uint8_t dst_mac[6];
|
|
uint8_t src_mac[6];
|
|
uint16_t ethertype;
|
|
char payload[];
|
|
} __attribute__((packed));
|
|
|
|
// Packet queue entry
|
|
struct ethq {
|
|
struct ethq *next;
|
|
struct netdev *dev;
|
|
char data[];
|
|
};
|
|
|
|
// Ethernet queue stuff
|
|
void ethq_handle(void);
|
|
|
|
// TODO: replace (void *) with (struct netdev *)
|
|
void eth_handle_frame(struct netdev *dev, struct eth_frame *frame, size_t packet_size);
|