Index: sbin/dhclient/packet.c =================================================================== --- sbin/dhclient/packet.c +++ sbin/dhclient/packet.c @@ -198,8 +198,8 @@ /* * Compute UDP checksums, including the ``pseudo-header'', the - * UDP header and the data. If the UDP checksum field is zero, - * we're not supposed to do a checksum. + * UDP header and the data. If the UDP checksum field is zero + * or 0xffff (offloaded) we're not supposed to do a checksum. */ if (!data) { data = buf + bufix + ip_len + sizeof(*udp); @@ -231,7 +231,7 @@ IPPROTO_UDP + (u_int32_t)ntohs(udp->uh_ulen))))); udp_packets_seen++; - if (usum && usum != sum) { + if (usum && (u_short)usum != 0xffff && usum != sum) { udp_packets_bad_checksum++; if (udp_packets_seen > 4 && (udp_packets_seen / udp_packets_bad_checksum) < 2) {