我想问一下kea dhcp服务器的使用方法

问题描述 投票:0回答:1

我想修改dhcp4源代码,在分配租约时通知ddns服务器设置动态域名,但是我在dhcp4_srv.cc中添加了nanomsg语句。当我的nanomsg执行shutdown或close时,dhcp4服务会自动关闭。

这就是为什么没有其他办法实现动态域名的原因(我的动态域名主要是将前台设置的字段和mac地址、IP地址一起发送到ddns服务器,也可能是前台的登录账号) .

接下来我可以尝试什么?

if (lease) {
// We have a lease! Let's set it in the packet and send it back to
// the client.
// 我们有租约! 让我们在数据包中进行设置,然后将其发送回客户端。
if (fake_allocation) {
//租约建议
LOG_INFO(lease4_logger, DHCP4_LEASE_ADVERT)
.arg(query->getLabel())
.arg(lease->addr_.toText());
} else {
//成功授予租约
LOG_INFO(lease4_logger, DHCP4_LEASE_ALLOC)
.arg(query->getLabel())
.arg(lease->addr_.toText())
.arg(lease->valid_lft_);

int rc = 0;
int pair_socket = 0;
int str_len = 0;
char buf[256] = { 0 };
char buf1[256] = { 0 };
int timeo = 5000;
//计算长度
str_len = strlen(HELLOWORLD);
//初始化socket
pair_socket = nn_socket(1, NN_PAIR);
if (pair_socket == -1) {
    printf("nn_socket failed! error: %s.\n", nn_err_strerror(errno));
    //system("pause");
    nn_err_abort();
    //return 0;
}
//设置超时
rc = nn_setsockopt(pair_socket, 0, NN_SNDTIMEO, &timeo, sizeof(timeo));
rc = nn_setsockopt(pair_socket, 0, NN_RCVTIMEO, &timeo, sizeof(timeo));
//连接服务端
rc = nn_connect(pair_socket, SOCKET_ADDRESS2);
if (rc < 0) {
    printf("bind failed! error: %s.\n", nn_err_strerror(errno));
    //system("pause");
    nn_err_abort();
    //return 0;
}
//将hello world复制到buf中
memcpy(buf, HELLOWORLD, str_len);

//发送数据
rc = nn_send(pair_socket, buf, str_len, 0);
if (rc < 0) {
    printf("nn_send failed! error: %s.rc = %d.\n", nn_err_strerror(errno), rc);
}
//打印
printf("send:%s\n", buf);
//这里主要是测试使用,平时项目不要使用标签
//接收数据
rc = nn_recv(pair_socket, buf1, 256, 0);
if (rc < 0) {
    printf("nn_recv failed! error: %s.rc = %d.\n", nn_err_strerror(errno), rc);

}
//打印
printf("recv:%s\n", buf1);
memset(buf1, 0, 256);
//Sleep(1000);

//关闭套接字
rc = nn_shutdown(pair_socket, 1);
if (rc != 1) {
    printf("nn_close failed! error: %s.\n", nn_err_strerror(errno));
    //system("pause");
    nn_err_abort();
    //return 0;
}
std::cout << "testtttttttttttttttttttttttttttttttttt "
          << "hostnameeeeeeeeeeeeeeeeeeeeeeeeeeeeee:" << lease->hostname_ << std::endl;
std::cout << "testtttttttttttttttttttttttttttttttttt "
          << "ipppppppppppppppppppppppppppppppppppp:" << lease->addr_.toText() << std::endl;

std::cout << "lease ALLOC  " << __LINE__ << "  file name  " << __FILE__
          << "  HOST:" << lease->hostname_ << std::endl;
std::cout << "lease ALLOC  " << __LINE__ << "  file name  " << __FILE__
          << "  IP:" << lease->addr_.toText() << std::endl;


}
c dhcp
1个回答
0
投票

听起来您需要一些有关互联网系统联盟开发的 KEA 软件的一般信息,又名:https://kea.isc.org/我会通读 Kea 文档邮件列表一般信息开发 wiki 尝试磨练您的代码遇到的具体问题。一旦您能够解释代码遇到的问题,您就可以使用详细信息编辑您的问题,并且您更有可能从该网站获得更有意义的答案。

© www.soinside.com 2019 - 2024. All rights reserved.