public:
IcmpData();
+ IcmpData(const std::size_t size_arg);
+
virtual ~IcmpData() {};
virtual bool match_echo_reply(const uint16_t identifier,
protected:
- // called by subclasses
- IcmpData(const std::size_t size_arg);
-
std::size_t size;
MessagePayload raw_data;
};
icmp_data_ptr.reset( new IcmpDestinationUnreachableData(
static_cast<std::size_t>(data_length)) );
else
- return ReadReturnCode_UNKNOWN_ICMP_TYPE;
+ { // unspecified icmp data type, will consume right amount of data
+ // from stream but return false for match_echo_request and
+ // match_destination_unreachable
+ icmp_data_ptr.reset( new IcmpData(
+ static_cast<std::size_t>(data_length)) );
+ }
icmp_data_ptr->read( is );
}