资源描述:
《udhcp源码详解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、udhcp源码详解(一)之文件组织结构(dhcpserver)--转udhcp目录下有十几个源文件,一个源文件相对应一个模块,完成一系列相关的功能,例如在static_leases.c主要针对static_lease链表增删查找等操作。 dhcpd.c—— 整个dhcpserver运行的主线,server开始运行是从udhcpd_main函数开
2、 始,相当于我们程序的main入口。在dhcpd_main将各个功能模块组合起
3、 来实现我们的dhcpserver。
4、
5、 arpping.c——这个文件里只有一个函数arpping,server在给客户机分配IP地址
6、 从IP地址池里找到aFreeIP后,会调用arpping函数看网络上是否
7、 主机使用该地址。
8、 common.c — 引用文件的注释:Functio
9、nsfordebuggingandloggingaswellassome
10、 othersimplehelper functions.
11、 file.c —— 文件名可以看出她是跟文件打交道的。file.c里有个很重要的函数
12、 read_config,读取默认配置信息和从配置文件udhcpd.conf文件里读
13、 取配置信息,从网上Down个udhcpd.conf,她和Linux下其他配置文
14、
15、 件格式一样,以后写这类函数时候可以模仿着写。
16、 leases.c—— 针对在dhcpd.h文件里声明的structdhcpOfferedAddr结构的操作函
17、 数。
18、 option.c—— 在dhcp交互的数据报文中有个选项字段options,该文件里的函数操作
19、 对象也就是选项信息。
20、serverpacket.c 数据报文发送之前,根据不同情况对各个字段的填充相应的信息。
21、
22、
23、
24、
25、
26、 packet.c—— dhcp报文的发送信息封装与向网络发送。
27、 pidfile.c—— Functionstoassistinthewritingandremovingofpidfiles.
28、 主要针对 /var/run/udhcpd.pid
29、
30、 signalpipe.c— server会监听两个文件描述符,其中一个是”管道”描述符,该描述符
31、 的相应操作就在signalpipe.c文件里,另外还有对signal的设置……
32、 socket.c—— socket套接字创建,interface信息读取。
33、 static_leases.c 对在dhcpd.h里定义的structstatic_lease结构
34、体的相应操作函数。 相对应得头文件是对函数声明,以及结构体的定义和宏的定义。udhcp详解源码(序)最近负责接入模块,包括dhcp、ipoe和pppoe等等。所以需要对dhcp和ppp这几个app的源代码进行一些分析。网上有比较好的文章,参考并补充自己的分析。 这篇udhcp详解是基于busybox-1.20里的 …/busybox-1.20/networking/udhcp/目录下的源码进行讲解与分析,主要是对udhcpserver端源码进行的讲解,client端相对于server端相对简单一些,源代
35、码上面表现的实现思想大体相似。该系列的讲解分析是在源代码的基础上,所以并没有打算以单独章节来讲解DHCP协议工作交互流程,也就是已经了解掌握了DHCP协议,用C来实现而已。udhcp源码详解(二)--转定义的数据结构对于C程序的重要性,不言而喻。面向对象设计的程序是一个个对象的集合,而面向过程语言设计的程序则是数据结构与算法的集合。下面来分析的是dhcpserver中的定义结构体:1)、在packet.h文件里定义了DHCP报