#include "includes.h"
Funciones | |
void | arp_generate_packet (BYTE *rxtx_buffer, BYTE *dest_mac, BYTE *dest_ip) |
Genera un paquete ARP para un determinado IP y MAC. | |
void | arp_send_request (BYTE *rxtx_buffer, BYTE *dest_ip) |
Envia un paquete ARP Who_is preguntando por una IP. | |
void | arp_send_reply (BYTE *rxtx_buffer) |
void | ARP_init (void) |
inicializa banderas de la maquina de estados de ARP evita que se ejecute por error (p.e on_process=0) | |
void | ARP_start (IP_ADDR strt_ip) |
arranca la maquina de estados de ARP | |
void | ARP_restart (void) |
void | ARP_step (void) |
ejecuta un paso de la maquina de estados de ARP | |
void | ARP_error (void) |
lleva a ARP a un estado de error lo utilizan los procesos externos para "notificar" de errores (p.e. timeout) |
Address Resolution Protocol (ARP) is the method for finding a host's hardware address when only its network layer address is known. Due to the overwhelming prevalence of IPv4 and Ethernet, ARP is primarily used to translate IP addresses to Ethernet MAC addresses. It is also used for IP over other LAN technologies, such as Token Ring, FDDI, or IEEE 802.11, and for IP over ATM.
ARP is used in four cases of two hosts communicating:
void ARP_error | ( | void | ) |
lleva a ARP a un estado de error
lo utilizan los procesos externos para "notificar" de errores (p.e. timeout)
Genera un paquete ARP para un determinado IP y MAC.
rxtx_buffer | un puntero al buffer generico de Rx/Tx. | |
dest_mac | MAC de destino del paq. ARP | |
dest_ip | IP de destino del paq. ARP |
hardware type = ethernet (0x0001)
protocol = IP (0x0800)
hardware length = 0x06
protocol length = 0x04
rellena ARP dest. y source MAC
setup arp destination and source ip address
void ARP_init | ( | void | ) |
inicializa banderas de la maquina de estados de ARP
evita que se ejecute por error (p.e on_process=0)
void ARP_restart | ( | void | ) |
void arp_send_reply | ( | BYTE * | rxtx_buffer | ) |
Se utiliza inmediatamente despues de recibido un paquete ARP con el puntero apuntando al buffer del paquete
genera el ethernet header
cambia el tipo de paquete a reply
envia el paquete
Envia un paquete ARP Who_is preguntando por una IP.
rxtx_buffer | un puntero al buffer generico de Rx/Tx. | |
dest_ip | IP cuya MAC queremos averiguar |
genera el ethernet header
genera paquete ARP de REQUEST
set arp opcode is request
envia el paquete a la red
void ARP_start | ( | IP_ADDR | strt_ip | ) |
arranca la maquina de estados de ARP
strt_ip | IP del que se buscara MAC |
void ARP_step | ( | void | ) |
ejecuta un paso de la maquina de estados de ARP