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
arp/arphdr.c@160:6a1d1d368f80, 2019-09-29 (annotated)
- 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?
User | Revision | Line number | New 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 |