udhcp源码详解(一)之文件组织结构(dhcp server) --转
udhcp目录下有十几个源文件,一个源文件相对应一个模块,完成一系列相关的功能,例如在static_leases.c主要针对static_lease链表增删查找等操作。
dhcpd.c—— 整个dhcp server运行的主线,server开始运行是从udhcpd_main函数开
| 始,相当于我们程序的main入口。在dhcpd_main将各个功能模块组合起
| 来实现我们的dhcp server。
|
arpping.c——这个文件里只有一个函数arpping,server在给客户机分配IP地址
| 从IP地址池里找到a Free IP后,会调用arpping函数看网络上是否
| 主机使用该地址。
|
common.c — 引用文件的注释:Functions for debugging and logging as well as some
| other simple helper functions.
|
file.c —— 文件名可以看出她是跟文件打交道的。file.c里有个很重要的函数
| read_config,读取默认配置信息和从配置文件udhcpd.conf文件里读
| 取配置信息,从网上Down个udhcpd.conf,她和Linux下其他配置文
| 件格式一样,以后写这类函数时候可以模仿着写。
|
leases.c—— 针对在dhcpd.h文件里声明的struct dhcpOfferedAddr结构的操作函
| 数。
|
option.c—— 在dhcp交互的数据报文中有个选项字段options,该文件里的函数操作
| 对象也就是选项信息。
|
serverpacket.c 数据报文发送之前,根据不同情况对各个字段的填充相应的信息。
| |
| |
| packet.c—— dhcp报文的发送信息封装与向网络发送。
|
pidfile.c—— Functions to assist in the writing and removing of pidfiles.
| 主要针对 /var/run/udhcpd.pid
|
signalpipe.c— server会监听两个文件描述符,其中一个是”管道”描述符,该描述符
| 的相应操作就在signalpipe.c文件里,另外还有对signal的设置……
|
socket.c—— socket套接字创建,interface信息读取。
|
static_leases.c 对在dhcpd.h里定义的struct static_lease结构体的相应操作函数。
相对应得头文件是对函数声明,以及结构体的定义和宏的定义。
udhcp源码详解(一)之文件组织结构(dhcp server) --转的更多相关文章
- udhcp源码详解(五) 之DHCP包--options字段
中间有很长一段时间没有更新udhcp源码详解的博客,主要是源码里的函数太多,不知道要不要一个一个讲下去,要知道讲DHCP的实现理论的话一篇博文也就可以大致的讲完,但实现的源码却要关心很多的问题,比如说 ...
- udhcp源码详解(四) 之租赁IP的管理
Server端对于租赁出去的IP的管理是基于结构体dhcpOfferedAddr的,该结构体的定义是在leases.c文件里:(结构体的成员介绍说明见详解之数据结构) 1: struct dhcpOf ...
- udhcp源码详解(三)上 之配置信息的读取
上节介绍了存储管理配置信息的结构体struct server_config_t,该结构体贯穿整个server端程序的运行. 在dhcpd.c里的用该结构体定义个一个全局的变量: struct serv ...
- udhcp源码详解(二)--转
定义的数据结构对于C程序的重要性,不言而喻.面向对象设计的程序是一个个对象的集合,而面向过程语言设计的程序则是数据结构与算法的集合. 下面来分析的是dhcp server中的定义结构体: 1).在pa ...
- udhcp源码详解(三) 下 之配置信息的读取
上节讲解了read_config函数,读取配置信息到server_config的相应成员变量里,但read_config函数只负责把配置信息重文件里读出来,具体怎么把信息填写到指定的地址内,是调用ke ...
- 条件随机场之CRF++源码详解-预测
这篇文章主要讲解CRF++实现预测的过程,预测的算法以及代码实现相对来说比较简单,所以这篇文章理解起来也会比上一篇条件随机场训练的内容要容易. 预测 上一篇条件随机场训练的源码详解中,有一个地方并没有 ...
- [转]Linux内核源码详解--iostat
Linux内核源码详解——命令篇之iostat 转自:http://www.cnblogs.com/york-hust/p/4846497.html 本文主要分析了Linux的iostat命令的源码, ...
- Shiro 登录认证源码详解
Shiro 登录认证源码详解 Apache Shiro 是一个强大且灵活的 Java 开源安全框架,拥有登录认证.授权管理.企业级会话管理和加密等功能,相比 Spring Security 来说要更加 ...
- Activiti架构分析及源码详解
目录 Activiti架构分析及源码详解 引言 一.Activiti设计解析-架构&领域模型 1.1 架构 1.2 领域模型 二.Activiti设计解析-PVM执行树 2.1 核心理念 2. ...
随机推荐
- linux tomcat启动报错:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
解决方法: 1.先找出java安装路径 $ which java /data/apps/java/jdk1.8.0_91/bin/java 2.在catalina.sh中加入配置 JAVA_HOME= ...
- Django之使用celery异步完成发送验证码
使用celery的目的:将项目中耗时的操作放入一个新的进程实现 1.安装celery pip install celery 2.在项目的文件夹下创建包celery_tasks用于保存celery异步任 ...
- 6. 将单独表空间(File-Per-Table Tablespaces)复制到另一个实例
6. 将单独表空间复制到另一个实例 本节介绍如何将单独表空间从一个MySQL实例复制 到另一个MySQL实例,也称为可传输表空间功能. 将InnoDB单独表空间复制到其他实例的原因有很多: - 在不对 ...
- Chrome浏览器 v68.0.3440.106 正式版怎么样?
谷歌浏览器Google Chrome稳定版迎来v68正式版第三个维护版本发布,详细版本号为v68.0.3440.106,上一个正式版v68.0.3440.84发布于8月1日,时隔8天Google又发布 ...
- Python+selenium鼠标、键盘事件
鼠标操作 现在的Web产品提供了丰富的鼠标交互方式,例如鼠标右击.双击.悬停.甚至是鼠标拖动等功能,在Webdriver中,将这些关于鼠标操作的方法封装在ActionChains类提供. 1.鼠标右击 ...
- POJ-2386Lake Counting,搜索题。。
Lake Counting Time Limit: 1000MS Memory Limit: 65536K Description Due to recent rains, w ...
- Linux基础之基本命令cat less more sort uniq alias 命令行 bash简单描述(三)
获取Linux当前最新的内核版本号经常关注www.kernel.org 目录管理:ls cd pwd mkdir rmdir tree 文件管理:touch stat file rm cp mv na ...
- nginx配置文件解答
nginx配置文件详解: server { listen 80; servername www.nginx1.com location / { root ...
- Codeforces474E - Pillars
Portal Description 给出一个\(n(n\leq10^5)\)的正整数序列\(\{a_n\}(a_i\leq10^{15})\)和正整数\(d(d\leq10^9)\),求\(\{a_ ...
- 转载:K-means聚类算法
转载地址:http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006910.html K-means也是聚类算法中最简单的一种了,但是里面包含的思 ...