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
ip6/ip6hdr.c@167:3ba4e3c49631, 2020-04-02 (annotated)
- 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?
User | Revision | Line number | New 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; } |