#pragma once #include #include #include "Net.h" #include "Arduino.h" class DHCP { public: static const unsigned char* MAGIC_COOKIE; unsigned int DHCPLeaseTime; std::vector DNSServers; unsigned char maxLeases; unsigned char localAddress1; unsigned char localAddress2; unsigned char localAddress3; unsigned char deviceIP; unsigned char leaseStart; unsigned char localSubnet1; unsigned char localSubnet2; unsigned char localSubnet3; unsigned char localSubnet4; struct DHCPOption { unsigned char option = 0; std::vector DHCPData; unsigned char dataLength = 0; }; class DHCPEntry { public: Net::MACAddress MAC = Net::MACAddress::GetEmpty(); unsigned int expiry = 0; std::vector requestedItems; }; DHCPEntry* DHCPEntries; //std::vector DHCPEntries; unsigned char FindPosByMac(Net::MACAddress MAC, DHCPEntry* entries, unsigned char entries_size); std::vector Generate_DHCP_Option(unsigned char option, unsigned char clientIP); std::vector> ProcessDHCP(unsigned char* rxBuffer, unsigned long bufferLength); DHCP(unsigned long deviceAddress, unsigned long subnetMask, unsigned char maxLeases, unsigned char leaseStart, unsigned int leaseTime, std::vector dnsServers, unsigned char dnsServerCount); ~DHCP(); };