DHCP源码分析_dhcpd后台进程子模块
dhcpd是dhcp服务器端后台进程文件,dhcpd后台程序总是读取配置文件 /etc/dhcpd.conf。
一,守护进程的基本流程
dhcpd基本流程为:
main()
{
/ *设置isc和dns库管理* /
/ *建立客户分类系统* /
/ *初始化omapi系统* /
/ *为通用对象设置OMAPI封装器* /
/ *为各种服务器数据库内部对象建立OMAPI封装器* /
/ *记录标准错误* /
/ *解析命令行参数* /
/ *如果选项有,获得用户和组信息* /
/ *绕过ISC组声明* /
/ *默认DHCP/BOOTP端口。* /
/ *dhcp选项域设置初始化* /
/ *在解析之前添加ddn更新枚举类型* /
/ *设置各种钩子函数* /
/ *设置标准名称服务更新例程。* /
/ *初始化icmp支持* /
/ *读取dhcpd.conf文件…* /
/ *启动数据库* /
/ *发现所有网络接口,并初始化它们* /
/ *成为守护进程的第一部分* /
/ *成为会话的引导,并获得pid* /
/ *接收数据包并调用dispatch()函数调度* /
}
二,DHCP服务器工作流程
1,初始化DHCP服务器。
2,初始化请求模块,监听客户请求。
3,当客户请求到来时,调用处理线程来处理应答客户端请求。
4,处理线程处理完请求信息,返回给客户端处理结果。等待下一个客户请求。
在处理请求模块中调用dispatch()函数,根据不同类型的包,接收和调度packet。处理请求模块在处理任务时,首先根据包类型的不同,调用do_packet/do_packet6函数分析处理客户请求信息包,若调用do_packet则先判断请求包的类型是bootp还是dhcp。最后,分别调用bootp子模块和dhcp/dhcpv6子模块进行处理,如下: