Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: oldheating gps motorhome heating
Diff: ip4/icmp/icmp4.cpp
- Revision:
- 59:e0e556c8bd46
- Parent:
- 52:fbc5a46b5e16
--- a/ip4/icmp/icmp4.cpp Thu Dec 07 20:44:32 2017 +0000
+++ b/ip4/icmp/icmp4.cpp Thu Dec 14 20:55:40 2017 +0000
@@ -6,8 +6,6 @@
#include "dhcp.h"
#include "echo4.h"
-#define HEADER_SIZE 4
-
#define ECHO_REPLY 0
#define UNREACHABLE 3
#define REDIRECT 5
@@ -23,8 +21,6 @@
static uint8_t code;
static uint16_t checksum;
static uint16_t calculated;
-static int dataLength;
-//static void* pData;
static void logType(uint16_t type)
{
@@ -44,7 +40,6 @@
LogF(" Code %u\r\n", code);
LogF(" Checksum (hex) %04hX\r\n", checksum);
LogF(" Calculated %04hX\r\n", calculated);
- LogF(" Data length %d\r\n", dataLength);
}
else
{
@@ -60,8 +55,6 @@
code = pHeader->code;
checksum = NetToHost16(pHeader->checksum);
calculated = NetCheckSum(size, pPacket);
-// pData = (char*)pPacket + HEADER_SIZE;
- dataLength = size - HEADER_SIZE;
}
static void writeHeader(void* pPacket, int size)
{
@@ -78,17 +71,22 @@
pTraceBack();
logHeader();
}
-int Icmp4HandleReceivedPacket(void (*traceback)(void), uint32_t* pSrcIp, uint32_t* pDstIp, int* pSize, void * pPacket)
+int Icmp4HandleReceivedPacket(void (*traceback)(void), void* pPacketRx, int sizeRx, void* pPacketTx, int* pSizeTx, uint32_t* pSrcIp, uint32_t* pDstIp)
{
pTraceBack = traceback;
- readHeader(pPacket, *pSize);
+ readHeader(pPacketRx, sizeRx);
+
+ int dataLengthRx = sizeRx - sizeof(header);
+ int dataLengthTx = *pSizeTx - sizeof(header);
+ char* pPayloadRx = (char*)pPacketRx + sizeof(header);
+ char* pPayloadTx = (char*)pPacketTx + sizeof(header);
int action = DO_NOTHING;
switch (type)
{
case ECHO_REQUEST:
- action = Echo4HandleRequest(trace, &type, &code);
+ action = Echo4HandleRequest(trace, &type, &code, pPayloadRx, dataLengthRx, pPayloadTx, &dataLengthTx);
break;
case UNREACHABLE:
return DO_NOTHING;
@@ -103,9 +101,9 @@
*pDstIp = *pSrcIp;
*pSrcIp = DhcpLocalIp;
- *pSize = HEADER_SIZE + dataLength;
+ *pSizeTx = sizeof(header) + dataLengthTx;
- writeHeader(pPacket, *pSize);
+ writeHeader(pPacketTx, *pSizeTx);
if (ActionGetTracePart(action)) logHeader();