org.opennms.protocols.icmp
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.
- Version:
- 0.1
- Author:
- Brian Weaver
Fields inherited from class org.opennms.protocols.icmp.ICMPHeader |
CODE_BAD_IP_HEADER, CODE_COMMUNICATIONS_ADMIN_PROHIBITIED, CODE_DESTINATION_HOST_ADMIN_PROHIBITED, CODE_DESTINATION_HOST_UNKNOWN, CODE_DESTINATION_NETWORK_ADMIN_PROHIBITED, CODE_DESTINATION_NETWORK_UNKNOWN, CODE_FRAGMENTATION_NEEDED, CODE_HOST_PRECEDENCE_VIOLATION, CODE_HOST_UNREACHABLE, CODE_HOST_UNREACHABLE_FOR_TOS, CODE_NETWORK_UNREACHABLE, CODE_NETWORK_UNREACHABLE_FOR_TOS, CODE_PORT_UNREACHABLE, CODE_PRECEDENCE_CUTOFF_IN_EFFECT, CODE_PROTOCOL_UNREACHABLE, CODE_REDIRECT_FOR_HOST, CODE_REDIRECT_FOR_NETWORK, CODE_REDIRECT_FOR_TYPE_OF_SERVICE_AND_HOST, CODE_REDIRECT_FOR_TYPE_OF_SERVICE_AND_NETWORK, CODE_REQUIRED_OPTION_MISSING, CODE_SOURCE_HOST_ISOLATED, CODE_SOURCE_ROUTE_FAILED, CODE_TTL_EQ_ZERO_IN_REASSEMBLY, CODE_TTL_EQ_ZERO_IN_TRANSIT, m_checksum, m_code, m_ident, m_sequence, m_type, sm_seq, TYPE_ADDRESS_MASK_REPLY, TYPE_ADDRESS_MASK_REQUEST, TYPE_DESTINATION_UNREACHABLE, TYPE_ECHO_REPLY, TYPE_ECHO_REQUEST, TYPE_INFORMATION_REPLY, TYPE_INFORMATION_REQUEST, TYPE_PARAMETER_PROBLEM, TYPE_REDIRECT, TYPE_ROUTER_ADVERTISEMENT, TYPE_ROUTER_SOLICITATION, TYPE_SOURCE_QUENCH, TYPE_TIME_EXCEEDED, TYPE_TIMESTAMP_REPLY, TYPE_TIMESTAMP_REQUEST |
Constructor Summary |
|
ErrorMessage(byte[] buf,
int offset)
Creates a new ICMP timestamp reply from
the spcified data at the specific offset. |
protected |
ErrorMessage(byte type,
byte code)
Creates a new ICMP Error Message object. |
Method Summary |
IPHeader |
getIPHeader()
Used to access the IP Header that caused the ICMP
error message to be generated. |
byte[] |
getProtocolData()
Retreives the 8 bytes of protocol data
that caused the error. |
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. |
protected void |
setIPHeader(IPHeader hdr)
Sets the IP header in error. |
protected void |
setProtocolData(byte[] pd)
Sets the protocol data that caused the error. |
Methods inherited from class org.opennms.protocols.icmp.ICMPHeader |
byteToInt, byteToShort, computeChecksum, computeChecksum, getChecksum, getCode, getIdentity, getNetworkSize, getSequenceId, getType, isEchoReply, isEchoRequest, nextSequenceId, setChecksum, setCode, setIdentity, setNextSequenceId, setSequenceId, setType, storeToBuffer, toBytes |
Methods inherited from class java.lang.Object |
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait |
m_iphdr
private IPHeader m_iphdr
m_protoData
private byte[] m_protoData
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:
InsufficientDataException
- Thrown if there
is not sufficent data in the buffer.
loadFromBuffer
public 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 InsufficientDataException 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:
InsufficientDataException
- Thrown if there
is not sufficent data in the buffer.
getIPHeader
public 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 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:
InsufficientDataException
- Thrown when pd.length is less than 8.OverflowDataException
- Thrown when pd.length is greater than 8.