Android 自带的dhcpcd 本身是支持IPv4LL AutoIP 功能。
http://roy.marples.name/projects/dhcpcd/
但是Android Wifi 连接的时候还是不能获到 IPv4LL 定义的 AutoIP。
有两个原因导致Android Wifi 连接不能获得 IPv4LL 定义的 AutoIP。
1. Android framework 中 dhcp 的超时时间是30s 而 dhcpcd 默认的超时时间也是30s
Android framework 在30s超时后会强制断开wifi 连接,而dhcpcd 只有在30s超时后才会作IPV4LL地址分配,
所以默认情况下永远也不会作IPV4LL.
2. dhcpcd 收到IPV4LL 时会设置Android dhcp失败
setprop dhcp.${interface}.result "failed"
综上,如果要使Android 支持 AutoIP 功能。 需要作如下两个修改。
1. 修改
这样dhcpcd 10s 超时候继续有机会作IPv4LL 地址分配
2. 修改
/system/etc/dhcpcd/dhcpcd-hooks/95-configured
使得Android framework 认为IPV4LL 的结果作为dhcp 成功了。