您的位置:首页 > 移动开发 > Android开发

android 4.0 系统设置dhcp获取ip增加option60 选项

2013-05-31 17:34 1286 查看
搜索了很多资料,介绍都是修改/system/core/libnetutils下面的代码

dhcp 获取ip过程;

1、先由客户端发送discover消息,这个消息属于广播,网内的dhcp都会收到这个消息,一般在这个消息内增加option60选项

2、服务器如果能够提供给客户端一个ip地址,则会给客户端发送一个offer消息,里面包含提供的ip消息

3、客户端一般按照谁最先给提供ip,就给那个服务器做出请求,如果没有option的限制的话。如果增加了,则只接受指定服务器提供的ip,并给这个服务器发送request消息

4、服务器给客户端发送ack确认消息,或者nak消息

抓包分析,就这几个消息。

按照这个说明,应该在构建discover消息里面加入option60选项,

在dhcp_msg.c init_dhcp_discover_msg函数里面,增加了OPT_CLASS_ID即60选项

编译这个文件夹,将生成的libnetutils.so push到/system/lib下,重启机顶盒抓包,没在discover里面发现option60选项,郁闷吧,改了n久,加了很多打印,始终就是没有。

继续查资料。

有人说在dhcp_do_request函数里面(dhcp_utils.c)修改damon_cmd,这个原理实在是不明白。在这个文件加了LOGD打印,果然出来了,打印damon_cmd如下:

daemon_cmd dhcpcd_eth0: -h android-ce2fe875ba037a46 eth0

看来dhcp是走了这个函数了。兴奋中。离成功说明不远了啊。哈哈

snprintf(daemon_cmd, sizeof(daemon_cmd), "%s_%s:-i %s -h %s %s", DAEMON_NAME,daemon_suffix,DHCP_OPTION60, prop_value, interface);

DHCP_OPTION60是指定的option60的字符串

加入了-i 选项就是option60了,打印如下

daemon_cmd dhcpcd_eth0:-i STB -h android-ce2fe875ba037a46 eth0

编译,重新将so库push到机顶盒上,抓包,发现ok了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: