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@151:bde6f7da1755, 2019-07-19 (annotated)
- 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?
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; } |