DHCP Client

Committer:
dgriffin65
Date:
Thu Jun 15 20:17:57 2017 +0000
Revision:
0:9697009514d0
Updated to mbed-os

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dgriffin65 0:9697009514d0 1 // DHCPClient.h 2013/4/10
dgriffin65 0:9697009514d0 2 #ifndef DHCPCLIENT_H
dgriffin65 0:9697009514d0 3 #define DHCPCLIENT_H
dgriffin65 0:9697009514d0 4 #include "wiznet.h"
dgriffin65 0:9697009514d0 5 #include "UDPSocket.h"
dgriffin65 0:9697009514d0 6
dgriffin65 0:9697009514d0 7 #define DHCP_OFFSET_OP 0
dgriffin65 0:9697009514d0 8 #define DHCP_OFFSET_XID 4
dgriffin65 0:9697009514d0 9 #define DHCP_OFFSET_YIADDR 16
dgriffin65 0:9697009514d0 10 #define DHCP_OFFSET_SIADDR 20
dgriffin65 0:9697009514d0 11 #define DHCP_OFFSET_OPTIONS 240
dgriffin65 0:9697009514d0 12 #define DHCP_MAX_PACKET_SIZE 600
dgriffin65 0:9697009514d0 13
dgriffin65 0:9697009514d0 14 // DHCP Message Type
dgriffin65 0:9697009514d0 15 #define DHCPDISCOVER 1
dgriffin65 0:9697009514d0 16 #define DHCPOFFER 2
dgriffin65 0:9697009514d0 17 #define DHCPREQUEST 3
dgriffin65 0:9697009514d0 18 #define DHCPDECLINE 4
dgriffin65 0:9697009514d0 19 #define DHCPACK 5
dgriffin65 0:9697009514d0 20 #define DHCPNAK 6
dgriffin65 0:9697009514d0 21 #define DHCPRELEASE 7
dgriffin65 0:9697009514d0 22 #define DHCPINFORM 8
dgriffin65 0:9697009514d0 23
dgriffin65 0:9697009514d0 24 class DHCPClient {
dgriffin65 0:9697009514d0 25 public:
dgriffin65 0:9697009514d0 26 DHCPClient();
dgriffin65 0:9697009514d0 27 int setup(NetworkStack *ns, int timeout_ms = 15*1000);
dgriffin65 0:9697009514d0 28 uint8_t chaddr[6]; // MAC
dgriffin65 0:9697009514d0 29 uint8_t yiaddr[4]; // IP
dgriffin65 0:9697009514d0 30 uint8_t dnsaddr[4]; // DNS
dgriffin65 0:9697009514d0 31 uint8_t gateway[4];
dgriffin65 0:9697009514d0 32 uint8_t netmask[4];
dgriffin65 0:9697009514d0 33 uint8_t siaddr[4];
dgriffin65 0:9697009514d0 34 private:
dgriffin65 0:9697009514d0 35 int discover();
dgriffin65 0:9697009514d0 36 int request();
dgriffin65 0:9697009514d0 37 int offer(uint8_t buf[], int size);
dgriffin65 0:9697009514d0 38 void add_buf(uint8_t* buf, int len);
dgriffin65 0:9697009514d0 39 void fill_buf(int len, uint8_t data = 0x00);
dgriffin65 0:9697009514d0 40 void add_buf(uint8_t c);
dgriffin65 0:9697009514d0 41 void add_option(uint8_t code, uint8_t* buf = NULL, int len = 0);
dgriffin65 0:9697009514d0 42 bool verify(uint8_t buf[], int len);
dgriffin65 0:9697009514d0 43 void callback();
dgriffin65 0:9697009514d0 44 UDPSocket* m_udp;
dgriffin65 0:9697009514d0 45 SocketAddress m_server;
dgriffin65 0:9697009514d0 46 uint8_t xid[4];
dgriffin65 0:9697009514d0 47 bool exit_flag;
dgriffin65 0:9697009514d0 48 Timer m_interval;
dgriffin65 0:9697009514d0 49 int m_retry;
dgriffin65 0:9697009514d0 50 uint8_t m_buf[DHCP_MAX_PACKET_SIZE];
dgriffin65 0:9697009514d0 51 int m_pos;
dgriffin65 0:9697009514d0 52 //WIZnet_Chip* eth;
dgriffin65 0:9697009514d0 53 };
dgriffin65 0:9697009514d0 54 #endif //DHCPCLIENT_H