udhcp源码详解(五)

udhcp源码详解(四)             之DHCP包--options字段

Author : hui <632254504@qq.com>

From : <http://blog.csdn.net/hui_love2046>

Created : 2010-10-25

 

           中间有很长一段时间没有更新udhcp源码详解的博客,主要是源码里的函数太多,不知道要不要一个一个讲下去,要知道讲DHCP的实现理论的话一篇博文也就可以大致的讲完,但实现的源码却要关心很多的问题,比如说,理论上说从IP地址池取到一个空闲的IP,就这么一句,在源码的体现也是一大段。算啦,讲多少算多少吧,进入主题!

            struct dhcpMessage报文里uint8_t options[308]字段,在整个DHCP过程中是报文的一个很重要的字段,博文的系列(二)有讲解该字段的数据组织方式,CLV(Code + Len + Value),现在来讲解下怎么把选项信息添加进该字段,以及怎么从该字段取到相应的选项信息。

            options字段存储三类数据:

            a).  DHCP_PADDING           填充字节, 没有任何意义,填充 0x00

            b).  DHCP_END                   potions字段结束的标志              0xFF

            c).  选项信息<CLV>          对于DHCP过程真正有价值的信息,承载了选项数据(V)

 

对于选options字段的操作主要就是read/write value:

1、根据选项信息的CODE从option字段取出选项信息.

 

在源码busybox 1.2的udhcp源码中,对于从options字段取出选项信息,在对选项过载的处理是存在错误的,

 

 

  2、向options字段写入选项信息

         a).  写入是添加在options字段中最后的选项后面,即DHCP_END标志之前

               查找DHCP_END标志字段:

        b).   选项信息已经在一个字符串里以CLV方式组织好,直接copy到DHCP_END标志位置,DHCP_END向后移动:

        c).  把选项信息按CLV的方式组织好存放到一个字符串里,最后调用add_option_string把在字符串内组织好的选项信息添加进options字段:

  

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值