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:
Sun Sep 29 18:51:58 2019 +0000
Revision:
160:6a1d1d368f80
Parent:
136:8a65abb0dc63
Corrected some minor bugs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
andrewboyson 136:8a65abb0dc63 1 #include <stdint.h>
andrewboyson 136:8a65abb0dc63 2
andrewboyson 136:8a65abb0dc63 3 #include "net.h"
andrewboyson 136:8a65abb0dc63 4
andrewboyson 136:8a65abb0dc63 5 char* ArpHdrPtrHardwareType (char* pPacket) { return pPacket + 0; }
andrewboyson 136:8a65abb0dc63 6 char* ArpHdrPtrProtocolType (char* pPacket) { return pPacket + 2; }
andrewboyson 136:8a65abb0dc63 7 char* ArpHdrPtrHardwareLength (char* pPacket) { return pPacket + 4; }
andrewboyson 136:8a65abb0dc63 8 char* ArpHdrPtrProtocolLength (char* pPacket) { return pPacket + 5; }
andrewboyson 136:8a65abb0dc63 9 char* ArpHdrPtrOpCode (char* pPacket) { return pPacket + 6; }
andrewboyson 136:8a65abb0dc63 10 char* ArpHdrPtrSenderHardwareAddr(char* pPacket) { return pPacket + 8; }
andrewboyson 136:8a65abb0dc63 11 char* ArpHdrPtrSenderProtocolAddr(char* pPacket) { return pPacket + 14; }
andrewboyson 136:8a65abb0dc63 12 char* ArpHdrPtrTargetHardwareAddr(char* pPacket) { return pPacket + 18; }
andrewboyson 136:8a65abb0dc63 13 char* ArpHdrPtrTargetProtocolAddr(char* pPacket) { return pPacket + 24; }
andrewboyson 136:8a65abb0dc63 14 const int ARP_HEADER_LENGTH = 28;
andrewboyson 136:8a65abb0dc63 15
andrewboyson 136:8a65abb0dc63 16 int16_t ArpHdrGetHardwareType (char* pPacket) { int16_t r; NetInvert16(&r, ArpHdrPtrHardwareType (pPacket)); return r; }
andrewboyson 136:8a65abb0dc63 17 int16_t ArpHdrGetProtocolType (char* pPacket) { int16_t r; NetInvert16(&r, ArpHdrPtrProtocolType (pPacket)); return r; }
andrewboyson 136:8a65abb0dc63 18 int8_t ArpHdrGetHardwareLength (char* pPacket) { return *( int8_t* )(ArpHdrPtrHardwareLength (pPacket)); }
andrewboyson 136:8a65abb0dc63 19 int8_t ArpHdrGetProtocolLength (char* pPacket) { return *( int8_t* )(ArpHdrPtrProtocolLength (pPacket)); }
andrewboyson 136:8a65abb0dc63 20 int16_t ArpHdrGetOpCode (char* pPacket) { int16_t r; NetInvert16(&r, ArpHdrPtrOpCode (pPacket)); return r; }
andrewboyson 136:8a65abb0dc63 21 uint32_t ArpHdrGetSenderProtocolAddr(char* pPacket) { uint32_t r; NetDirect32(&r, ArpHdrPtrSenderProtocolAddr(pPacket)); return r; }
andrewboyson 136:8a65abb0dc63 22 uint32_t ArpHdrGetTargetProtocolAddr(char* pPacket) { uint32_t r; NetDirect32(&r, ArpHdrPtrTargetProtocolAddr(pPacket)); return r; }
andrewboyson 136:8a65abb0dc63 23
andrewboyson 136:8a65abb0dc63 24 void ArpHdrSetHardwareType (char* pPacket, int16_t value) { NetInvert16(ArpHdrPtrHardwareType (pPacket), &value); }
andrewboyson 136:8a65abb0dc63 25 void ArpHdrSetProtocolType (char* pPacket, int16_t value) { NetInvert16(ArpHdrPtrProtocolType (pPacket), &value); }
andrewboyson 136:8a65abb0dc63 26 void ArpHdrSetHardwareLength (char* pPacket, int8_t value) { *( int8_t* )(ArpHdrPtrHardwareLength (pPacket)) = value ; }
andrewboyson 136:8a65abb0dc63 27 void ArpHdrSetProtocolLength (char* pPacket, int8_t value) { *( int8_t* )(ArpHdrPtrProtocolLength (pPacket)) = value ; }
andrewboyson 136:8a65abb0dc63 28 void ArpHdrSetOpCode (char* pPacket, int16_t value) { NetInvert16(ArpHdrPtrOpCode (pPacket), &value); }
andrewboyson 136:8a65abb0dc63 29 void ArpHdrSetSenderProtocolAddr(char* pPacket, uint32_t value) { NetDirect32(ArpHdrPtrSenderProtocolAddr(pPacket), &value); }
andrewboyson 136:8a65abb0dc63 30 void ArpHdrSetTargetProtocolAddr(char* pPacket, uint32_t value) { NetDirect32(ArpHdrPtrTargetProtocolAddr(pPacket), &value); }
andrewboyson 136:8a65abb0dc63 31