#include "reg51.h"
#include "netdev.h"
#include "eth.h"
+#include "arp.h"
#include "ip.h"
#include "udp.h"
#include "elp.h"
// Vemos que protocolo transporta
switch (eth_proto)
{
- case ETH_ARP: // TODO: implementar ARP!
- goto drop; // Tiramos el paquete
+ case ETH_ARP:
+ // Obtenemos paquete ARP
+ if (!arp_read_packet) // No es un paquete soportado
+ goto drop; // Tiramos el paquete
+
+ // Terminamos recepción
+ netdev_recv_end();
+
+ // Respondemos
+ netdev_send_start();
+ eth_write_frame_header();
+ arp_write_packet();
+ netdev_send_end(ETH_HEADER_SIZE + ARP_PACKET_SIZE);
+
+ // Seguimos viaje
+ continue;
case ETH_IP:
// Parseamos cabecera IP