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) --转的更多相关文章

  1. udhcp源码详解(五) 之DHCP包--options字段

    中间有很长一段时间没有更新udhcp源码详解的博客,主要是源码里的函数太多,不知道要不要一个一个讲下去,要知道讲DHCP的实现理论的话一篇博文也就可以大致的讲完,但实现的源码却要关心很多的问题,比如说 ...

  2. udhcp源码详解(四) 之租赁IP的管理

    Server端对于租赁出去的IP的管理是基于结构体dhcpOfferedAddr的,该结构体的定义是在leases.c文件里:(结构体的成员介绍说明见详解之数据结构) 1: struct dhcpOf ...

  3. udhcp源码详解(三)上 之配置信息的读取

    上节介绍了存储管理配置信息的结构体struct server_config_t,该结构体贯穿整个server端程序的运行. 在dhcpd.c里的用该结构体定义个一个全局的变量: struct serv ...

  4. udhcp源码详解(二)--转

    定义的数据结构对于C程序的重要性,不言而喻.面向对象设计的程序是一个个对象的集合,而面向过程语言设计的程序则是数据结构与算法的集合. 下面来分析的是dhcp server中的定义结构体: 1).在pa ...

  5. udhcp源码详解(三) 下 之配置信息的读取

    上节讲解了read_config函数,读取配置信息到server_config的相应成员变量里,但read_config函数只负责把配置信息重文件里读出来,具体怎么把信息填写到指定的地址内,是调用ke ...

  6. 条件随机场之CRF++源码详解-预测

    这篇文章主要讲解CRF++实现预测的过程,预测的算法以及代码实现相对来说比较简单,所以这篇文章理解起来也会比上一篇条件随机场训练的内容要容易. 预测 上一篇条件随机场训练的源码详解中,有一个地方并没有 ...

  7. [转]Linux内核源码详解--iostat

    Linux内核源码详解——命令篇之iostat 转自:http://www.cnblogs.com/york-hust/p/4846497.html 本文主要分析了Linux的iostat命令的源码, ...

  8. Shiro 登录认证源码详解

    Shiro 登录认证源码详解 Apache Shiro 是一个强大且灵活的 Java 开源安全框架,拥有登录认证.授权管理.企业级会话管理和加密等功能,相比 Spring Security 来说要更加 ...

  9. Activiti架构分析及源码详解

    目录 Activiti架构分析及源码详解 引言 一.Activiti设计解析-架构&领域模型 1.1 架构 1.2 领域模型 二.Activiti设计解析-PVM执行树 2.1 核心理念 2. ...

随机推荐

  1. 从零实现一个http服务器

    我始终觉得,天生的出身很重要,但后天的努力更加重要,所以如今的很多“科班”往往不如后天努力的“非科班”.所以,我们需要重新给“专业”和“专家”下一个定义:所谓专业,就是别人搞你不搞,这就是你的“专业” ...

  2. luogu P3916 图的遍历

    P3916 图的遍历 题目描述 给出 N 个点, M 条边的有向图,对于每个点 v ,求 A(v) 表示从点 v 出发,能到达的编号最大的点. 输入输出格式 输入格式: 第1 行,2 个整数 N,MN ...

  3. tomcat创建用户

    进入manager App时需要用户名+密码 输入错误时会出现页面如下: ​ 根据提示去服务器中找到tomcat目录下的tomcat-user.xml文件 在指定位置添加语句 <user use ...

  4. 第一次:从今开始玩Linux,Ubuntu16.04

    首先声明,我的文章不配图,就靠文字描述,然后自己体会,摸着石头体验吧! 从今天开始玩Linux,Ubuntu16.04据说是比较稳定的,界面友好,类似与Windows界面,也有Linux的命令终端,用 ...

  5. python初体验 ——>>> 模拟体育竞技

    python初体验 ——>>> 模拟体育竞技 一.排球训练营 1. 简介: 模拟不同的两个队伍进行排球的模拟比赛. 2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ...

  6. LeetCode (17)Letter Combinations of a Phone Number

    题目 Given a digit string, return all possible letter combinations that the number could represent. A ...

  7. Root of AVL Tree

    04-树5 Root of AVL Tree(25 分) An AVL tree is a self-balancing binary search tree. In an AVL tree, the ...

  8. 【MVC】使用笔记

    1,在ASP.NET MVC中,路由机制特别碉堡,直接对应于动作方法.没有必要给每一个动作方法添加视图,当视图返回View时,路由系统会自动寻找指定目录下的视图资源. public ViewResul ...

  9. oracle sqlplus 导出csv文件

    et colsep , set feedback off set heading off set trimout on spool D:\DBoracle\lfc.csv select '" ...

  10. tree(poj 1741)

    题意:给一颗n个节点的树,每条边上有一个距离v(v<=1000).定义d(u,v)为u到v的最小距离.给定k值,求有多少点对(u,v)使u到v的距离小于等于k. /* 照着点分治模板敲了敲,有很 ...