LwIP DHCP流程:
1: netif_add: dhcpif 设为全0
netif_set_default
netif_set_up
2: dhcp_start
3: dhcpif->ip_addr.addr 该值不为0则说明取得到IP
此时需要保存IP, Mask, GateWay, 否则在以下部操作之后就没了
dhcp_release 释放DHCP, 该操作后不需要调用netif_set_down
dhcp_stop remove the DHCP client.
4: netif_set_addr 用DHCP得到的值重设IP, Mask, GateWay.
5: netif_set_up 必须设置!
注: dhcp_fine_tmr(); 必须调用
dhcp_coarse_tmr(); 要求调用
【2008-04-08 】
用户377235 2013-7-25 18:11
struct ip_addr ipaddr;
struct ip_addr netmask;
struct ip_addr gw;
/*调用LWIP初始化函数, 初始化网络接口结构体链表、内存池、pbuf结构体,启动协议栈管理进程*/
lwip_init();
#if LWIP_DHCP
ipaddr.addr = 0;
netmask.addr = 0;
gw.addr = 0;
#else
IP4_ADDR(&ipaddr, 192, 168, 0, 16); //设置网络接口的ip地址
IP4_ADDR(&netmask, 255, 255, 255, 0); //子网掩码
IP4_ADDR(&gw, 192, 168, 0, 1);
#endif
/*初始化enc28j60与LWIP的接口,参数为网络接口结构体、ip地址、 子网掩码、网关、网卡信息指针、初始化函数、输入函数*/
netif_add(&enc28j60, &ipaddr, &netmask, &gw, NULL, ðernetif_init, ðernet_input);
/*把enc28j60设置为默认网卡 .*/
netif_set_default(&enc28j60);
#if LWIP_DHCP //若使用了DHCP
dhcp_start(&enc28j60); //启动DHCP
#endif netif_set_up(&enc28j60); //使能enc28j60接口
得到自动分配的IP,如何把他和MAC地址联系起来。
用户377235 2013-7-25 18:11
struct ip_addr ipaddr;
struct ip_addr netmask;
struct ip_addr gw;
/*调用LWIP初始化函数, 初始化网络接口结构体链表、内存池、pbuf结构体,启动协议栈管理进程*/
lwip_init();
#if LWIP_DHCP
ipaddr.addr = 0;
netmask.addr = 0;
gw.addr = 0;
#else
IP4_ADDR(&ipaddr, 192, 168, 0, 16); //设置网络接口的ip地址
IP4_ADDR(&netmask, 255, 255, 255, 0); //子网掩码
IP4_ADDR(&gw, 192, 168, 0, 1);
#endif
/*初始化enc28j60与LWIP的接口,参数为网络接口结构体、ip地址、 子网掩码、网关、网卡信息指针、初始化函数、输入函数*/
netif_add(&enc28j60, &ipaddr, &netmask, &gw, NULL, ðernetif_init, ðernet_input);
/*把enc28j60设置为默认网卡 .*/
netif_set_default(&enc28j60);
#if LWIP_DHCP //若使用了DHCP
dhcp_start(&enc28j60); //启动DHCP
#endif netif_set_up(&enc28j60); //使能enc28j60接口
得到自动分配的IP,如何把他和MAC地址联系起来。