diff options
Diffstat (limited to 'udp.c')
-rw-r--r-- | udp.c | 47 |
1 files changed, 0 insertions, 47 deletions
@@ -10,52 +10,6 @@ #include <linux/if_arp.h> #include <stdio.h> -unsigned short udp_sum_calc(unsigned short len_udp, unsigned char src_addr[],unsigned char dest_addr[], unsigned char buff[]) { - unsigned short prot_udp=17; - unsigned short padd=0; - unsigned short word16; - unsigned long sum; - int i; - - // Find out if the length of data is even or odd number. If odd, - // add a padding byte = 0 at the end of packet - if (len_udp % 2 == 1){ - padd=1; - buff[len_udp]=0; - } - - //initialize sum to zero - sum=0; - - // make 16 bit words out of every two adjacent 8 bit words and - // calculate the sum of all 16 vit words - for (i=0;i<len_udp+padd;i=i+2){ - word16 =((buff[i]<<8)&0xFF00)+(buff[i+1]&0xFF); - sum = sum + (unsigned long)word16; - } - // add the UDP pseudo header which contains the IP source and destinationn addresses - for (i=0;i<4;i=i+2){ - word16 =((src_addr[i]<<8)&0xFF00)+(src_addr[i+1]&0xFF); - sum=sum+word16; - } - for (i=0;i<4;i=i+2){ - word16 =((dest_addr[i]<<8)&0xFF00)+(dest_addr[i+1]&0xFF); - sum=sum+word16; - } - // the protocol number and the length of the UDP packet - sum = sum + prot_udp + len_udp; - - // keep only the last 16 bits of the 32 bit calculated sum and add the carries - while (sum>>16) - sum = (sum & 0xFFFF)+(sum >> 16); - - // Take the one's complement of sum - sum = ~sum; - - return ((unsigned short) sum); -} - -//#define ETH_FRAME_LEN 1518 unsigned short in_cksum(unsigned short *addr, int len) { int nleft = len; @@ -161,7 +115,6 @@ int sendCustomUDP(const int socket, const char *sourcemac, const char *destmac, udp->dest = htons(20561); udp->check = 0; udp->len = htons(sizeof(struct udphdr) + datalen); - //udp->check = udp_sum_calc(datalen+8, (unsigned char *)&(ip->saddr), (unsigned char *)&(ip->daddr), (unsigned char *)udp); memcpy(resten, data, datalen); |