Referencia del Archivo arp.h

Declaracion de constantes de ARP. Más...

Gráfico de los archivos que directa o indirectamente incluyen a este archivo:


Definiciones

#define ARP_PACKET_LEN   28
#define ARP_OPCODE_REQUEST_V   0x0001
#define ARP_OPCODE_REQUEST_H_V   0x00
#define ARP_OPCODE_REQUEST_L_V   0x01
#define ARP_OPCODE_REPLY_V   0x0002
#define ARP_OPCODE_REPLY_H_V   0x00
#define ARP_OPCODE_REPLY_L_V   0x02
#define ARP_HARDWARE_TYPE_H_V   0x00
#define ARP_HARDWARE_TYPE_L_V   0x01
#define ARP_PROTOCOL_H_V   0x08
#define ARP_PROTOCOL_L_V   0x00
#define ARP_HARDWARE_SIZE_V   0x06
#define ARP_PROTOCOL_SIZE_V   0x04
#define ARP_HARDWARE_TYPE_H_P   0x0E
#define ARP_HARDWARE_TYPE_L_P   0x0F
#define ARP_PROTOCOL_H_P   0x10
#define ARP_PROTOCOL_L_P   0x11
#define ARP_HARDWARE_SIZE_P   0x12
#define ARP_PROTOCOL_SIZE_P   0x13
#define ARP_OPCODE_H_P   0x14
#define ARP_OPCODE_L_P   0x15
#define ARP_SRC_MAC_P   0x16
#define ARP_SRC_IP_P   0x1C
#define ARP_DST_MAC_P   0x20
#define ARP_DST_IP_P   0x26

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)
BYTE arp_who_is (BYTE *rxtx_buffer, BYTE *dest_mac, BYTE *dest_ip)
 averigua la MAC correspondiente a un IP
void ARP_step (void)
 ejecuta un paso de la maquina de estados de ARP
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_error (void)
 lleva a ARP a un estado de error
lo utilizan los procesos externos para "notificar" de errores (p.e. timeout)

Descripción detallada

Declaracion de constantes de ARP.

Se definen los offsets de los campos de ARP y los valores de constantes para dichos campos.
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:


Documentación de las definiciones

#define ARP_DST_IP_P   0x26

#define ARP_DST_MAC_P   0x20

#define ARP_HARDWARE_SIZE_P   0x12

#define ARP_HARDWARE_SIZE_V   0x06

#define ARP_HARDWARE_TYPE_H_P   0x0E

#define ARP_HARDWARE_TYPE_H_V   0x00

#define ARP_HARDWARE_TYPE_L_P   0x0F

#define ARP_HARDWARE_TYPE_L_V   0x01

#define ARP_OPCODE_H_P   0x14

#define ARP_OPCODE_L_P   0x15

#define ARP_OPCODE_REPLY_H_V   0x00

#define ARP_OPCODE_REPLY_L_V   0x02

#define ARP_OPCODE_REPLY_V   0x0002

#define ARP_OPCODE_REQUEST_H_V   0x00

#define ARP_OPCODE_REQUEST_L_V   0x01

#define ARP_OPCODE_REQUEST_V   0x0001

#define ARP_PACKET_LEN   28

#define ARP_PROTOCOL_H_P   0x10

#define ARP_PROTOCOL_H_V   0x08

#define ARP_PROTOCOL_L_P   0x11

#define ARP_PROTOCOL_L_V   0x00

#define ARP_PROTOCOL_SIZE_P   0x13

#define ARP_PROTOCOL_SIZE_V   0x04

#define ARP_SRC_IP_P   0x1C

#define ARP_SRC_MAC_P   0x16


Documentación de las funciones

void ARP_error ( void   ) 

lleva a ARP a un estado de error
lo utilizan los procesos externos para "notificar" de errores (p.e. timeout)

void arp_generate_packet ( BYTE rxtx_buffer,
BYTE dest_mac,
BYTE dest_ip 
)

Genera un paquete ARP para un determinado IP y MAC.

Parámetros:
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_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

Gráfico de llamadas para esta función:

void arp_send_request ( BYTE rxtx_buffer,
BYTE dest_ip 
)

Envia un paquete ARP Who_is preguntando por una IP.

Parámetros:
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

Gráfico de llamadas para esta función:

void ARP_start ( IP_ADDR  strt_ip  ) 

arranca la maquina de estados de ARP

Parámetros:
strt_ip IP del que se buscara MAC

void ARP_step ( void   ) 

ejecuta un paso de la maquina de estados de ARP

Gráfico de llamadas para esta función:

BYTE arp_who_is ( BYTE rxtx_buffer,
BYTE dest_mac,
BYTE dest_ip 
)

averigua la MAC correspondiente a un IP

Parámetros:
rxtx_buffer un puntero al buffer generico de Rx/Tx.
dest_mac puntero al lugar donde se guardara la MAC averiguada
dest_ip MAC de destino del paq. ARP de respuesta


Generado el Wed Jul 2 09:20:44 2008 para TCP/IP por  doxygen 1.5.6