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: ip6/ip6.c
- Revision:
- 71:736a5747ade1
- Parent:
- 61:aad055f1b0d1
- Child:
- 74:c3756bfa960e
--- a/ip6/ip6.c Fri Feb 16 17:31:52 2018 +0000 +++ b/ip6/ip6.c Sat Oct 20 18:56:13 2018 +0000 @@ -156,7 +156,7 @@ NetTraceHostCheckIp6(srcIp); - Ar6AddIpRecord(trace, macRemote, srcIp); + char* pCachedRemIp = Ar6AddIpRecord(trace, macRemote, srcIp); Nr6MakeRequestForNameFromIp(srcIp); int action = DO_NOTHING; @@ -165,7 +165,7 @@ case HOPOPT: action = DO_NOTHING; break; case ICMP6: action = Icmp6HandleReceivedPacket(trace, scope, pDataRx, dataLengthRx, pDataTx, &dataLengthTx, srcIp, dstIp); break; case UDP: action = Udp6HandleReceivedPacket(trace, scope, pDataRx, dataLengthRx, pDataTx, &dataLengthTx, srcIp, dstIp); break; - case TCP: action = Tcp6HandleReceivedPacket(trace, scope, pDataRx, dataLengthRx, pDataTx, &dataLengthTx, srcIp, dstIp); break; + case TCP: action = Tcp6HandleReceivedPacket(trace, scope, pDataRx, dataLengthRx, pDataTx, &dataLengthTx, srcIp, dstIp, pCachedRemIp); break; default: LogTimeF("IP6 protocol %d unhandled\r\n", protocol); return DO_NOTHING; @@ -198,17 +198,9 @@ int dataLength = *pSize - sizeof(struct header); int action = DO_NOTHING; - if (!action) - { - action = Icmp6PollForPacketToSend(pData, &dataLength, srcIp, dstIp); - protocol = ICMP6; - } - - if (!action) - { - action = Udp6PollForPacketToSend(pData, &dataLength, srcIp, dstIp); - protocol = UDP; - } + if (!action) { action = Icmp6PollForPacketToSend(pData, &dataLength, srcIp, dstIp); protocol = ICMP6; } + if (!action) { action = Udp6PollForPacketToSend(pData, &dataLength, srcIp, dstIp); protocol = UDP; } + if (!action) { action = Tcp6PollForPacketToSend(pData, &dataLength, srcIp, dstIp); protocol = TCP; } if (!action) return DO_NOTHING; int dest = ActionGetDestPart(action);