1.前言
本文主要讲述高层协议,包括DHCP
2.DHCP
2.1 从应用的角度看DHCP
你必须确保在编译和链接时使能DHCP,可通过在文件lwipopts.h里面定义LWIP_DHCP选项,该选项会加入一个dhcp struct的指针到netif结构体里面。
dhcp_start()将会分配一个dhcp 结构体。另外,LWIP_UDP一定要设置为非零的数值,由于DHCP是一个运行在UDP上的协议。
使用DHCP的设置很简单,你只要在初始化完接口后调用函数
dhcp_start()
为了能更好的正确处理租赁协议,DHCP有一对相关的时间函数可以被调用。你只要在你的主循环里调用下面函数来处理所有协议的定时器。
sys_check_timeouts()
然后你可以检查你的接口的->dhcp->state是否等于DHCP_BOUND,来进行下一步的操作。
注:For LWIP 2.0 you need to call dhcp_supplied_address(const struct netif *netif) instead
如果你要经常处理网络的变动,比如,一个移动系统经常接入不同的网络和拔除,那么你要告知DHCP这一相关状态,这个一般使用dhcp_network_changed()函数。
然而,协议栈不仅要告知DHCP还要通知AUTOIP和IGMP该链接的改变,因此正确的调用如下所示:
netif_set_link_up(&mynetif);
netif_set_link_down(&mynetif);
你需要绑定链接的变化到你的接口。如果你想要更多的了解