INET Framework for OMNeT++/OMNEST
inet::sctp::SctpChecksum Class Reference

Calculates checksum. More...

#include <SctpChecksum.h>

Public Member Functions

 SctpChecksum ()
 

Static Public Member Functions

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

Detailed Description

Calculates checksum.

Constructor & Destructor Documentation

◆ SctpChecksum()

inet::sctp::SctpChecksum::SctpChecksum ( )
inline
23 {}

Member Function Documentation

◆ checksum()

uint32_t inet::sctp::SctpChecksum::checksum ( const void *  addr,
unsigned int  count 
)
static
88 {
89  uint32_t h;
90  const uint8_t *buf = static_cast<const uint8_t *>(addr);
91  unsigned char byte0, byte1, byte2, byte3;
92  uint32_t crc32c;
93  uint32_t i;
94  uint32_t res = (~0L);
95  for (i = 0; i < len; i++) {
96  CRC32C(res, buf[i]);
97  }
98  h = ~res;
99  byte0 = h & 0xff;
100  byte1 = (h >> 8) & 0xff;
101  byte2 = (h >> 16) & 0xff;
102  byte3 = (h >> 24) & 0xff;
103  crc32c = ((byte0 << 24) | (byte1 << 16) | (byte2 << 8) | byte3);
104  return htonl(crc32c);
105 }

Referenced by inet::sctp::SctpHeaderSerializer::deserialize(), inet::sctp::SctpCrcInsertion::insertCrc(), and inet::sctp::SctpHeaderSerializer::serialize().


The documentation for this class was generated from the following files:
htonl
u32_t htonl(u32_t n)
CRC32C
#define CRC32C(c, d)
Definition: SctpChecksum.cc:18
inet::units::constants::h
const value< double, compose< units::J, units::s > > h(6.62606896e-34)