WIZNet W5500 with additional enhancements
Fork of WIZnetInterface by
Diff: Socket/DHCPClient.h
- Revision:
- 35:fe3028eda085
- Parent:
- 0:6f28332c466f
- Child:
- 36:0ba2e8d5274a
--- a/Socket/DHCPClient.h Mon Oct 09 19:58:19 2017 +0200
+++ b/Socket/DHCPClient.h Tue Oct 10 20:56:13 2017 +0200
@@ -11,6 +11,9 @@
#define DHCP_OFFSET_OPTIONS 240
#define DHCP_MAX_PACKET_SIZE 600
+#define DHCP_SERVER_PORT 67
+#define DHCP_CLIENT_PORT 68
+
// DHCP Message Type
#define DHCPDISCOVER 1
#define DHCPOFFER 2
@@ -20,17 +23,76 @@
#define DHCPNAK 6
#define DHCPRELEASE 7
#define DHCPINFORM 8
+#define DHCP_MAGIC_COOKIE 0x63825363
+#define OPT_PAD 0
+#define OPT_SUBNET_MASK 1
+#define OPT_TIME_OFFSET 2
+#define OPT_ROUTER 3
+#define OPT_TIME_SERVER 4
+#define OPT_IEN116_NAME_SERVER 5
+#define OPT_DNS 6
+#define OPT_LOG_SERVER 7
+#define OPT_COOKIE_SERVER 8
+#define OPT_LPR_SERVER 9
+#define OPT_IMPRESS_SERVER 10
+#define OPT_RESOURCE_LOC_SERVER 11
+#define OPT_HOSTNAME 12
+#define OPT_BOOTFILE_SIZE 13
+#define OPT_MERIT_DUMP 14
+#define OPT_DOMAIN_NAME 15
+#define OPT_SWAP_SERVER 16
+#define OPT_ROOT_PATH 17
+#define OPT_EXTENSIONS_PATH 18
+#define OPT_IP_FORWARDING 19
+#define OPT_NONLOCAL_SOURCE_ROUTING 20
+#define OPT_POLICY_FILTER 21
+#define OPT_MAX_DATAGRAM_REASS 22
+#define OPT_DEFAULT_IP_TTL 23
+#define OPT_PATH_MTU_AGING_TIMEOUT 24
+#define OPT_PATH_MTU_PLATEAU_TABLE 25
+#define OPT_INTERFACE_MTU 26
+#define OPT_ALL_SUBNETS_ARE_LOCAL 27
+#define OPT_BROADCAST_ADDR 28
+#define OPT_STATIC_ROUTE 33
+#define OPT_VENDOR 43
+#define OPT_NETBIOS_NAME_SERVER 44
+#define OPT_NETBIOS_DATA_DIST 45
+#define OPT_NETBIOS_NODE_TYPE 46
+#define OPT_NETBIOS_SCOPE 47
+#define OPT_IP_ADDR_REQ 50
+#define OPT_ADDR_LEASE_TIME 51
+#define OPT_DHCP_MESSAGE 53
+#define OPT_SERVER_IDENT 54
+#define OPT_PARAMETER_REQ 55
+#define OPT_RENEWAL_TIME 58
+#define OPT_REBINDING_TIME 59
+#define OPT_CLIENT_IDENT 61
+#define OPT_TFTP_SERVER_NAME 66
+#define OPT_BOOTFILE_NAME 67
+#define OPT_LDAP_URL 95 /* from draft RFC */
+#define OPT_DOMAIN_SEARCH 119 /* from draft RFC 3397 */
+
+/* site specific options */
+#define SITE_HD 252
+#define SITE_BF 253
+#define SITE_SA 254
+#define OPT_END 255
class DHCPClient {
public:
DHCPClient();
+ ~DHCPClient();
int setup(int timeout_ms = 15*1000);
uint8_t chaddr[6]; // MAC
uint8_t yiaddr[4]; // IP
+ uint8_t siaddr[4]; // DHCP server
uint8_t dnsaddr[4]; // DNS
uint8_t gateway[4];
uint8_t netmask[4];
- uint8_t siaddr[4];
+ uint8_t timesrv[4];
+ uint8_t leaseTime[4];
+ char *domainName;
+
private:
int discover();
int request();
Helmut Tschemernjak
