*/
#include "icmp/icmpheader.h"
+#include <sstream>
#include <boost/scoped_array.hpp>
std::istream& IcmpHeader::read(std::istream &is)
is.read(buf.get(), 4);
type = static_cast<uint8_t>(buf[0]);
code = static_cast<uint8_t>(buf[1]);
- checksum = ( static_cast<uint16_t>(buf[2]) << 8 )
- + static_cast<uint16_t>(buf[3]);
+ uint8_t checksum_msb = static_cast<uint8_t>(buf[2]);
+ uint8_t checksum_lsb = static_cast<uint8_t>(buf[3]);
+ checksum = ( static_cast<uint16_t>(checksum_msb) << 8 )
+ + static_cast<uint16_t>(checksum_lsb);
return is;
}