return -1;
}
- expected = fr_udp_checksum((uint8_t const *) udp, ntohs(udp->len), udp->checksum,
+ expected = fr_udp_checksum((uint8_t const *) udp, udp_len, udp->checksum,
ip->ip_src, ip->ip_dst);
if (udp->checksum != expected) {
fr_strerror_printf("UDP checksum invalid, packet: 0x%04hx calculated: 0x%04hx",
memcpy(dhcp, packet->data, packet->data_len);
/* UDP checksum is done here */
- udp_hdr->checksum = fr_udp_checksum((uint8_t const *)udp_hdr, ntohs(udp_hdr->len), udp_hdr->checksum,
+ udp_hdr->checksum = fr_udp_checksum((uint8_t const *)udp_hdr, l4_len, udp_hdr->checksum,
packet->socket.inet.src_ipaddr.addr.v4,
packet->socket.inet.dst_ipaddr.addr.v4);
/* UDP checksum is done here */
udp_hdr->checksum = fr_udp_checksum((uint8_t const *)(dhcp_packet + ETH_HDR_SIZE + IP_HDR_SIZE),
- ntohs(udp_hdr->len), udp_hdr->checksum,
+ l4_len, udp_hdr->checksum,
packet->socket.inet.src_ipaddr.addr.v4, packet->socket.inet.dst_ipaddr.addr.v4);
return sendto(sockfd, dhcp_packet, (ETH_HDR_SIZE + IP_HDR_SIZE + UDP_HDR_SIZE + packet->data_len),