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:
Thu Apr 02 19:08:25 2020 +0000
Revision:
167:3ba4e3c49631
Parent:
136:8a65abb0dc63
Modified resolution cache ajaxs to include the index

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; }