INET Framework for OMNeT++/OMNEST
TCPIPchecksum Class Reference

#include <TCPIPchecksum.h>

List of all members.

Public Member Functions

 TCPIPchecksum ()

Static Public Member Functions

static uint16_t checksum (const void *addr, unsigned int count)
static uint16_t _checksum (const void *addr, unsigned int count)

Detailed Description

Calculates checksum.


Constructor & Destructor Documentation

TCPIPchecksum::TCPIPchecksum ( ) [inline]
{}

Member Function Documentation

uint16_t TCPIPchecksum::_checksum ( const void *  addr,
unsigned int  count 
) [static]

Referenced by checksum().

{
    uint32_t sum = 0;

    while (count > 1)
    {
        sum += *((const uint16_t *&)addr)++;
        if (sum & 0x80000000)
            sum = (sum & 0xFFFF) + (sum >> 16);
        count -= 2;
    }

    if (count)
        sum += *(const uint8_t *)addr;

    while (sum >> 16)
        sum = (sum & 0xFFFF) + (sum >> 16);

    return (uint16_t)sum;
}
static uint16_t TCPIPchecksum::checksum ( const void *  addr,
unsigned int  count 
) [inline, static]
        {
            return ~ _checksum(addr, count);
        }

The documentation for this class was generated from the following files: