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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers arphdr.c Source File

arphdr.c

00001 #include <stdint.h>
00002 
00003 #include "net.h"
00004 
00005 char* ArpHdrPtrHardwareType      (char* pPacket) { return pPacket +  0; }
00006 char* ArpHdrPtrProtocolType      (char* pPacket) { return pPacket +  2; }
00007 char* ArpHdrPtrHardwareLength    (char* pPacket) { return pPacket +  4; }
00008 char* ArpHdrPtrProtocolLength    (char* pPacket) { return pPacket +  5; }
00009 char* ArpHdrPtrOpCode            (char* pPacket) { return pPacket +  6; }
00010 char* ArpHdrPtrSenderHardwareAddr(char* pPacket) { return pPacket +  8; }
00011 char* ArpHdrPtrSenderProtocolAddr(char* pPacket) { return pPacket + 14; }
00012 char* ArpHdrPtrTargetHardwareAddr(char* pPacket) { return pPacket + 18; }
00013 char* ArpHdrPtrTargetProtocolAddr(char* pPacket) { return pPacket + 24; }
00014 const int ARP_HEADER_LENGTH = 28;
00015 
00016 int16_t  ArpHdrGetHardwareType      (char* pPacket) { int16_t  r; NetInvert16(&r, ArpHdrPtrHardwareType      (pPacket)); return r; }
00017 int16_t  ArpHdrGetProtocolType      (char* pPacket) { int16_t  r; NetInvert16(&r, ArpHdrPtrProtocolType      (pPacket)); return r; }
00018 int8_t   ArpHdrGetHardwareLength    (char* pPacket) { return         *( int8_t* )(ArpHdrPtrHardwareLength    (pPacket));           }
00019 int8_t   ArpHdrGetProtocolLength    (char* pPacket) { return         *( int8_t* )(ArpHdrPtrProtocolLength    (pPacket));           }
00020 int16_t  ArpHdrGetOpCode            (char* pPacket) { int16_t  r; NetInvert16(&r, ArpHdrPtrOpCode            (pPacket)); return r; }
00021 uint32_t ArpHdrGetSenderProtocolAddr(char* pPacket) { uint32_t r; NetDirect32(&r, ArpHdrPtrSenderProtocolAddr(pPacket)); return r; }
00022 uint32_t ArpHdrGetTargetProtocolAddr(char* pPacket) { uint32_t r; NetDirect32(&r, ArpHdrPtrTargetProtocolAddr(pPacket)); return r; }
00023 
00024 void     ArpHdrSetHardwareType      (char* pPacket,  int16_t value) {  NetInvert16(ArpHdrPtrHardwareType      (pPacket),  &value); }
00025 void     ArpHdrSetProtocolType      (char* pPacket,  int16_t value) {  NetInvert16(ArpHdrPtrProtocolType      (pPacket),  &value); }
00026 void     ArpHdrSetHardwareLength    (char* pPacket,  int8_t  value) { *( int8_t* )(ArpHdrPtrHardwareLength    (pPacket)) = value ; }
00027 void     ArpHdrSetProtocolLength    (char* pPacket,  int8_t  value) { *( int8_t* )(ArpHdrPtrProtocolLength    (pPacket)) = value ; }
00028 void     ArpHdrSetOpCode            (char* pPacket,  int16_t value) {  NetInvert16(ArpHdrPtrOpCode            (pPacket),  &value); }
00029 void     ArpHdrSetSenderProtocolAddr(char* pPacket, uint32_t value) {  NetDirect32(ArpHdrPtrSenderProtocolAddr(pPacket),  &value); }
00030 void     ArpHdrSetTargetProtocolAddr(char* pPacket, uint32_t value) {  NetDirect32(ArpHdrPtrTargetProtocolAddr(pPacket),  &value); }
00031