42#include <sys/gsb_crc32.h>
47#if defined(SCTP) || defined(SCTP_SUPPORT)
55#if BYTE_ORDER == BIG_ENDIAN
59#if BYTE_ORDER == BIG_ENDIAN
67 byte0 = crc32c & 0x000000ff;
68 byte1 = (crc32c >> 8) & 0x000000ff;
69 byte2 = (crc32c >> 16) & 0x000000ff;
70 byte3 = (crc32c >> 24) & 0x000000ff;
71 crc32c = ((byte0 << 24) | (byte1 << 16) | (byte2 << 8) | byte3);
82 *basep = calculate_crc32c(*basep, data, len);
99 KASSERT(offset < m->m_pkthdr.len,
100 (
"%s: invalid offset %u into mbuf %p", __func__, offset, m));
103 len = m->m_pkthdr.len - offset;
108#if defined(SCTP) || defined(SCTP_SUPPORT)
117sctp_delayed_cksum(
struct mbuf *m,
uint32_t offset)
124 offset += offsetof(
struct sctphdr, checksum);
128 panic(
"sctp_delayed_cksum(): m->m_pkthdr.len: %d, offset: %u.",
129 m->m_pkthdr.len, offset);
131 SCTP_PRINTF(
"sctp_delayed_cksum(): m->m_pkthdr.len: %d, offset: %u.\n",
132 m->m_pkthdr.len, offset);
136 m_copyback(m, (
int)offset, (
int)
sizeof(
uint32_t), (caddr_t)&checksum);
VNET_DEFINE(struct cc_algo *, default_cc_ptr)
uint32_t sctp_calculate_cksum(struct mbuf *m, int32_t offset)
static int sctp_calculate_cksum_cb(void *arg, void *data, u_int len)
static uint32_t sctp_finalize_crc32c(uint32_t crc32c)
#define SCTP_PRINTF(params...)
#define SCTP_STAT_INCR(_x)
#define SCTP_STAT_DECR(_x)