Class Poco::Net::ICMPv4PacketImpl (original) (raw)
Library: Net
Package: ICMP
Header: Poco/Net/ICMPv4PacketImpl.h
Description
This class implements the ICMPv4 packet. Parts are based on the original ICMP code by Mike Muuss U. S. Army Ballistic Research Laboratory December, 1983
Inheritance
Direct Base Classes: ICMPPacketImpl
All Base Classes: ICMPPacketImpl
Member Summary
Member Functions: errorDescription, packetSize, static_assert, time, typeDescription, validReplyID
Inherited Functions: checksum, errorDescription, getDataSize, initPacket, maxPacketSize, nextSequence, packet, packetSize, resetSequence, sequence, setDataSize, time, typeDescription, validReplyID
Nested Classes
struct Header
Enumerations
DestinationUnreachableCode
NET_UNREACHABLE
HOST_UNREACHABLE
PROTOCOL_UNREACHABLE
PORT_UNREACHABLE
FRAGMENTATION_NEEDED_AND_DF_SET
SOURCE_ROUTE_FAILED
DESTINATION_UNREACHABLE_UNKNOWN
DESTINATION_UNREACHABLE_LENGTH
MessageType
ECHO_REPLY
ICMP_1
ICMP_2
DESTINATION_UNREACHABLE
SOURCE_QUENCH
REDIRECT
ICMP_6
ICMP_7
ECHO_REQUEST
ICMP_9
ICMP_10
TIME_EXCEEDED
PARAMETER_PROBLEM
TIMESTAMP_REQUEST
TIMESTAMP_REPLY
INFORMATION_REQUEST
INFORMATION_REPLY
MESSAGE_TYPE_UNKNOWN
MESSAGE_TYPE_LENGTH
ParameterProblemCode
POINTER_INDICATES_THE_ERROR
PARAMETER_PROBLEM_UNKNOWN
PARAMETER_PROBLEM_LENGTH
RedirectMessageCode
REDIRECT_NETWORK
REDIRECT_HOST
REDIRECT_SERVICE_NETWORK
REDIRECT_SERVICE_HOST
REDIRECT_MESSAGE_UNKNOWN
REDIRECT_MESSAGE_LENGTH
TimeExceededCode
TIME_TO_LIVE
FRAGMENT_REASSEMBLY
TIME_EXCEEDED_UNKNOWN
TIME_EXCEEDED_LENGTH
Constructors
ICMPv4PacketImpl
ICMPv4PacketImpl(
int dataSize = 48
);
Destructor
~ICMPv4PacketImpl 
~ICMPv4PacketImpl();
Destructor.
Member Functions
errorDescription 
virtual std::string errorDescription(
Poco::UInt8 * buffer,
int length,
int & type,
int & code
);
Returns error description string. If supplied buffer contains ICMPv4 echo reply packet, an empty string is returned indicating the absence of error. If type and code of the error can be determined, they are assigned to the type and code respectively.
Buffer includes IP header, ICMP header and data.
packetSize 
int packetSize() const;
Returns the total length of packet (header + data);
static_assert
static_assert(
__builtin_offsetof (Header, code) = = 0x01
);
static_assert
static_assert(
__builtin_offsetof (Header, checksum) = = 0x02
);
static_assert
static_assert(
__builtin_offsetof (Header, id) = = 0x04
);
static_assert
static_assert(
__builtin_offsetof (Header, seq) = = 0x06
);
time 
struct timeval time(
Poco::UInt8 * buffer = 0,
int length = 0
) const;
Returns current epoch time if either buffer or length are equal to zero. Otherwise, it extracts the time value from the supplied buffer.
Buffer includes IP header, ICMP header and data.
typeDescription 
virtual std::string typeDescription(
int typeId
);
Returns the description of the packet type.
validReplyID
bool validReplyID(
Poco::UInt8 * buffer,
int length
) const;
Returns true if the extracted id is recognized (i.e. equals the process id).
Buffer includes IP header, ICMP header and data.
Variables
DESTINATION_UNREACHABLE_TYPE 
static const Poco::UInt8 DESTINATION_UNREACHABLE_TYPE;
MAX_PACKET_SIZE 
static const Poco::UInt16 MAX_PACKET_SIZE;
MESSAGE_TYPE 
static const std::string MESSAGE_TYPE[MESSAGE_TYPE_LENGTH];
PARAMETER_PROBLEM_TYPE 
static const Poco::UInt8 PARAMETER_PROBLEM_TYPE;
REDIRECT_MESSAGE_TYPE 
static const Poco::UInt8 REDIRECT_MESSAGE_TYPE;
SOURCE_QUENCH_TYPE 
static const Poco::UInt8 SOURCE_QUENCH_TYPE;
TIME_EXCEEDED_TYPE 
static const Poco::UInt8 TIME_EXCEEDED_TYPE;