DHCP源码分析-dhcpv6模块


一,主流程分析






dhcpv6主要流程

{

  调用log_packet_in()记录接收包的信息;

  调用build_dhcpv6_reply(&reply, packet)创建回复packet;

  发送reply;

}

 

build_dhcpv6_reply()函数完成对不同的dhcpv6_msg_type对应的包进行处理。

 

右边流程图为不同的消息类型对应的处理流程;包括solicit、、request、confirm、reply等。

 

包处理函数用到valid_client_msg()数据包验证函数,函数作用:若请求信息不包括客户端标识符的选项,或有服务器标识符的选项,服务器必须丢弃该信息。



二,dhcpv6_confirm()函数作用及分析





(对应上述整体流程的第二步_第四条件)

dhcpv6_confirm()的作用是:当客户认为这可能是一个新的链接,它发送一个confirm确认消息。

基本流程为:

{

/*client基本消息认证*/

/*不要处理未识别的没有IA的confirms*/

/*删除IA_PD选项*/

/*变量初始化*/

/*调用shared_network_from_packet6(&shared, packet)确定客户端连接的shared work,

若没有任何客户端所在网络的信息则不能回复*/

/*如果没有子网记录,没有关于此子网信息——终止confirms*/

/*判定是否IA的所有地址都适合用来连接*/

/*如果客户机没有提供地址,不要reply*/

/*start_reply()函数,设置reply*/

/*set_status_code()函数,设置状态*/

/*只有一个选项,则添加它*/

/*给调用者返回reply*/

}



三,lease_to_client()函数作用及分析






lease_to_client()函数在构建租约的reply时候被调用

基本流程为:

{    /*调shared_network_from_packet6()函数,找shared network;定位client*/

/*初始化reply*/

/*调用start_reply()函数开始reply操作*/

/*如果packet中有ORO选项请求选项,获取它*/

/*从packet中找到相匹配的主机记录,若存在,则client所在共享网络有效*/

/*调seek_shared_host()检查“硬件”匹配*/

/*处理客户端提供的IA到reply缓冲区。*/【包括D6O_IA_NA和D6O_IA_TA】

/*IA_PD也同样处理*/

/*如果没有资源且不是request信息,不要回复*/

/*给调用者返回reply*/

}



  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值