#include <sys/types.h>
#include <stdio.h>


u_int8_t adderss[] = { 0xCF, 0xFF, 0xF0, 0x00, 0x12, 0x34, 0xCA, 0xFE };






void main(){
	int i;
	u_int16_t sum1;
	u_int32_t sum2;
	u_int16_t helper;
	u_int16_t helper2;
	u_int16_t udp_checksum;

	sum1 = 0x0000;
	sum2 = 0x00000000;
	
	for ( i = 0; i < 8; i+=2 ){
		helper = (adderss[i] << 8) + adderss[i+1];
		printf("Helper: [%04X]\n",helper);	
		sum1 += helper;
		sum2 += helper;
	}
	while ( (( sum2 & 0xFFFF0000 ) >> 16) ){
		u_int16_t highpart;
		highpart = (( sum2 & 0xFFFF0000 ) >> 16);
		sum2 = highpart + sum1;
		sum1 += highpart;
	}
	udp_checksum = ~sum1;
	printf("SUM1: [0x%04X] SUM2: [0x%08X] UDP-Checksum: [0x%04X]\n",sum1,sum2,udp_checksum);
}
