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
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
Generated on Tue Jul 12 2022 18:53:40 by 1.7.2