UDHCP+Option 开发

不知道是哪个聪明人发明的,使用DHCP协议来做数据的传输…….,该协议使用的可是broadcast的方式去search需要的东西,所以DHCP协议出现了LEASE这种东西,就是防止客户端经常去使用该协议.       回到正文…
网络上关于DHCP协议上自定义option的开发资料很少,我们使用的是UDHCP的开发包,如果要支持自定义的option那就需要在客户端和服务器端分别做开发.
Client:
       Clientpacket.c
              static void init_packet(struct dhcpMessage *packet, char type)
              {
                            //这里我们需要定义一个结构体,为了增加option字段
                            //特别str可以写成””,因为该字段是作为option的显示字段
                            //但如果不是系统保留的option号,那么这里只会显示private
                            struct usermodule
                            {
                                   char um,length;
                                   char str[64];
                            }_usermod={DHCP_USER_DEFINE161,64,""};
              _usermod={DHCP_USER_DEFINE161,64,""};
              //增加两个option
              struct usermodule _usermod1={DHCP_USER_DEFINE162,64,""};
              struct usermodule _usermod2={DHCP_USER_DEFINE163,64,""};
              //在构造包体时添加字段
              add_option_string(packet->options, (unsigned char *) &_usermod);
              add_option_string(packet->options, (unsigned char *) &_usermod1);
              add_option_string(packet->options, (unsigned char *) &_usermod2);
}
Dhcpd.h
#define DHCP_USER_DEFINE161 0xA1   //这里一定要16位的
#define DHCP_USER_DEFINE162 0xA2
#define DHCP_USER_DEFINE163 0xA3
Server端:
                     Dhcpd.h
struct server_config_t {
                                   char *opt_161;          
                                   char *opt_162;                      
                                   char *opt_163;                      
}
        Files.c
static struct config_keyword keywords[] = {
                     {"161",read_str,&(server_config.opt_161),  "My Network 161"},
                     {"162",read_str,&(server_config.opt_162),  "My Network 162"},
              {"163",read_str,&(server_config.opt_163),  "My Network 163"}
}
//这两个部分主要时为了Udhcpd在启动时会读取udhcpd.conf的文件,我们可以提前在该文件中定义好所有的option,所以这就需要程序的支持,
在做通讯时,DHCPD会将自定义的option放在offer包中,client只要解析就可以了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值