|  | Kea 3.0.0
    | 
Embodies an ICMP message. More...
#include <icmp_msg.h>
| Public Types | |
| enum | ICMPMsgType { ECHO_REPLY = 0 , TARGET_UNREACHABLE = 3 , ECHO_REQUEST = 8 } | 
| ICMP message types.  More... | |
| Public Member Functions | |
| ICMPMsg () | |
| Constructor. | |
| virtual | ~ICMPMsg ()=default | 
| Destructor. | |
| uint16_t | getChecksum () const | 
| Fetches the checksum. | |
| uint8_t | getCode () const | 
| Fetches the ICMP message code. | |
| const isc::asiolink::IOAddress & | getDestination () const | 
| Fetches the destination IP address. | |
| uint16_t | getId () const | 
| Fetches the message id. | |
| const std::vector< uint8_t > & | getPayload () const | 
| Fetches the message payload. | |
| uint16_t | getSequence () const | 
| Fetches the message sequence number. | |
| const isc::asiolink::IOAddress & | getSource () const | 
| Fetches the source IP address. | |
| uint8_t | getType () const | 
| Fetches the ICMP message type (e.g. | |
| ICMPPtr | pack () const | 
| Packs the message into an ICMP structure. | |
| void | setChecksum (uint16_t check_sum) | 
| Sets the check sum. | |
| void | setCode (uint8_t code) | 
| Sets the ICMP code. | |
| void | setDestination (const isc::asiolink::IOAddress &destination) | 
| Sets the destination IP address. | |
| void | setId (const uint16_t id) | 
| Sets the message id. | |
| void | setPayload (const uint8_t *data, size_t length) | 
| Sets the message payload to the given data. | |
| void | setSequence (uint16_t sequence) | 
| Sets the message sequence number. | |
| void | setSource (const isc::asiolink::IOAddress &source) | 
| Sets the source IP address. | |
| void | setType (uint8_t msg_type) | 
| Sets the ICMP message type. | |
| Static Public Member Functions | |
| static uint32_t | calcChecksum (const uint8_t *data, size_t length) | 
| Calculates the checksum of the given data buffer. | |
| static ICMPMsgPtr | unpack (const uint8_t *wire_data, size_t length) | 
| Unpacks an ICMP message from the given wire_data. | |
| Static Public Attributes | |
| static constexpr size_t | ICMP_HEADER_SIZE = 8 | 
| Size in octets of ICMP message header. | |
Embodies an ICMP message.
Provides functions for marshalling of ICMP protocol messages to and from wire form
Definition at line 35 of file icmp_msg.h.
ICMP message types.
We only define the ones we care about.
| Enumerator | |
|---|---|
| ECHO_REPLY | |
| TARGET_UNREACHABLE | |
| ECHO_REQUEST | |
Definition at line 39 of file icmp_msg.h.
| isc::ping_check::ICMPMsg::ICMPMsg | ( | ) | 
| 
 | virtualdefault | 
Destructor.
| 
 | static | 
Calculates the checksum of the given data buffer.
| data | pointer to data buffer from which to copy | 
| length | number of bytes in data buffer | 
Definition at line 85 of file icmp_msg.cc.
References isc::util::readUint16().
Referenced by pack().
| 
 | inline | 
Fetches the checksum.
Definition at line 105 of file icmp_msg.h.
| 
 | inline | 
Fetches the ICMP message code.
Definition at line 91 of file icmp_msg.h.
| 
 | inline | 
Fetches the destination IP address.
Definition at line 161 of file icmp_msg.h.
| 
 | inline | 
Fetches the message id.
Definition at line 119 of file icmp_msg.h.
| 
 | inline | 
Fetches the message payload.
Definition at line 175 of file icmp_msg.h.
| 
 | inline | 
Fetches the message sequence number.
Definition at line 133 of file icmp_msg.h.
| 
 | inline | 
Fetches the source IP address.
Definition at line 147 of file icmp_msg.h.
| 
 | inline | 
Fetches the ICMP message type (e.g.
ECHO_REQUEST, ECHO_REPLY)
Definition at line 77 of file icmp_msg.h.
| ICMPPtr isc::ping_check::ICMPMsg::pack | ( | ) | const | 
Packs the message into an ICMP structure.
Definition at line 68 of file icmp_msg.cc.
References calcChecksum().
| 
 | inline | 
Sets the check sum.
| check_sum | new value for the check sum | 
Definition at line 112 of file icmp_msg.h.
| 
 | inline | 
Sets the ICMP code.
| code | new value for the message type | 
Definition at line 98 of file icmp_msg.h.
| 
 | inline | 
Sets the destination IP address.
| destination | new value for the destination IP address | 
Definition at line 168 of file icmp_msg.h.
| 
 | inline | 
Sets the message id.
| id | new value for the message id | 
Definition at line 126 of file icmp_msg.h.
| void isc::ping_check::ICMPMsg::setPayload | ( | const uint8_t * | data, | 
| size_t | length ) | 
Sets the message payload to the given data.
| data | pointer to data buffer from which to copy | 
| length | number of bytes in data buffer | 
Definition at line 80 of file icmp_msg.cc.
| 
 | inline | 
Sets the message sequence number.
| sequence | new value for the message sequence number | 
Definition at line 140 of file icmp_msg.h.
| 
 | inline | 
Sets the source IP address.
| source | new value for the source IP address | 
Definition at line 154 of file icmp_msg.h.
| 
 | inline | 
Sets the ICMP message type.
| msg_type | new value for the message type | 
Definition at line 84 of file icmp_msg.h.
| 
 | static | 
Unpacks an ICMP message from the given wire_data.
The wire data is expected to include the IP header followed by an ICMP message.
| wire_data | raw data received from the socket | 
| length | number of bytes in the wire_data contents | 
| BadValue | if the wire data is invalid | 
Definition at line 30 of file icmp_msg.cc.
References ICMPMsg(), ICMP_HEADER_SIZE, and isc_throw.
Referenced by isc::ping_check::PingCheckMgr::handleTargetUnreachable(), and isc::ping_check::PingChannel::socketReadCallback().
| 
 | staticconstexpr | 
Size in octets of ICMP message header.
1 (msg type) + 1 (code) + 2 (checksum) + 4 (either unused or used differently basing on the ICMP type and code e.g Identifier and Sequence Number for Echo or Echo Reply Message)
Definition at line 49 of file icmp_msg.h.
Referenced by unpack().