原创 LwIP DHCP流程

2009-6-26 13:08 6042 14 16 分类: MCU/ 嵌入式

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 】

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户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地址联系起来。

相关推荐阅读
用户1156376 2014-08-18 17:23
[博客大赛]MDK下代码的分段管理 续3
继续写点分段管理的问题。 设计思想主要是设计一个通用的BSP,固化后只需要修改APP代码就可以,这适用于远程升级的系统或是进行二次开发的系统。 考虑到编译器链接的时候会把没有使用的代码段(...
用户1156376 2014-02-27 18:14
Freescale MCU SPI
Freescale S12 SPI: 0. 以下所述为查询模式使用SPI 1. SPI控制器有两个中断, 数据发送(SPTEF)和数据接收(SPIF) 2. 数据发送(SPTEF)标志...
用户1156376 2014-02-26 09:17
Freescale MCU摘记
仅用于记录Freescale的点滴记录: 1. 把AD口用作IO口的方法: 除了正常的设置外,还需要把 ATDDIEN 寄存器写为0xFF, 这样使能了数字IO。否则默认为AD输入。 ...
用户1156376 2013-12-14 11:33
[STM32]MDK下代码的分段管理 续2
前文所述的代码分段,限定比较大,对于使用 #pragma arm section code=".ARM.__at_0x8100000" 固定地址的方式,每个文件都需要指定不同的地址以区别。...
用户1156376 2013-12-09 18:12
[STM32]MDK下代码的分段管理
编译大型的程序时,可能某一段代码固定之后不再改变(比如BSP),而应用部分经常修改。在这种情况下,如果使用在线升级或是Bootloader的方式升级程序时,你就觉得每次升级的代码有一部分是重复的(...
用户1156376 2012-10-14 09:10
【uCOS-III移植笔记】OS启动过程
(1) 关闭系统中断 (2) CPU_Init(); 初始化CPU服务(时间戳、中断时间测量、CPU信息初始化等) (3) OSInit(); 初始化系统(系统变量、系统任务...
EE直播间
更多
我要评论
2
14
关闭 站长推荐上一条 /3 下一条