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 dhcphdr.c Source File

dhcphdr.c

00001 #include <stdint.h>
00002 
00003 #include "net.h"
00004 
00005 char* DhcpHdrPtrOp    (char* pPacket) { return pPacket +   0; } //1
00006 char* DhcpHdrPtrHtype (char* pPacket) { return pPacket +   1; } //1
00007 char* DhcpHdrPtrHlen  (char* pPacket) { return pPacket +   2; } //1
00008 char* DhcpHdrPtrHops  (char* pPacket) { return pPacket +   3; } //1
00009 char* DhcpHdrPtrXid   (char* pPacket) { return pPacket +   4; } //4
00010 char* DhcpHdrPtrSecs  (char* pPacket) { return pPacket +   8; } //2
00011 char* DhcpHdrPtrFlags (char* pPacket) { return pPacket +  10; } //2
00012 char* DhcpHdrPtrCiaddr(char* pPacket) { return pPacket +  12; } //4
00013 char* DhcpHdrPtrYiaddr(char* pPacket) { return pPacket +  16; } //4
00014 char* DhcpHdrPtrSiaddr(char* pPacket) { return pPacket +  20; } //4
00015 char* DhcpHdrPtrGiaddr(char* pPacket) { return pPacket +  24; } //4
00016 char* DhcpHdrPtrChaddr(char* pPacket) { return pPacket +  28; } //16
00017 char* DhcpHdrPtrLegacy(char* pPacket) { return pPacket +  44; } //192
00018 char* DhcpHdrPtrCookie(char* pPacket) { return pPacket + 236; } //4
00019 const int DHCP_HEADER_LENGTH = 240;
00020 
00021 uint8_t  DhcpHdrGetOp    (char* pPacket) { return                     *DhcpHdrPtrOp    (pPacket);            }
00022 uint8_t  DhcpHdrGetHtype (char* pPacket) { return                     *DhcpHdrPtrHtype (pPacket);            }
00023 uint8_t  DhcpHdrGetHlen  (char* pPacket) { return                     *DhcpHdrPtrHlen  (pPacket);            }
00024 uint8_t  DhcpHdrGetHops  (char* pPacket) { return                     *DhcpHdrPtrHops  (pPacket);            }
00025 uint32_t DhcpHdrGetXid   (char* pPacket) { uint32_t r; NetInvert32(&r, DhcpHdrPtrXid   (pPacket)); return r; }
00026 uint16_t DhcpHdrGetSecs  (char* pPacket) { uint16_t r; NetInvert16(&r, DhcpHdrPtrSecs  (pPacket)); return r; }
00027 uint16_t DhcpHdrGetFlags (char* pPacket) { uint16_t r; NetInvert16(&r, DhcpHdrPtrFlags (pPacket)); return r; }
00028 uint32_t DhcpHdrGetCiaddr(char* pPacket) { uint32_t r; NetDirect32(&r, DhcpHdrPtrCiaddr(pPacket)); return r; }
00029 uint32_t DhcpHdrGetYiaddr(char* pPacket) { uint32_t r; NetDirect32(&r, DhcpHdrPtrYiaddr(pPacket)); return r; }
00030 uint32_t DhcpHdrGetSiaddr(char* pPacket) { uint32_t r; NetDirect32(&r, DhcpHdrPtrSiaddr(pPacket)); return r; }
00031 uint32_t DhcpHdrGetGiaddr(char* pPacket) { uint32_t r; NetDirect32(&r, DhcpHdrPtrGiaddr(pPacket)); return r; }
00032 uint32_t DhcpHdrGetCookie(char* pPacket) { uint32_t r; NetInvert32(&r, DhcpHdrPtrCookie(pPacket)); return r; }
00033 
00034 void DhcpHdrSetOp    (char* pPacket, uint8_t  value) {            *DhcpHdrPtrOp       (pPacket) = value;  }
00035 void DhcpHdrSetHtype (char* pPacket, uint8_t  value) {            *DhcpHdrPtrHtype    (pPacket) = value;  }
00036 void DhcpHdrSetHlen  (char* pPacket, uint8_t  value) {            *DhcpHdrPtrHlen     (pPacket) = value;  }
00037 void DhcpHdrSetHops  (char* pPacket, uint8_t  value) {            *DhcpHdrPtrHops     (pPacket) = value;  }
00038 void DhcpHdrSetXid   (char* pPacket, uint32_t value) { NetInvert32(DhcpHdrPtrXid      (pPacket), &value); }
00039 void DhcpHdrSetSecs  (char* pPacket, uint16_t value) { NetInvert16(DhcpHdrPtrSecs     (pPacket), &value); }
00040 void DhcpHdrSetFlags (char* pPacket, uint16_t value) { NetInvert16(DhcpHdrPtrFlags    (pPacket), &value); }
00041 void DhcpHdrSetCiaddr(char* pPacket, uint32_t value) { NetDirect32(DhcpHdrPtrCiaddr   (pPacket), &value); }
00042 void DhcpHdrSetYiaddr(char* pPacket, uint32_t value) { NetDirect32(DhcpHdrPtrYiaddr   (pPacket), &value); }
00043 void DhcpHdrSetSiaddr(char* pPacket, uint32_t value) { NetDirect32(DhcpHdrPtrSiaddr   (pPacket), &value); }
00044 void DhcpHdrSetGiaddr(char* pPacket, uint32_t value) { NetDirect32(DhcpHdrPtrGiaddr   (pPacket), &value); }
00045 void DhcpHdrSetCookie(char* pPacket, uint32_t value) { NetInvert32(DhcpHdrPtrCookie   (pPacket), &value); }