未验证 提交 236fd82e 编写于 作者: B Bernard Xiong 提交者: GitHub

Merge pull request #1418 from aozima/DHCPD

update DHCPD
...@@ -201,6 +201,16 @@ config LWIP_USING_DHCPD ...@@ -201,6 +201,16 @@ config LWIP_USING_DHCPD
bool "Enable DHCP server" bool "Enable DHCP server"
default n default n
if LWIP_USING_DHCPD
config DHCPD_SERVER_IP
string "DHCPD SERVER IP address"
default 192.168.169.1
config DHCPD_USING_ROUTER
bool "alloc gateway ip for router"
default y
endif
endif endif
endmenu endmenu
...@@ -41,33 +41,30 @@ ...@@ -41,33 +41,30 @@
#include <lwip/init.h> #include <lwip/init.h>
#if (LWIP_VERSION) >= 0x02000000U #if (LWIP_VERSION) >= 0x02000000U
#include <lwip/prot/dhcp.h> #include <lwip/prot/dhcp.h>
#endif #endif
/* DHCP server option */ /* DHCP server option */
/* allocated client ip range */ /* allocated client ip range */
#ifndef DHCPD_CLIENT_IP_MIN #ifndef DHCPD_CLIENT_IP_MIN
#define DHCPD_CLIENT_IP_MIN 2 #define DHCPD_CLIENT_IP_MIN 2
#endif #endif
#ifndef DHCPD_CLIENT_IP_MAX #ifndef DHCPD_CLIENT_IP_MAX
#define DHCPD_CLIENT_IP_MAX 254 #define DHCPD_CLIENT_IP_MAX 254
#endif #endif
/* the DHCP server address */ /* the DHCP server address */
#ifndef DHCPD_SERVER_IPADDR0 #ifndef DHCPD_SERVER_IP
#define DHCPD_SERVER_IPADDR0 192UL #define DHCPD_SERVER_IP "192.168.169.1"
#define DHCPD_SERVER_IPADDR1 168UL
#define DHCPD_SERVER_IPADDR2 169UL
#define DHCPD_SERVER_IPADDR3 1UL
#endif #endif
//#define DHCP_DEBUG_PRINTF //#define DHCP_DEBUG_PRINTF
#ifdef DHCP_DEBUG_PRINTF #ifdef DHCP_DEBUG_PRINTF
#define DEBUG_PRINTF rt_kprintf("[DHCP] "); rt_kprintf #define DEBUG_PRINTF rt_kprintf("[DHCP] "); rt_kprintf
#else #else
#define DEBUG_PRINTF(...) #define DEBUG_PRINTF(...)
#endif /* DHCP_DEBUG_PRINTF */ #endif /* DHCP_DEBUG_PRINTF */
/* we need some routines in the DHCP of lwIP */ /* we need some routines in the DHCP of lwIP */
...@@ -79,11 +76,11 @@ ...@@ -79,11 +76,11 @@
#define BUFSZ 1024 #define BUFSZ 1024
#ifndef MAC_ADDR_LEN #ifndef MAC_ADDR_LEN
#define MAC_ADDR_LEN 6 #define MAC_ADDR_LEN 6
#endif #endif
#ifndef MAC_TABLE_LEN #ifndef MAC_TABLE_LEN
#define MAC_TABLE_LEN 4 #define MAC_TABLE_LEN 4
#endif #endif
struct mac_addr_t struct mac_addr_t
...@@ -215,12 +212,26 @@ static void dhcpd_thread_entry(void *parameter) ...@@ -215,12 +212,26 @@ static void dhcpd_thread_entry(void *parameter)
struct dhcp_msg *msg; struct dhcp_msg *msg;
int optval = 1; int optval = 1;
struct mac_addr_t mac_addr; struct mac_addr_t mac_addr;
uint8_t DHCPD_SERVER_IPADDR0, DHCPD_SERVER_IPADDR1, DHCPD_SERVER_IPADDR2, DHCPD_SERVER_IPADDR3;
/* get ethernet interface. */ /* get ethernet interface. */
netif = (struct netif *) parameter; netif = (struct netif *) parameter;
RT_ASSERT(netif != RT_NULL); RT_ASSERT(netif != RT_NULL);
/* our DHCP server information */ /* our DHCP server information */
{
#if (LWIP_VERSION) >= 0x02000000U
ip4_addr_t addr;
#else
struct ip_addr addr;
#endif /* LWIP_VERSION */
ip4addr_aton(DHCPD_SERVER_IP, &addr);
DHCPD_SERVER_IPADDR0 = (ntohl(addr.addr) >> 24) & 0xFF;
DHCPD_SERVER_IPADDR1 = (ntohl(addr.addr) >> 16) & 0xFF;
DHCPD_SERVER_IPADDR2 = (ntohl(addr.addr) >> 8) & 0xFF;
DHCPD_SERVER_IPADDR3 = (ntohl(addr.addr) >> 0) & 0xFF;
}
DEBUG_PRINTF("DHCP server IP: %d.%d.%d.%d client IP: %d.%d.%d.%d-%d\n", DEBUG_PRINTF("DHCP server IP: %d.%d.%d.%d client IP: %d.%d.%d.%d-%d\n",
DHCPD_SERVER_IPADDR0, DHCPD_SERVER_IPADDR1, DHCPD_SERVER_IPADDR0, DHCPD_SERVER_IPADDR1,
DHCPD_SERVER_IPADDR2, DHCPD_SERVER_IPADDR3, DHCPD_SERVER_IPADDR2, DHCPD_SERVER_IPADDR3,
...@@ -492,12 +503,9 @@ void dhcpd_start(const char *netif_name) ...@@ -492,12 +503,9 @@ void dhcpd_start(const char *netif_name)
{ {
extern void set_if(const char *netif_name, const char *ip_addr, const char *gw_addr, const char *nm_addr); extern void set_if(const char *netif_name, const char *ip_addr, const char *gw_addr, const char *nm_addr);
char ip_str[4 * 4 + 1];
dhcp_stop(netif); 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, DHCPD_SERVER_IP, "0.0.0.0", "255.255.255.0");
set_if(netif_name, ip_str, "0.0.0.0", "255.255.255.0");
netif_set_up(netif); netif_set_up(netif);
} }
......
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
#ifndef DHCPV4_SERVER_H__ #ifndef DHCPV4_SERVER_H__
#define DHCPV4_SERVER_H__ #define DHCPV4_SERVER_H__
void dhcpd_start(const char* netif_name); void dhcpd_start(const char *netif_name);
#endif #endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册