#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include "common.h"
void diep(const char *msg)
{
perror(msg);
exit(-1);
}
uint16_t cksum16(char *addr, uint32_t length)
{
uint32_t sum = 0;
while (length > 1)
{
sum = sum + *((uint16_t*) addr);
length = length - 2;
addr += sizeof(uint16_t);
}
if (length > 0)
sum = sum + *((uint8_t*) addr);
while (sum >> 16)
sum = (sum & 0xFFFF) + (sum >> 16);
return (uint16_t)(~sum);
}