A stack which works with or without an Mbed os library. Provides IPv4 or IPv6 with a full 1500 byte buffer.
Dependents: oldheating gps motorhome heating
Diff: ip4/ip4.c
- Revision:
- 97:d91f7db00235
- Parent:
- 86:55bc5ddac16c
- Child:
- 98:b977424ec7f7
diff -r 43eb7a110f1a -r d91f7db00235 ip4/ip4.c --- a/ip4/ip4.c Sat Dec 29 19:03:50 2018 +0000 +++ b/ip4/ip4.c Wed Jan 02 17:48:38 2019 +0000 @@ -14,6 +14,7 @@ #include "ip4addr.h" #include "ntp.h" #include "mac.h" +#include "fault.h" bool Ip4Trace = true; @@ -131,6 +132,7 @@ } int Ip4HandleReceivedPacket(void (*traceback)(void), void* pPacketRx, int sizeRx, void* pPacketTx, int* pSizeTx, char* macRemote) { + FaultPoint = FAULT_POINT_Ip4HandleReceivedPacket; pTraceBack = traceback; struct header * pHeaderRx = (struct header*)pPacketRx; @@ -159,6 +161,7 @@ Ip4AddressLog(srcIp); Log("\r\n"); } + FaultPoint = 0; return DO_NOTHING; } @@ -168,17 +171,19 @@ int action = DO_NOTHING; switch (protocol) { - case ICMP: action = Icmp4HandleReceivedPacket(trace, pDataRx, dataLengthRx, pDataTx, &dataLengthTx, &srcIp, &dstIp); break; - case IGMP: break; - case UDP: action = Udp4HandleReceivedPacket(trace, pDataRx, dataLengthRx, pDataTx, &dataLengthTx, &srcIp, &dstIp); break; + case ICMP: action = Icmp4HandleReceivedPacket(trace, pDataRx, dataLengthRx, pDataTx, &dataLengthTx, &srcIp, &dstIp); break; + case IGMP: break; + case UDP: action = Udp4HandleReceivedPacket(trace, pDataRx, dataLengthRx, pDataTx, &dataLengthTx, &srcIp, &dstIp); break; case TCP: action = Tcp4HandleReceivedPacket(trace, pDataRx, dataLengthRx, pDataTx, &dataLengthTx, &srcIp, &dstIp, remArIndex); break; - case IP6IN4: break; + case IP6IN4: break; default: LogTimeF("IP4 received packet unknown protocol %d\r\n"); + FaultPoint = 0; return DO_NOTHING; } if (!action) { + FaultPoint = 0; return DO_NOTHING; } @@ -201,6 +206,7 @@ if (ActionGetTracePart(action)) logHeader(); + FaultPoint = 0; return action; } int Ip4PollForPacketToSend(void* pPacket, int* pSize, char* pDstMac)