Main Page | Directories | File List | Globals

ip_checksum.c File Reference

#include <agnix/agnix.h>
#include <agnix/net/net.h>

Include dependency graph for ip_checksum.c:

Go to the source code of this file.

Functions

u16 ip_checksum (struct ip_hdr_s *ip)


Function Documentation

u16 ip_checksum struct ip_hdr_s *  ip  ) 
 

Definition at line 17 of file ip_checksum.c.

Referenced by ip_recv().

00018 {
00019     u32 sum;       
00020     u16 word;
00021     u16 *ptr;
00022     int len;
00023     
00024     ptr = (u16 *)ip;
00025     
00026     sum = 0;
00027     for (len = sizeof(struct ip_hdr_s); len > 1; len -= 2, ptr++) {
00028         sum += *ptr;
00029     }
00030 
00031     if (len == 1) {
00032         word = 0;     
00033         *((u8 *) &word) = *(u8 *)ptr;
00034         sum += word;
00035     }
00036 
00037     sum  = (sum >> 16) + (sum & 0xffff);
00038     sum += (sum >> 16);
00039    
00040     return (u16)(~sum);
00041 };

Dokumentacje wygenerowano programem Doxygen 1.4.2 dla projektu Agnix