OCT 1. 增加DHCP响应包广播地址开关
This commit is contained in:
parent
18e296c19c
commit
c72dca0a44
|
@ -1904,18 +1904,33 @@ MYDWORD sdmess(data9 *req) {
|
|||
req->dhcpp.header.bp_op = BOOTP_REPLY;
|
||||
errno = 0;
|
||||
|
||||
#if DISCOVER_RSP_NOT_BOARDCAST
|
||||
sockaddr_in cliAddr = get_cliAddr(nicif, tempbuff, req);
|
||||
|
||||
#endif
|
||||
if (req->req_type == DHCP_MESS_DISCOVER && !req->remote.sin_addr.s_addr) {
|
||||
req->bytes = (int)sendto(network.dhcpConn[req->sockInd].sock,
|
||||
req->raw,
|
||||
packSize,
|
||||
MSG_DONTROUTE,
|
||||
#if DISCOVER_RSP_NOT_BOARDCAST
|
||||
(sockaddr *)&cliAddr,
|
||||
sizeof(cliAddr));
|
||||
#else
|
||||
(sockaddr *)&req->remote,
|
||||
sizeof(req->remote));
|
||||
#endif
|
||||
} else {
|
||||
req->bytes = (int)
|
||||
sendto(network.dhcpConn[req->sockInd].sock, req->raw, packSize, 0, (sockaddr *)&cliAddr, sizeof(cliAddr));
|
||||
req->bytes = (int)sendto(network.dhcpConn[req->sockInd].sock,
|
||||
req->raw,
|
||||
packSize,
|
||||
0,
|
||||
#if DISCOVER_RSP_NOT_BOARDCAST
|
||||
(sockaddr *)&cliAddr,
|
||||
sizeof(cliAddr));
|
||||
#else
|
||||
(sockaddr *)&req->remote,
|
||||
sizeof(req->remote));
|
||||
#endif
|
||||
}
|
||||
|
||||
if (errno || req->bytes <= 0) {
|
||||
|
|
|
@ -84,6 +84,8 @@ typedef struct in_pktinfo IN_PKTINFO;
|
|||
|
||||
#define STR2INT(val) ((int)strtol((val), nullptr, 10))
|
||||
|
||||
#define DISCOVER_RSP_NOT_BOARDCAST (0)
|
||||
|
||||
#define logDHCPMess(logBuff, logLevel) \
|
||||
do { \
|
||||
switch ((logLevel)) { \
|
||||
|
@ -775,5 +777,7 @@ int opendhcp_add_listener();
|
|||
unsigned int opendhcp_set_lease_time();
|
||||
int getHwAddr(char *buff, char *mac);
|
||||
int arpSet(const char *ifname, char *ipStr, char *mac);
|
||||
#if DISCOVER_RSP_NOT_BOARDCAST
|
||||
sockaddr_in get_cliAddr(char *nicif, char *tempbuff, data9 *req);
|
||||
#endif
|
||||
#pragma clang diagnostic pop
|
|
@ -675,6 +675,7 @@ int getHwAddr(char *buff, char *mac) {
|
|||
|
||||
#pragma clang diagnostic pop
|
||||
|
||||
#if DISCOVER_RSP_NOT_BOARDCAST
|
||||
int arpSet(const char *ifname, char *ipStr, char *mac) {
|
||||
if (ifname == nullptr || ipStr == nullptr || mac == nullptr) {
|
||||
LOG_MOD(error, ZLOG_MOD_OPENDHCPD, "para is null.\n");
|
||||
|
@ -724,6 +725,7 @@ sockaddr_in get_cliAddr(char *nicif, char *tempbuff, data9 *req) {
|
|||
cliAddr.sin_addr.s_addr = inet_addr(IP2String(tempbuff, req->dhcpp.header.bp_yiaddr));
|
||||
return cliAddr;
|
||||
}
|
||||
#endif
|
||||
|
||||
unsigned int opendhcp_set_lease_time() {
|
||||
return config_get_dhcp_server_lease_time();
|
||||
|
|
Loading…
Reference in New Issue