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

Revision:
97:d91f7db00235
Parent:
86:55bc5ddac16c
Child:
98:b977424ec7f7
--- 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)