摘要:
Server端对于租赁出去的IP的管理是基于结构体dhcpOfferedAddr的,该结构体的定义是在leases.c文件里:(结构体的成员介绍说明见详解之数据结构) 1: struct dhcpOfferedAddr { 2: uint8_t chaddr[16]; 3: uint32_t yiaddr; /* network order... 阅读全文
posted @ 2013-07-09 22:39
woainilsr
阅读(1729)
评论(0)
推荐(0)
摘要:
Server端对于租赁出去的IP的管理是基于结构体dhcpOfferedAddr的,该结构体的定义是在leases.c文件里:(结构体的成员介绍说明见详解之数据结构) [cpp] view plaincopy struct dhcpOfferedAddr { uint8_t chaddr[16]; uint32_t yiaddr; /* netw... 阅读全文
posted @ 2013-07-09 22:29
woainilsr
阅读(1874)
评论(0)
推荐(0)
摘要:
上节讲解了read_config函数,读取配置信息到server_config的相应成员变量里,但read_config函数只负责把配置信息重文件里读出来,具体怎么把信息填写到指定的地址内,是调用keywords数组里元素的handler成员指向的函数完成。这节就是讲解完成具体的写入操作中比较复杂的函数。 1) int read_opt(const char *line, void *arg) ... 阅读全文
posted @ 2013-07-09 22:25
woainilsr
阅读(1768)
评论(0)
推荐(0)
摘要:
上节介绍了存储管理配置信息的结构体struct server_config_t,该结构体贯穿整个server端程序的运行。 在dhcpd.c里的用该结构体定义个一个全局的变量: struct server_config_t server_config; 在server启动做的第一件事就是初始化这个全局变量server_config: 现在就进入read_config函数,一睹其真容! ... 阅读全文
posted @ 2013-07-09 22:23
woainilsr
阅读(1447)
评论(0)
推荐(0)
摘要:
定义的数据结构对于C程序的重要性,不言而喻。面向对象设计的程序是一个个对象的集合,而面向过程语言设计的程序则是数据结构与算法的集合。 下面来分析的是dhcp server中的定义结构体: 1)、在packet.h文件里定义了DHCP报文的格式: struct dhcpMessage报文的字段虽然都有注释,但还是有必要讲下options字段。 options在大多文档中的说法是可选字... 阅读全文
posted @ 2013-07-09 22:14
woainilsr
阅读(2313)
评论(1)
推荐(0)
摘要:
最近负责接入模块,包括dhcp、ipoe和pppoe等等。所以需要对dhcp和ppp这几个app的源代码进行一些分析。网上有比较好的文章,参考并补充自己的分析。 这篇udhcp详解是基于busybox-1.20里的…/busybox-1.20/networking/udhcp/目录下的源码进行讲解与分析,主要是对udhcp server端源码进行的讲解,client端相对于server端相对简单一些,源代码上面表现的实现思想大体相似。 该系列的讲解分析是在源代码的基础上,所以并没有打算以单独章节来讲解DHCP协议工作交互流程,也就是已经了解掌握了DHCP协议,用C来实现而已。 阅读全文
posted @ 2013-07-09 22:02
woainilsr
阅读(1717)
评论(0)
推荐(0)
摘要:
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. 阅读全文
posted @ 2013-07-09 21:55
woainilsr
阅读(2232)
评论(0)
推荐(1)
摘要:
getsockname和getpeername#include int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen);int getpeername(int sockfd, struct sockaddr *peeraddr, socklen_t *addrlen);返回:0—OK,-1—出错。getsockname函数返回与套接口关联的本地协议地址。getpeername函数返回与套接口关联的远程协议地址。addrlen是值-结果参数。使用场合:在不调用bind的TCP客户,当connect成功 阅读全文
posted @ 2013-07-09 15:57
woainilsr
阅读(611)
评论(0)
推荐(0)