Class ErrorMessage

java.lang.Object
org.opennms.protocols.icmp.ICMPHeader
org.opennms.protocols.icmp.ErrorMessage

public class ErrorMessage extends ICMPHeader
Defines the default error handler object for processing ICMP error messages. All error messages follow the same format. The first 8 bytes is the ICMP header. Immediantly after the ICMP header is the IP packet in error, including any option data. After the IP header is the first 8 bytes of protocol data. This is enough to hold a UDP header or the first 8 bytes of a TCP header.
Author:
Brian Weaver
  • Constructor Details

    • ErrorMessage

      protected ErrorMessage(byte type, byte code)
      Creates a new ICMP Error Message object.
      Parameters:
      type - The ICMP type.
      code - The specific code for the message.
    • ErrorMessage

      public ErrorMessage(byte[] buf, int offset)
      Creates a new ICMP timestamp reply from the spcified data at the specific offset.
      Parameters:
      buf - The buffer containing the data.
      offset - The start of the icmp data.
      Throws:
      IndexOutOfBoundsException - Thrown if there is not sufficent data in the buffer.
  • Method Details

    • loadFromBuffer

      public final int loadFromBuffer(byte[] buf, int offset)
      Reads the ICMP Address Mask Reqeust from the specified buffer and sets the internal fields equal to the data. If the buffer does not have sufficent data to restore the header then an IndexOutOfBoundsException is thrown by the method. If the buffer does not contain an address mask reqeust then an IllegalArgumentException is thrown.
      Overrides:
      loadFromBuffer in class ICMPHeader
      Parameters:
      buf - The buffer to read the data from.
      offset - The offset to start reading data.
      Returns:
      The new offset after reading the data.
      Throws:
      IndexOutOfBoundsException - Thrown if there is not sufficent data in the buffer.
    • getIPHeader

      public final IPHeader getIPHeader()
      Used to access the IP Header that caused the ICMP error message to be generated.
      Returns:
      The IP Header in error.
    • setIPHeader

      protected void setIPHeader(IPHeader hdr)
      Sets the IP header in error.
      Parameters:
      hdr - The IP header in error
    • getProtocolData

      public final byte[] getProtocolData()
      Retreives the 8 bytes of protocol data that caused the error.
      Returns:
      The first 8 bytes of the packet in error.
    • setProtocolData

      protected void setProtocolData(byte[] pd)
      Sets the protocol data that caused the error.
      Parameters:
      pd - The 8 bytes of protocol data.
      Throws:
      IndexOutOfBoundsException - Thrown when pd.length is less than 8.
      IllegalArgumentException - Thrown when pd.length is greater than 8.