[求助] DHCP AUTOIP 静态IP

longxtianya   2011-5-4 22:05 楼主

在使用DHCP获取失败后,系统会用AUTOIP来配置IP。我想让他DHCP失败后就用STATIC 静态IP。曾试过配置lwipopts.h来关闭AUTOIP,好像它也不会用静态IP。

问题1:我想在DHCP失败后就用STATIC 静态IP,该怎么做?

问题2:AUTOIP不是很明白,能帮我解释一下吗?

问题3:DHCP失败那个时间有40秒左右,太长了,在哪里改啊?

这些问题困扰了我很久,谢谢您!:

回复评论 (7)

引用: 原帖由 longxtianya 于 2011-5-4 22:05 发表 在使用DHCP获取失败后,系统会用AUTOIP来配置IP。我想让他DHCP失败后就用STATIC 静态IP。曾试过配置lwipopts.h来关闭AUTOIP,好像它也不会用静态IP。问题1:我想在DHCP失败后就用STATIC 静态IP,该怎么做?问题2 ...

问题1,可以配置成你所说的方式,,但不用 IPADDR_USE_STATIC。

问题2,AUTO IP 实际上是在一个基数上来自动生成 IP 地址,有一套防IP地址冲突的措施,可以修改这个基数来达到你的目的。

问题3,可通过减少lwipopts.h 中的 LWIP_DHCP_AUTOIP_COOP_TRIES 的值来降低你说的 DHCP 失败时间。

 

点赞  2011-5-5 10:17

回复 沙发 academic 的帖子

第一个问题,能说具体一点吗??谢谢
点赞  2011-5-5 20:16

回复 板凳 longxtianya 的帖子

不客气
你需要找到 autoip.c
将该文件开始的地方定义的 IP 基址修改为你需要的静态IP地址,这样当 DHCP 失败后,启动 AUTOIP 生成的就是你指定的静态IP地址了。
点赞  2011-5-5 21:20

回复 4楼 academic 的帖子

/* 192.168.0.0 */
#define AUTOIP_NET         0xC0A80000

/* 169.254.0.0 */
//#define AUTOIP_NET         0xA9FE0000
/* 169.254.1.0 */
#define AUTOIP_RANGE_START (AUTOIP_NET | 0x0100)
/* 169.254.254.255 */
#define AUTOIP_RANGE_END   (AUTOIP_NET | 0xFEFF)
改哪一个啊,这样行吗?例如我把它改为192.168.0.0这个段。自动获取的是192.168.168.192.这个后面两位是怎么来的啊?有没有更好的办法呢,直接让他DHCP超时了就用静态IP,像控制它DHCP超时转到autoip是在哪个函数里执行的啊?我不进行LWIP_AUTOIP宏定义的时候居然程序就是一直动态获取中
点赞  2011-5-6 20:46

回复 沙发 academic 的帖子

问题3,我在没有您说的那个文件中没有找到LWIP_DHCP_AUTOIP_COOP_TRIES 这个宏定义。您能说说关于这些操作程序是在哪执行的吗?例如这里的这个宏是在那地方对它进行判断的呢?

[ 本帖最后由 longxtianya 于 2011-5-6 21:01 编辑 ]
点赞  2011-5-6 21:00

autoip

longxtianya:您好,请问你的那个autoip改好了么
点赞  2012-1-17 10:07
1楼 说的很有用 受教了 谢谢
点赞  2012-8-2 16:03
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复