 |
io6Library
WIZnet Dual Stack TCP/IP Ethernet Controller Driver
|
Go to the documentation of this file.
63 #define STATE_DHCPV4_INIT 0
64 #define STATE_DHCPV4_DISCOVER 1
65 #define STATE_DHCPV4_REQUEST 2
66 #define STATE_DHCPV4_LEASED 3
67 #define STATE_DHCPV4_REREQUEST 4
68 #define STATE_DHCPV4_RELEASE 5
69 #define STATE_DHCPV4_STOP 6
71 #define DHCPV4_FLAGSBROADCAST 0x8000
72 #define DHCPV4_FLAGSUNICAST 0x0000
75 #define DHCPV4_BOOTREQUEST 1
76 #define DHCPV4_BOOTREPLY 2
79 #define DHCPV4_DISCOVER 1
80 #define DHCPV4_OFFER 2
81 #define DHCPV4_REQUEST 3
82 #define DHCPV4_DECLINE 4
85 #define DHCPV4_RELEASE 7
86 #define DHCPV4_INFORM 8
88 #define DHCPV4_HTYPE10MB 1
89 #define DHCPV4_HTYPE100MB 2
91 #define DHCPV4_HLENETHERNET 6
95 #define INFINITE_LEASETIME 0xffffffff
98 #define RIP_MSG_SIZE (236+OPT_SIZE)
231 void reg_dhcpv4_cbfunc(
void(*ip_assign)(
void),
void(*ip_update)(
void),
void(*ip_conflict)(
void));
254 int8_t parseDHCPCMSG(
void);
284 void reg_dhcpv4_cbfunc(
void(*ip_assign)(
void),
void(*ip_update)(
void),
void(*ip_conflict)(
void))
290 if(ip_update) dhcp_ipv4_update = ip_update;
291 if(ip_conflict) dhcp_ipv4_conflict = ip_conflict;
306 *(ptmp+0) = (uint8_t)((
DHCPV4_XID & 0xFF000000) >> 24);
307 *(ptmp+1) = (uint8_t)((
DHCPV4_XID & 0x00FF0000) >> 16);
308 *(ptmp+2) = (uint8_t)((
DHCPV4_XID & 0x0000FF00) >> 8);
309 *(ptmp+3) = (uint8_t)((
DHCPV4_XID & 0x000000FF) >> 0);
419 #ifdef _DHCPV4_DEBUG_
420 printf(
"> Send DHCP_DISCOVER\r\n");
517 #ifdef _DHCPV4_DEBUG_
518 printf(
"> Send DHCP_REQUEST\r\n");
578 #ifdef _DHCPV4_DEBUG_
579 printf(
"\r\n> Send DHCPV4_DECLINE\r\n");
601 #ifdef _DHCPV4_DEBUG_
602 printf(
"DHCP message : %d.%d.%d.%d(%d) %d received. \r\n",svr_addr[0],svr_addr[1],svr_addr[2], svr_addr[3],svr_port, len);
612 #ifdef _DHCPV4_DEBUG_
613 printf(
"No My DHCP Message. This message is ignored.\r\n");
622 #ifdef _DHCPV4_DEBUG_
623 printf(
"Another DHCP sever send a response message. This is ignored.\r\n");
662 p = p + (opt_len - 4);
671 p = p + (opt_len - 4);
680 #ifdef _DHCPV4_DEBUG_
732 #ifdef _DHCPV4_DEBUG_
733 printf(
"> Receive DHCP_OFFER\r\n");
748 #ifdef _DHCPV4_DEBUG_
749 printf(
"> Receive DHCP_ACK\r\n");
760 dhcp_ipv4_conflict();
765 #ifdef _DHCPV4_DEBUG_
766 printf(
"> Receive DHCP_NACK\r\n");
779 #ifdef _DHCPV4_DEBUG_
780 printf(
"> Maintains the IP address \r\n");
810 #ifdef _DHCPV4_DEBUG_
811 printf(
">IP changed.\r\n");
815 #ifdef _DHCPV4_DEBUG_
816 else printf(
">IP is continued.\r\n");
822 #ifdef _DHCPV4_DEBUG_
823 printf(
"> Receive DHCP_NACK, Failed to maintain ip\r\n");
916 #ifdef _DHCPV4_DEBUG_
917 printf(
"\r\n> Check leased IP - OK\r\n");
934 uint8_t zeroip[4] = {0,0,0,0};
1015 return nibble +
'0';
1017 return nibble + (
'A'-0x0A);
void getDNSfromDHCPv4(uint8_t *ip)
datasize_t sendto(uint8_t sn, uint8_t *buf, datasize_t len, uint8_t *addr, uint16_t port, uint8_t addrlen)
Send datagram to the peer specifed by destination IP address and port number passed as parameter.
uint8_t DHCPV4_REAL_SIP[4]
#define STATE_DHCPV4_REQUEST
send REQEUST and wait ACK or NACK
uint8_t DHCPv4_allocated_ip[4]
int8_t socket(uint8_t sn, uint8_t protocol, uint16_t port, uint8_t flag)
Open a socket.
#define SOCKERR_TIMEOUT
Timeout occurred.
#define DHCPV4_REQUEST
REQUEST message in OPT of RIP_MSG.
void getIPfromDHCPv4(uint8_t *ip)
uint32_t dhcpv4_tick_next
#define MAGIC_COOKIE
You should not modify it number.
void default_ipv4_conflict(void)
#define STATE_DHCPV4_DISCOVER
send DISCOVER and wait OFFER
#define DHCPV4_FLAGSBROADCAST
The broadcast value of flags in RIP_MSG.
volatile uint32_t dhcpv4_tick_1s
void send_DHCPv4_DECLINE(void)
#define DHCPV4_BOOTREQUEST
Request Message used in op of RIP_MSG.
#define DHCPV4_HOPS
Used in hops of RIP_MSG.
#define INFINITE_LEASETIME
Infinite lease time.
void reset_DHCPv4_timeout(void)
#define DHCPV4_FLAGSUNICAST
The unicast value of flags in RIP_MSG.
@ DHCP_IPV4_LEASED
Stand by.
void reg_dhcpv4_cbfunc(void(*ip_assign)(void), void(*ip_update)(void), void(*ip_conflict)(void))
void(* dhcp_ipv4_assign)(void)
datasize_t getSn_RX_RSR(uint8_t s)
uint16_t flags
DHCPV4_FLAGSBROADCAST or DHCPV4_FLAGSUNICAST
#define SOCK_UDP
UDP SOCKETn status.
@ DHCP_IPV4_CHANGED
Change IP address by new ip from DHCP (if cbfunc == null, act as default default_ip_update)
uint8_t DHCPv4_allocated_dns[4]
void DHCPv4_init(uint8_t s, uint8_t *buf)
uint8_t DHCPv4_allocated_sn[4]
#define STATE_DHCPV4_LEASED
ReceiveD ACK and IP leased.
void send_DHCPv4_REQUEST(void)
#define DHCPV4_WAIT_TIME
Wait Time 10s.
uint8_t check_DHCPv4_timeout(void)
#define Sn_MR_UDP
IPv4 UDP mode.
void default_ipv4_update(void)
uint8_t hlen
DHCPV4_HLENETHERNET
#define DHCPV4_SECS
Used in secs of RIP_MSG.
@ DHCPV4_FAILED
Processing Fail.
uint32_t getDHCPv4Leasetime(void)
#define MAX_DHCPV4_RETRY
Maximum retry count.
void send_DHCPv4_DISCOVER(void)
#define DHCPV4_HTYPE10MB
Used in type of RIP_MSG.
uint8_t DHCPv4_allocated_gw[4]
uint8_t OPT[OPT_SIZE]
Option.
@ DHCPV4_STOPPED
Stop processing DHCP protocol.
uint8_t op
DHCPV4_BOOTREQUEST or DHCPV4_BOOTREPLY
#define DHCPV4_ACK
ACK message in OPT of RIP_MSG.
int8_t dhcpv4_retry_count
uint32_t dhcpv4_lease_time
#define DHCPV4_NAK
NACK message in OPT of RIP_MSG.
int8_t parseDHCPv4MSG(void)
#define DHCPV4_HLENETHERNET
Used in hlen of RIP_MSG.
void getGWfromDHCPv4(uint8_t *ip)
int8_t close(uint8_t sn)
Close a SOCKET.
#define SYCR0_RST
RST bit of _SYCR0_.
uint8_t ciaddr[4]
Request IP to DHCP sever
void DHCPv4_time_handler(void)
void default_ipv4_assign(void)
@ DHCPV4_RUNNING
Processing DHCP protocol.
#define STATE_DHCPV4_STOP
Stop processing DHCP.
#define DHCPV4_SERVER_PORT
DHCP server port number.
#define DHCPV4_DISCOVER
DISCOVER message in OPT of RIP_MSG.
#define DHCPV4_DECLINE
DECLINE message in OPT of RIP_MSG.
#define DHCPV4_OFFER
OFFER message in OPT of RIP_MSG.
uint8_t htype
DHCPV4_HTYPE10MB or DHCPV4_HTYPE100MB
#define STATE_DHCPV4_REREQUEST
send REQUEST for maintaining leased IP
void getSNfromDHCPv4(uint8_t *ip)
#define DHCPV4_CLIENT_PORT
DHCP client port number.
char NibbleToHex(uint8_t nibble)
uint32_t xid
DHCPV4_XID This increase one every DHCP transaction.
#define STATE_DHCPV4_INIT
Initialize.
datasize_t recvfrom(uint8_t sn, uint8_t *buf, datasize_t len, uint8_t *addr, uint16_t *port, uint8_t *addrlen)
Receive datagram from a peer.
int8_t check_DHCPv4_leasedIP(void)
uint8_t yiaddr[4]
Offered IP from DHCP server
uint8_t chaddr[16]
DHCP client 6bytes MAC address. Others is filled to zero.
uint8_t OLD_allocated_ip[4]