commit
236fd82e5d
@ -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 @@
|
|||||||
#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 @@
|
|||||||
#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)
|
|||||||
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)
|
|||||||
{
|
{
|
||||||
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 @@
|
|||||||
#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
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user