diff --git a/srcs/service/dhcpd/dhcpd_network.c b/srcs/service/dhcpd/dhcpd_network.c index 954c6ff..b087c2d 100644 --- a/srcs/service/dhcpd/dhcpd_network.c +++ b/srcs/service/dhcpd/dhcpd_network.c @@ -290,7 +290,7 @@ static PDHCP_PROTO fill_pkg(U8 *pRsp, U8 *pReq) { switch (get_package_vlan_type(pReq)) { default: pIp = (struct iphdr *)(pReq + IP_HDR_OFFSET); - pUdp = (struct udphdr *)(UDP_HDR_OFFSET); + pUdp = (struct udphdr *)(pReq + UDP_HDR_OFFSET); pDhcp = (PDHCP_PROTO)((U8 *)pReq + DHCP_OFFSET); p = pRsp + sizeof(struct ethhdr); break; @@ -330,7 +330,7 @@ static int dhcp_prepare_tx(U8 *pRsp, U32 optSize) { switch (get_package_vlan_type(pRsp)) { default: pIp = (struct iphdr *)(pRsp + IP_HDR_OFFSET); - pUdp = (struct udphdr *)(UDP_HDR_OFFSET); + pUdp = (struct udphdr *)(pRsp + UDP_HDR_OFFSET); // 计算包总长度 tolSize = optSize + sizeof(DHCP_PROTO) + DHCP_OFFSET; break;