7 #include "NetChecksum.hpp"
11 void NetIcmp::processFrame(NetDefs::FRAME& frame, NetDefs::ICMP_HEADER& header,
int len) {
13 if (header.type == NetDefs::ICMP_TYPE_ECHO_REQUEST) {
14 frame.types.icmp.icmpHeader.type = NetDefs::ICMP_TYPE_ECHO_REPLY;
15 frame.types.icmp.icmpHeader.checkSum = 0;
16 frame.types.icmp.icmpHeader.checkSum = NetChecksum::finalizeCheckSum(NetChecksum::calcPartialChecksum((uint8_t*) &frame.types.icmp.icmpHeader, len));
17 NetIp::putHeader(frame, frame.types.mac.macHeader.srcAddr, frame.types.ip.ipHeader.srcAddr, len, NetDefs::IP_PROTOCOL_ICMP);
18 NetIp::flush(frame, len,
true);
21 Net::freeFrame(frame);