Redes.IPv4.ICMP
Class MensajeICMP

java.lang.Object
  extended byRedes.Buffer
      extended byRedes.IPv4.ICMP.MensajeICMP

public class MensajeICMP
extends Buffer

Mensaje ICMP


Field Summary
private static int numEcho
          Codigo 'identificador' para los mensajes 'Echo'
 
Fields inherited from class Redes.Buffer
 
Constructor Summary
MensajeICMP(Buffer buffer)
          Constructor de copia
MensajeICMP(Buffer buffer, int tipo, int codigo)
          Crea un mensaje ICMP de tipo y codigo dados, pero rellenando el campo de datos con el buffer especificado
MensajeICMP(int tipo, int codigo, DatagramaIPv4 datagrama)
          Constructor
MensajeICMP(int tipo, int codigo, DatagramaIPv4 datagrama, DireccionIPv4 direccion)
          Constructor para mensajes de tipo ICMP Redirect, donde hace falta la direccion del Gateway
 
Method Summary
 int CalculaSumaDeComprobacion()
          Calcula la suma de comprobacion
static java.lang.String Descripcion(int tipo, int codigo)
          Devuelve la descripcion de un tipo de mensaje ICMP
private  boolean DestinationUnreachable(int codigo, DatagramaIPv4 datagrama)
          Crea un mensaje de tipo 'Destino Inalcanzable' con el codigo indicado
private  boolean Echo(Buffer buffer)
          Crea un mensaje de tipo 'Echo'
private  boolean EchoReply(MensajeICMP buffer)
          Crea un mensaje de tipo 'Echo Reply'
 int getChecksum()
          Devuelve la el valor de la suma de comprobacion
 int getCode()
          Devuelve el valor del campo codigo de la cabecera
(package private)  DireccionIPv4 getRedirectGateway()
          Devuelve la direccion del gateway en un mensaje ICMP Redirect
 int getType()
          Recupera el valor del campo 'tipo'
private  boolean Redirect(int codigo, DatagramaIPv4 datagrama, DireccionIPv4 gateway)
          Crea un mensaje de tipo 'Redirect' con el codigo indicado
 void setChecksum(int suma)
          Pone un valor en el campo 'checksum' (suma de comprobacion)
 void setCode(int codigo)
          Pone un valor en el campo 'codigo' de la cabecera ICMP
 void setRedirectGateway(DireccionIPv4 gateway)
          Pone la direccion especificada en el campo reservado para el gateway en un mensaje ICMP Redirect
 void setType(int tipo)
          Pone un valor en el campo 'tipo' de la cabecera ICMP
private  boolean TimeExceeded(int codigo, DatagramaIPv4 datagrama)
          Crea un mensaje de tipo 'Time Exceeded' con el codigo indicado
 
Methods inherited from class Redes.Buffer
Contenido, getBit, getByte, getByteH, getByteL, imprimible, Redimensiona, setBit, setByte, setByteH, setByteL, Tam
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

numEcho

private static int numEcho
Codigo 'identificador' para los mensajes 'Echo'

Constructor Detail

MensajeICMP

public MensajeICMP(int tipo,
                   int codigo,
                   DatagramaIPv4 datagrama)
Constructor

Parameters:
tipo - Tipo de mensaje ICMP
codigo - Codigo del mensaje
datagrama - Datagrama que provoca el envio del mensaje ICMP

MensajeICMP

public MensajeICMP(Buffer buffer)
Constructor de copia

Parameters:
buffer - Buffer a copiar

MensajeICMP

public MensajeICMP(Buffer buffer,
                   int tipo,
                   int codigo)
Crea un mensaje ICMP de tipo y codigo dados, pero rellenando el campo de datos con el buffer especificado

Parameters:
tipo - Tipo de mensaje
codigo - Codigo del mensaje
buffer - Buffer de datos

MensajeICMP

public MensajeICMP(int tipo,
                   int codigo,
                   DatagramaIPv4 datagrama,
                   DireccionIPv4 direccion)
Constructor para mensajes de tipo ICMP Redirect, donde hace falta la direccion del Gateway

Parameters:
tipo - Tipo de mensaje ICMP
codigo - Codigo del mensaje
datagrama - Datagrama que provoca el envio del mensaje ICMP
direccion - Direccion IP del gateway
Method Detail

setType

public void setType(int tipo)
Pone un valor en el campo 'tipo' de la cabecera ICMP

Parameters:
tipo - Tipo de mensaje

getType

public int getType()
Recupera el valor del campo 'tipo'

Returns:
Tipo de mensaje ICMP

setCode

public void setCode(int codigo)
Pone un valor en el campo 'codigo' de la cabecera ICMP

Parameters:
codigo - Codigo del mensaje

getCode

public int getCode()
Devuelve el valor del campo codigo de la cabecera

Returns:
Codigo del mensaje ICMP

setChecksum

public void setChecksum(int suma)
Pone un valor en el campo 'checksum' (suma de comprobacion)

Parameters:
suma - Suma de comprobacion

getChecksum

public int getChecksum()
Devuelve la el valor de la suma de comprobacion

Returns:
Suma de comprobacion

CalculaSumaDeComprobacion

public int CalculaSumaDeComprobacion()
Calcula la suma de comprobacion

Returns:
Suma de comprobacion

Descripcion

public static java.lang.String Descripcion(int tipo,
                                           int codigo)
Devuelve la descripcion de un tipo de mensaje ICMP

Parameters:
tipo - Tipo de mensaje
codigo - Codigo del mensaje
Returns:
Cadena de texto explicativa del proposito del mensaje ICMP

DestinationUnreachable

private boolean DestinationUnreachable(int codigo,
                                       DatagramaIPv4 datagrama)
Crea un mensaje de tipo 'Destino Inalcanzable' con el codigo indicado

Parameters:
codigo - Codigo del mensaje
datagrama - Datagrama que provoca el envio del mensaje ICMP
Returns:
Cierto, si se ha produdido algun error

Redirect

private boolean Redirect(int codigo,
                         DatagramaIPv4 datagrama,
                         DireccionIPv4 gateway)
Crea un mensaje de tipo 'Redirect' con el codigo indicado

Parameters:
codigo - Codigo del mensaje
datagrama - Datagrama que provoca el envio del mensaje ICMP
gateway - Direccion del gateway que se deberia usar en los siguientes envios
Returns:
Cierto, si se ha produdido algun error

setRedirectGateway

public void setRedirectGateway(DireccionIPv4 gateway)
Pone la direccion especificada en el campo reservado para el gateway en un mensaje ICMP Redirect

Parameters:
gateway - Direccion del gateway

getRedirectGateway

DireccionIPv4 getRedirectGateway()
Devuelve la direccion del gateway en un mensaje ICMP Redirect

Returns:
Direccion del campo 'gateway' del mensaje ICMP

TimeExceeded

private boolean TimeExceeded(int codigo,
                             DatagramaIPv4 datagrama)
Crea un mensaje de tipo 'Time Exceeded' con el codigo indicado

Parameters:
codigo - Codigo del mensaje
datagrama - Datagrama que provoca el envio del mensaje ICMP
Returns:
Cierto, si se ha produdido algun error

Echo

private boolean Echo(Buffer buffer)
Crea un mensaje de tipo 'Echo'

Parameters:
buffer - Datos del cuerpo del mensaje
Returns:
Cierto, si se ha produdido algun error (siempre devuelve false)

EchoReply

private boolean EchoReply(MensajeICMP buffer)
Crea un mensaje de tipo 'Echo Reply'

Parameters:
buffer - Mensaje ICMP al que vamos a responder
Returns:
Cierto, si se ha produdido algun error (siempre devuelve false)