diff options
| author | aozima <[email protected]> | 2017-12-27 20:09:28 +0800 |
|---|---|---|
| committer | aozima <[email protected]> | 2017-12-27 20:09:28 +0800 |
| commit | 1215737ec9460a46d87292760ad405a8eb6a0cf4 (patch) | |
| tree | d9779d07e3197a3eb981ba76a886abce1ad14b13 /components | |
| parent | 6fe49b1af7c8c0d7eb0615b1a5252b0bcbcb2c7d (diff) | |
[LWIP] update dhcpd: set ip when dhcpd start.
Diffstat (limited to 'components')
| -rw-r--r-- | components/net/lwip_dhcpd/dhcp_server.c | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/components/net/lwip_dhcpd/dhcp_server.c b/components/net/lwip_dhcpd/dhcp_server.c index a549d8d0e1..13c6ecc7e1 100644 --- a/components/net/lwip_dhcpd/dhcp_server.c +++ b/components/net/lwip_dhcpd/dhcp_server.c @@ -124,7 +124,7 @@ static rt_err_t _low_level_dhcp_send(struct netif *netif, netif->linkoutput(netif, p); pbuf_free(p); - + return RT_EOK; } @@ -140,7 +140,7 @@ static void dhcpd_thread_entry(void *parameter) int optval = 1; /* get ethernet interface. */ - netif = (struct netif*) parameter; + netif = (struct netif *) parameter; RT_ASSERT(netif != RT_NULL); /* our DHCP server information */ @@ -381,29 +381,43 @@ static void dhcpd_thread_entry(void *parameter) } } -void dhcpd_start(char* netif_name) +void dhcpd_start(char *netif_name) { rt_thread_t thread; struct netif *netif = netif_list; - if(strlen(netif_name) > sizeof(netif->name)) + if (strlen(netif_name) > sizeof(netif->name)) { rt_kprintf("network interface name too long!\r\n"); return; } - while(netif != RT_NULL) + while (netif != RT_NULL) { - if(strncmp(netif_name, netif->name, sizeof(netif->name)) == 0) + if (strncmp(netif_name, netif->name, sizeof(netif->name)) == 0) break; netif = netif->next; - if( netif == RT_NULL ) + if (netif == RT_NULL) { rt_kprintf("network interface: %s not found!\r\n", netif_name); return; } } + if (1) + { + extern void set_if(char *netif_name, char *ip_addr, char *gw_addr, char *nm_addr); + + char ip_str[4 * 4 + 1]; + + dhcp_stop(netif); + + sprintf(ip_str, "%d.%d.%d.%d", DHCPD_SERVER_IPADDR0, DHCPD_SERVER_IPADDR1, DHCPD_SERVER_IPADDR2, DHCPD_SERVER_IPADDR3); + set_if(netif_name, ip_str, "0.0.0.0", "255.255.255.0"); + + netif_set_up(netif); + } + thread = rt_thread_create("dhcpd", dhcpd_thread_entry, netif, 1024, |
