in util/netconsblaster.c [92:112]
static int udp_csum(void *addrptr, void *udppkt, int len)
{
unsigned int sum = 0;
uint16_t *addrs = addrptr;
uint16_t pseudohdr[4] = {0, htons(len), 0, htons(IPPROTO_UDP)};
sum = ones_complement_sum(addrs, 32, 0);
sum = ones_complement_sum(pseudohdr, 8, sum);
sum = ones_complement_sum(udppkt, len, sum);
sum = ~sum;
/*
* From RFC768: "If the computed checksum is zero, it is transmitted as
* all ones. An all zero transmitted checksum value means that the
* transmitter generated no checksum"
*/
if (sum == 0)
sum = 65535;
return sum;
}