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

Committer:
andrewboyson
Date:
Fri Jul 19 17:48:06 2019 +0000
Revision:
151:bde6f7da1755
Parent:
136:8a65abb0dc63
Removed private key and certificate from semihost storage as found to be unreliable (though secure) and moved it into flash storage (reliable, simple, but visible on mbed.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andrewboyson 136:8a65abb0dc63 1 #include <stdbool.h>
andrewboyson 136:8a65abb0dc63 2 #include <stdint.h>
andrewboyson 136:8a65abb0dc63 3
andrewboyson 136:8a65abb0dc63 4 #include "net.h"
andrewboyson 136:8a65abb0dc63 5
andrewboyson 136:8a65abb0dc63 6 char* Ip6HdrPtrVersionTrafficFlow (char* pPacket) { return pPacket + 0; } //4
andrewboyson 136:8a65abb0dc63 7 char* Ip6HdrPtrPayloadLength (char* pPacket) { return pPacket + 4; } //2
andrewboyson 136:8a65abb0dc63 8 char* Ip6HdrPtrProtocol (char* pPacket) { return pPacket + 6; } //1
andrewboyson 136:8a65abb0dc63 9 char* Ip6HdrPtrHopLimit (char* pPacket) { return pPacket + 7; } //1
andrewboyson 136:8a65abb0dc63 10 char* Ip6HdrPtrSrc (char* pPacket) { return pPacket + 8; } //16
andrewboyson 136:8a65abb0dc63 11 char* Ip6HdrPtrDst (char* pPacket) { return pPacket + 24; } //16
andrewboyson 136:8a65abb0dc63 12 const int IP6_HEADER_LENGTH = 40;
andrewboyson 136:8a65abb0dc63 13
andrewboyson 136:8a65abb0dc63 14 int Ip6HdrGetVersion (char* pPacket) { int32_t r; NetDirect32(&r, Ip6HdrPtrVersionTrafficFlow(pPacket)); return (r >> 4) & 0x0F; }
andrewboyson 136:8a65abb0dc63 15 int Ip6HdrGetPayloadLen(char* pPacket) { int16_t r; NetInvert16(&r, Ip6HdrPtrPayloadLength (pPacket)); return r; }
andrewboyson 136:8a65abb0dc63 16 int Ip6HdrGetProtocol (char* pPacket) { return *Ip6HdrPtrProtocol (pPacket); }
andrewboyson 136:8a65abb0dc63 17 int Ip6HdrGetHopLimit (char* pPacket) { return *Ip6HdrPtrHopLimit (pPacket); }
andrewboyson 136:8a65abb0dc63 18
andrewboyson 136:8a65abb0dc63 19 void Ip6HdrSetVersion (char* pPacket, int value) { value <<= 4; NetDirect32(Ip6HdrPtrVersionTrafficFlow(pPacket), &value); }
andrewboyson 136:8a65abb0dc63 20 void Ip6HdrSetPayloadLen(char* pPacket, int value) { NetInvert16(Ip6HdrPtrPayloadLength (pPacket), &value); }
andrewboyson 136:8a65abb0dc63 21 void Ip6HdrSetProtocol (char* pPacket, int value) { *Ip6HdrPtrProtocol (pPacket) = value; }
andrewboyson 136:8a65abb0dc63 22 void Ip6HdrSetHopLimit (char* pPacket, int value) { *Ip6HdrPtrHopLimit (pPacket) = value; }