// vim: set et sw=4 sts=4 :
+#include "debug.h"
#include "netdev.h"
#include "eth.h"
{
/* variable para iterar */
byte i;
+ netdev_read_start(ETH_HEADER_SIZE);
/* descarto MAC de destino, acepto broadcasts */
for (i = 0; i < ETH_ADDR_SIZE; ++i)
- netdev_recv_byte();
+ netdev_read_byte();
/* obtenemos MAC de origen */
for (i = 0; i < ETH_ADDR_SIZE; ++i)
- eth_addr_remote[i] = netdev_recv_byte();
+ eth_addr_remote[i] = netdev_read_byte();
/* obtenemos tipo de protocolo transportado por el frame, (sólo
* aceptamos IP y ARP) */
- switch (netdev_recv_word())
+ switch (netdev_read_word())
{
case IP:
eth_proto = ETH_IP;
eth_proto = ETH_ARP;
break;
default:
+ netdev_read_end();
return false; /* drop */
}
+ netdev_read_end();
return true;
}
{
/* variable para iterar */
byte i;
+ netdev_write_start(ETH_HEADER_SIZE);
/* mandamos como MAC de destino la remota */
for (i = 0; i < ETH_ADDR_SIZE; ++i)
- netdev_send_byte(eth_addr_remote[i]);
+ netdev_write_byte(eth_addr_remote[i]);
/* y como fuente la nuestra */
for (i = 0; i < ETH_ADDR_SIZE; ++i)
- netdev_send_byte(eth_addr_local[i]);
+ netdev_write_byte(eth_addr_local[i]);
/* escribimos el tipo de paquete que transporta el frame */
- netdev_send_word((eth_proto == ETH_IP) ? IP : ARP);
+ netdev_write_word((eth_proto == ETH_IP) ? IP : ARP);
+ netdev_write_end();
}