Referencia del Archivo icmp.h

Declaracion del protocolo ICMP.
. Más...

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


Definiciones

#define ICMP_TYPE_ECHOREPLY_V   0
#define ICMP_TYPE_ECHOREQUEST_V   8
#define ICMP_PACKET_LEN   40
#define ICMP_TYPE_P   0x22
#define ICMP_CODE_P   0x23
#define ICMP_CHECKSUM_H_P   0x24
#define ICMP_CHECKSUM_L_P   0x25
#define ICMP_IDENTIFIER_H_P   0x26
#define ICMP_IDENTIFIER_L_P   0x27
#define ICMP_SEQUENCE_H_P   0x28
#define ICMP_SEQUENCE_L_P   0x29
#define ICMP_DATA_P   0x2A

Funciones

void ICMP_step (void)
 ejecuta un paso de la maquina de estados de ICMP
void ICMP_init (void)
 inicializa banderas de la maquina de estados de ICMP
evita que se ejecute por error (p.e on_process=0)
void ICMP_start (BYTE requester, IP_ADDR strt_ip)
 arranca la maquina de estados de ICMP
BYTE icmp_send_reply (BYTE *rxtx_buffer, BYTE *dest_mac, BYTE *dest_ip)
 Envio de respuesta a un pedido ICMP
.
void icmp_send_request (BYTE *rxtx_buffer, BYTE *dest_mac, BYTE *dest_ip)
 Envio de un pedido ICMP
.
BYTE icmp_ping (BYTE *rxtx_buffer, BYTE *dest_mac, BYTE *dest_ip)
 Realiza el ping a un servidor para ver si esta accesible
.
void ICMP_error (void)
 lleva a ICMP a un estado de error
lo utilizan los procesos externos para "notificar" de errores (p.e. timeout)

Descripción detallada

Declaracion del protocolo ICMP.
.

Se definen las posiciones de los campos y algunos valores tipicos.
Se definen funciones para PING, REPLY y REQUEST.

The Internet Control Message Protocol (ICMP) is one of the core protocols of the
Internet protocol suite. It is chiefly used by networked computers'
operating systems to send error messages---indicating, for instance,
that a requested service is not available or that a host or router could not be reached.

ICMP differs in purpose from TCP and UDP in that it is usually not used directly
by user network applications. One exception is the ping tool,
which sends ICMP Echo Request messages (and receives Echo Response messages)
to determine whether a host is reachable and how long packets take to get to and from that host.


Documentación de las definiciones

#define ICMP_CHECKSUM_H_P   0x24

#define ICMP_CHECKSUM_L_P   0x25

#define ICMP_CODE_P   0x23

#define ICMP_DATA_P   0x2A

#define ICMP_IDENTIFIER_H_P   0x26

#define ICMP_IDENTIFIER_L_P   0x27

#define ICMP_PACKET_LEN   40

#define ICMP_SEQUENCE_H_P   0x28

#define ICMP_SEQUENCE_L_P   0x29

#define ICMP_TYPE_ECHOREPLY_V   0

#define ICMP_TYPE_ECHOREQUEST_V   8

#define ICMP_TYPE_P   0x22


Documentación de las funciones

void ICMP_error ( void   ) 

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

a esta rutina la llama cualquiera que produzca un error sobre ICMP

void ICMP_init ( void   ) 

inicializa banderas de la maquina de estados de ICMP
evita que se ejecute por error (p.e on_process=0)

BYTE icmp_ping ( BYTE rxtx_buffer,
BYTE dest_mac,
BYTE dest_ip 
)

Realiza el ping a un servidor para ver si esta accesible
.

Utiliza ARP para descubrir la MAC del IP y guarda la MAC en dest_mac.
Envia un request y espera respuesta.
Devuelve true/false si se encuentra o no el servidor.

Parámetros:
rxtx_buffer el buffer que se utilizara para generar el paquete.
dest_mac puntero a MAC address de destino.
dest_ip IP de destino del paquete

BYTE icmp_send_reply ( BYTE rxtx_buffer,
BYTE dest_mac,
BYTE dest_ip 
)

Envio de respuesta a un pedido ICMP
.

Parámetros:
rxtx_buffer el buffer que se utilizara para generar el paquete.
dest_mac MAC address de destino.
dest_ip IP de destino del paquete

check protocol is icmp or not?

check icmp packet type is echo request or not?

set ethernet header

generate ip header and checksum

generate icmp packet

send packet to ethernet media

Gráfico de llamadas para esta función:

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

Envio de un pedido ICMP
.

Parámetros:
rxtx_buffer el buffer que se utilizara para generar el paquete.
dest_mac MAC address de destino.
dest_ip IP de destino del paquete

set ethernet header

generate ip header and checksum

generate icmp packet and checksum

send packet to ethernet media

Gráfico de llamadas para esta función:

void ICMP_start ( BYTE  requester,
IP_ADDR  strt_ip 
)

arranca la maquina de estados de ICMP

Parámetros:
requester informacion del proceso que requiere ICMP
strt_ip IP al que se hara el ping

void ICMP_step ( void   ) 

ejecuta un paso de la maquina de estados de ICMP

***** 0-LLAMO A ARP: **********************

llamada a ARP

marco siguiente paso

***** 1-LLEGA RESPUESTA DE ARP: ***********

ademas de enviar request tengo q prender timeout
siempre tengo que chequear que el buffer este
libre antes de mandar algo por lo menos por el momento
(con mas ram no importa)

***** 2-LLEGA ICMP REPLY, FINALIZO: ******

termino el proceso y aviso al requester

***** 3-MANEJO DE ERRORES: ***************

ARP me mando ak, que significa que murio por su timeout
o me mando mi propio timeout
que hacemos???
mato y notifico al requester

Gráfico de llamadas para esta función:


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