首页 > 系统相关 >DHCP源码分析_dhcpd后台进程子模块

DHCP源码分析_dhcpd后台进程子模块

时间:2023-02-17 18:14:26浏览次数:45  
标签:初始化 dhcpd 调用 请求 源码 模块 DHCP

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子模块进行处理,如下:

 

 

 

 

 

 

 



标签:初始化,dhcpd,调用,请求,源码,模块,DHCP
From: https://www.cnblogs.com/dhcpclass/p/17131127.html

相关文章

  • udhcp源码剖析(四)——DHCP服务器的superloop
    udhcpd_main的Superloop到这一步,DHCP服务器开始提供具体的服务,superloop主要包括建立socket监听及信号处理、获取并提取报文、根据state和报文内容做出响应。建立Socket......
  • 基于ISC DHCP的简单准入开源方案
    实现所需要的组件:1)LINUX操作系统;ISC-DHCP-SERVER软件2)支持DHCPSnooping、防ARP中间人攻击的接入交换机 实现简单准入的原理:ISC-DHCP-Server的配置文件dhcpd.conf......
  • ISC DHCP 分配IP流程分析
    概述在Linux的世界中,ISCDHCP被广泛应用。因为ISCDHCP的版权是允许在保留其版权声明的基础上,使用,复制,修改其源代码。对于Linux开发人员来说,在掌握了ISCDHCP分配IP的流程......
  • DHCP源码分析-dhcp模块
    一,DHCP函数流程   函数voiddhcp(structpacket*packet)是处理DHCP包的入口函数,在进入这个函数的时候,对包的解析已经完成,已经将包的内容转换成内部结构s......
  • ISC DHCP租约分析
    租约状态转换DHCP服务系统中的租约共有八种状态:空闲状态、预留状态、活跃状态、过期状态、释放状态、废弃状态、重置状态、备份状态。重置状态和备份状态为启动FAILOVER模......
  • 2、HashMap源码分析
    目录1一般数据结构及特点2HashMap基本属性说明3HashMap数据结构3.1构造函数3.2Node<k,v>分析4put过程分析4.1扩容方法resize()分析4.2put方法分析5关于HashMap5.1......
  • qiankun 2.x 运行时沙箱 源码分析
    qiankun2.x运行时沙箱源码分析简介从源码层面详细讲解了qiankun框架中的JS沙箱和样式沙箱的实现原理。序言沙箱这个词想必大家应该不陌生,即使陌生,读完这篇文......
  • linux源码解析12–page数据结构
    几个问题:1.当开启了MMU之后,CPU访问内存的最小单位是多少呢?page2.linux怎样描述这个页呢?3.linux内核里,怎么理解和使用这个页?linux内核用stuctpage来描述一个物理页面:1......
  • Callable的基本使用和源码解读
    1使用java.util.concurrent.Callable是有返回值的多线程任务:publicinterfaceCallable<V>{Vcall()throwsException;}通过实现Callable接口,在call()方......
  • CyclicBarrier源码解析
    CyclicBarrier源码解析描述:一个同步帮助,允许一组线程互相等待到达一个共同的屏障点。Cyclicbarrier在涉及固定大小的线程组的程序中非常有用,这些线程必须偶尔相互等待。......