Coverage Report

Created: 2025-07-11 06:39

/src/usrsctp/usrsctplib/netinet/sctp_crc32.c
Line
Count
Source (jump to first uncovered line)
1
/*-
2
 * SPDX-License-Identifier: BSD-3-Clause
3
 *
4
 * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved.
5
 * Copyright (c) 2008-2012, by Randall Stewart. All rights reserved.
6
 * Copyright (c) 2008-2012, by Michael Tuexen. All rights reserved.
7
 *
8
 * Redistribution and use in source and binary forms, with or without
9
 * modification, are permitted provided that the following conditions are met:
10
 *
11
 * a) Redistributions of source code must retain the above copyright notice,
12
 *   this list of conditions and the following disclaimer.
13
 *
14
 * b) Redistributions in binary form must reproduce the above copyright
15
 *    notice, this list of conditions and the following disclaimer in
16
 *   the documentation and/or other materials provided with the distribution.
17
 *
18
 * c) Neither the name of Cisco Systems, Inc. nor the names of its
19
 *    contributors may be used to endorse or promote products derived
20
 *    from this software without specific prior written permission.
21
 *
22
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
24
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
26
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32
 * THE POSSIBILITY OF SUCH DAMAGE.
33
 */
34
35
#if defined(__FreeBSD__) && !defined(__Userspace__)
36
#include <sys/cdefs.h>
37
#include "opt_sctp.h"
38
39
#include <sys/param.h>
40
#include <sys/systm.h>
41
#include <sys/gsb_crc32.h>
42
#include <sys/mbuf.h>
43
44
#include <netinet/sctp.h>
45
#include <netinet/sctp_crc32.h>
46
#if defined(SCTP) || defined(SCTP_SUPPORT)
47
#include <netinet/sctp_os.h>
48
#include <netinet/sctp_pcb.h>
49
#endif
50
#else
51
#include <netinet/sctp_os.h>
52
#include <netinet/sctp.h>
53
#include <netinet/sctp_crc32.h>
54
#include <netinet/sctp_pcb.h>
55
#endif
56
57
#if !(defined(__FreeBSD__) && !defined(__Userspace__))
58
/**
59
 *
60
 * Routine Description:
61
 *
62
 * Computes the CRC32c checksum for the specified buffer using the slicing by 8
63
 * algorithm over 64 bit quantities.
64
 *
65
 * Arguments:
66
 *
67
 *    p_running_crc - pointer to the initial or final remainder value
68
 *        used in CRC computations. It should be set to
69
 *        non-NULL if the mode argument is equal to CONT or END
70
 *    p_buf - the packet buffer where crc computations are being performed
71
 *    length - the length of p_buf in bytes
72
 *    init_bytes - the number of initial bytes that need to be procesed before
73
 *           aligning p_buf to multiples of 4 bytes
74
 *    mode - can be any of the following: BEGIN, CONT, END, BODY, ALIGN
75
 *
76
 * Return value:
77
 *
78
 *    The computed CRC32c value
79
 */
80
81
82
/*
83
 * Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
84
 *
85
 *
86
 * This software program is licensed subject to the BSD License, available at
87
 * http://www.opensource.org/licenses/bsd-license.html.
88
 *
89
 * Abstract:
90
 *
91
 * Tables for software CRC generation
92
 */
93
94
/*
95
 * The following CRC lookup table was generated automagically using the
96
 * following model parameters:
97
 *
98
 * Generator Polynomial = ................. 0x1EDC6F41
99
 * Generator Polynomial Length = .......... 32 bits
100
 * Reflected Bits = ....................... TRUE
101
 * Table Generation Offset = .............. 32 bits
102
 * Number of Slices = ..................... 8 slices
103
 * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
104
 * Directory Name = ....................... .\
105
 * File Name = ............................ 8x256_tables.c
106
 */
107
108
static const uint32_t sctp_crc_tableil8_o32[256] =
109
{
110
  0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4, 0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB,
111
  0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B, 0x4D43CFD0, 0xBF284CD3, 0xAC78BF27, 0x5E133C24,
112
  0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B, 0xD7C45070, 0x25AFD373, 0x36FF2087, 0xC494A384,
113
  0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54, 0x5D1D08BF, 0xAF768BBC, 0xBC267848, 0x4E4DFB4B,
114
  0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A, 0xE72719C1, 0x154C9AC2, 0x061C6936, 0xF477EA35,
115
  0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5, 0x6DFE410E, 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA,
116
  0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45, 0xF779DEAE, 0x05125DAD, 0x1642AE59, 0xE4292D5A,
117
  0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A, 0x7DA08661, 0x8FCB0562, 0x9C9BF696, 0x6EF07595,
118
  0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48, 0x86E18AA3, 0x748A09A0, 0x67DAFA54, 0x95B17957,
119
  0xCBA24573, 0x39C9C670, 0x2A993584, 0xD8F2B687, 0x0C38D26C, 0xFE53516F, 0xED03A29B, 0x1F682198,
120
  0x5125DAD3, 0xA34E59D0, 0xB01EAA24, 0x42752927, 0x96BF4DCC, 0x64D4CECF, 0x77843D3B, 0x85EFBE38,
121
  0xDBFC821C, 0x2997011F, 0x3AC7F2EB, 0xC8AC71E8, 0x1C661503, 0xEE0D9600, 0xFD5D65F4, 0x0F36E6F7,
122
  0x61C69362, 0x93AD1061, 0x80FDE395, 0x72966096, 0xA65C047D, 0x5437877E, 0x4767748A, 0xB50CF789,
123
  0xEB1FCBAD, 0x197448AE, 0x0A24BB5A, 0xF84F3859, 0x2C855CB2, 0xDEEEDFB1, 0xCDBE2C45, 0x3FD5AF46,
124
  0x7198540D, 0x83F3D70E, 0x90A324FA, 0x62C8A7F9, 0xB602C312, 0x44694011, 0x5739B3E5, 0xA55230E6,
125
  0xFB410CC2, 0x092A8FC1, 0x1A7A7C35, 0xE811FF36, 0x3CDB9BDD, 0xCEB018DE, 0xDDE0EB2A, 0x2F8B6829,
126
  0x82F63B78, 0x709DB87B, 0x63CD4B8F, 0x91A6C88C, 0x456CAC67, 0xB7072F64, 0xA457DC90, 0x563C5F93,
127
  0x082F63B7, 0xFA44E0B4, 0xE9141340, 0x1B7F9043, 0xCFB5F4A8, 0x3DDE77AB, 0x2E8E845F, 0xDCE5075C,
128
  0x92A8FC17, 0x60C37F14, 0x73938CE0, 0x81F80FE3, 0x55326B08, 0xA759E80B, 0xB4091BFF, 0x466298FC,
129
  0x1871A4D8, 0xEA1A27DB, 0xF94AD42F, 0x0B21572C, 0xDFEB33C7, 0x2D80B0C4, 0x3ED04330, 0xCCBBC033,
130
  0xA24BB5A6, 0x502036A5, 0x4370C551, 0xB11B4652, 0x65D122B9, 0x97BAA1BA, 0x84EA524E, 0x7681D14D,
131
  0x2892ED69, 0xDAF96E6A, 0xC9A99D9E, 0x3BC21E9D, 0xEF087A76, 0x1D63F975, 0x0E330A81, 0xFC588982,
132
  0xB21572C9, 0x407EF1CA, 0x532E023E, 0xA145813D, 0x758FE5D6, 0x87E466D5, 0x94B49521, 0x66DF1622,
133
  0x38CC2A06, 0xCAA7A905, 0xD9F75AF1, 0x2B9CD9F2, 0xFF56BD19, 0x0D3D3E1A, 0x1E6DCDEE, 0xEC064EED,
134
  0xC38D26C4, 0x31E6A5C7, 0x22B65633, 0xD0DDD530, 0x0417B1DB, 0xF67C32D8, 0xE52CC12C, 0x1747422F,
135
  0x49547E0B, 0xBB3FFD08, 0xA86F0EFC, 0x5A048DFF, 0x8ECEE914, 0x7CA56A17, 0x6FF599E3, 0x9D9E1AE0,
136
  0xD3D3E1AB, 0x21B862A8, 0x32E8915C, 0xC083125F, 0x144976B4, 0xE622F5B7, 0xF5720643, 0x07198540,
137
  0x590AB964, 0xAB613A67, 0xB831C993, 0x4A5A4A90, 0x9E902E7B, 0x6CFBAD78, 0x7FAB5E8C, 0x8DC0DD8F,
138
  0xE330A81A, 0x115B2B19, 0x020BD8ED, 0xF0605BEE, 0x24AA3F05, 0xD6C1BC06, 0xC5914FF2, 0x37FACCF1,
139
  0x69E9F0D5, 0x9B8273D6, 0x88D28022, 0x7AB90321, 0xAE7367CA, 0x5C18E4C9, 0x4F48173D, 0xBD23943E,
140
  0xF36E6F75, 0x0105EC76, 0x12551F82, 0xE03E9C81, 0x34F4F86A, 0xC69F7B69, 0xD5CF889D, 0x27A40B9E,
141
  0x79B737BA, 0x8BDCB4B9, 0x988C474D, 0x6AE7C44E, 0xBE2DA0A5, 0x4C4623A6, 0x5F16D052, 0xAD7D5351
142
};
143
144
/*
145
 * end of the CRC lookup table crc_tableil8_o32
146
 */
147
148
149
150
/*
151
 * The following CRC lookup table was generated automagically using the
152
 * following model parameters:
153
 *
154
 * Generator Polynomial = ................. 0x1EDC6F41
155
 * Generator Polynomial Length = .......... 32 bits
156
 * Reflected Bits = ....................... TRUE
157
 * Table Generation Offset = .............. 32 bits
158
 * Number of Slices = ..................... 8 slices
159
 * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
160
 * Directory Name = ....................... .\
161
 * File Name = ............................ 8x256_tables.c
162
 */
163
164
static const uint32_t sctp_crc_tableil8_o40[256] =
165
{
166
  0x00000000, 0x13A29877, 0x274530EE, 0x34E7A899, 0x4E8A61DC, 0x5D28F9AB, 0x69CF5132, 0x7A6DC945,
167
  0x9D14C3B8, 0x8EB65BCF, 0xBA51F356, 0xA9F36B21, 0xD39EA264, 0xC03C3A13, 0xF4DB928A, 0xE7790AFD,
168
  0x3FC5F181, 0x2C6769F6, 0x1880C16F, 0x0B225918, 0x714F905D, 0x62ED082A, 0x560AA0B3, 0x45A838C4,
169
  0xA2D13239, 0xB173AA4E, 0x859402D7, 0x96369AA0, 0xEC5B53E5, 0xFFF9CB92, 0xCB1E630B, 0xD8BCFB7C,
170
  0x7F8BE302, 0x6C297B75, 0x58CED3EC, 0x4B6C4B9B, 0x310182DE, 0x22A31AA9, 0x1644B230, 0x05E62A47,
171
  0xE29F20BA, 0xF13DB8CD, 0xC5DA1054, 0xD6788823, 0xAC154166, 0xBFB7D911, 0x8B507188, 0x98F2E9FF,
172
  0x404E1283, 0x53EC8AF4, 0x670B226D, 0x74A9BA1A, 0x0EC4735F, 0x1D66EB28, 0x298143B1, 0x3A23DBC6,
173
  0xDD5AD13B, 0xCEF8494C, 0xFA1FE1D5, 0xE9BD79A2, 0x93D0B0E7, 0x80722890, 0xB4958009, 0xA737187E,
174
  0xFF17C604, 0xECB55E73, 0xD852F6EA, 0xCBF06E9D, 0xB19DA7D8, 0xA23F3FAF, 0x96D89736, 0x857A0F41,
175
  0x620305BC, 0x71A19DCB, 0x45463552, 0x56E4AD25, 0x2C896460, 0x3F2BFC17, 0x0BCC548E, 0x186ECCF9,
176
  0xC0D23785, 0xD370AFF2, 0xE797076B, 0xF4359F1C, 0x8E585659, 0x9DFACE2E, 0xA91D66B7, 0xBABFFEC0,
177
  0x5DC6F43D, 0x4E646C4A, 0x7A83C4D3, 0x69215CA4, 0x134C95E1, 0x00EE0D96, 0x3409A50F, 0x27AB3D78,
178
  0x809C2506, 0x933EBD71, 0xA7D915E8, 0xB47B8D9F, 0xCE1644DA, 0xDDB4DCAD, 0xE9537434, 0xFAF1EC43,
179
  0x1D88E6BE, 0x0E2A7EC9, 0x3ACDD650, 0x296F4E27, 0x53028762, 0x40A01F15, 0x7447B78C, 0x67E52FFB,
180
  0xBF59D487, 0xACFB4CF0, 0x981CE469, 0x8BBE7C1E, 0xF1D3B55B, 0xE2712D2C, 0xD69685B5, 0xC5341DC2,
181
  0x224D173F, 0x31EF8F48, 0x050827D1, 0x16AABFA6, 0x6CC776E3, 0x7F65EE94, 0x4B82460D, 0x5820DE7A,
182
  0xFBC3FAF9, 0xE861628E, 0xDC86CA17, 0xCF245260, 0xB5499B25, 0xA6EB0352, 0x920CABCB, 0x81AE33BC,
183
  0x66D73941, 0x7575A136, 0x419209AF, 0x523091D8, 0x285D589D, 0x3BFFC0EA, 0x0F186873, 0x1CBAF004,
184
  0xC4060B78, 0xD7A4930F, 0xE3433B96, 0xF0E1A3E1, 0x8A8C6AA4, 0x992EF2D3, 0xADC95A4A, 0xBE6BC23D,
185
  0x5912C8C0, 0x4AB050B7, 0x7E57F82E, 0x6DF56059, 0x1798A91C, 0x043A316B, 0x30DD99F2, 0x237F0185,
186
  0x844819FB, 0x97EA818C, 0xA30D2915, 0xB0AFB162, 0xCAC27827, 0xD960E050, 0xED8748C9, 0xFE25D0BE,
187
  0x195CDA43, 0x0AFE4234, 0x3E19EAAD, 0x2DBB72DA, 0x57D6BB9F, 0x447423E8, 0x70938B71, 0x63311306,
188
  0xBB8DE87A, 0xA82F700D, 0x9CC8D894, 0x8F6A40E3, 0xF50789A6, 0xE6A511D1, 0xD242B948, 0xC1E0213F,
189
  0x26992BC2, 0x353BB3B5, 0x01DC1B2C, 0x127E835B, 0x68134A1E, 0x7BB1D269, 0x4F567AF0, 0x5CF4E287,
190
  0x04D43CFD, 0x1776A48A, 0x23910C13, 0x30339464, 0x4A5E5D21, 0x59FCC556, 0x6D1B6DCF, 0x7EB9F5B8,
191
  0x99C0FF45, 0x8A626732, 0xBE85CFAB, 0xAD2757DC, 0xD74A9E99, 0xC4E806EE, 0xF00FAE77, 0xE3AD3600,
192
  0x3B11CD7C, 0x28B3550B, 0x1C54FD92, 0x0FF665E5, 0x759BACA0, 0x663934D7, 0x52DE9C4E, 0x417C0439,
193
  0xA6050EC4, 0xB5A796B3, 0x81403E2A, 0x92E2A65D, 0xE88F6F18, 0xFB2DF76F, 0xCFCA5FF6, 0xDC68C781,
194
  0x7B5FDFFF, 0x68FD4788, 0x5C1AEF11, 0x4FB87766, 0x35D5BE23, 0x26772654, 0x12908ECD, 0x013216BA,
195
  0xE64B1C47, 0xF5E98430, 0xC10E2CA9, 0xD2ACB4DE, 0xA8C17D9B, 0xBB63E5EC, 0x8F844D75, 0x9C26D502,
196
  0x449A2E7E, 0x5738B609, 0x63DF1E90, 0x707D86E7, 0x0A104FA2, 0x19B2D7D5, 0x2D557F4C, 0x3EF7E73B,
197
  0xD98EEDC6, 0xCA2C75B1, 0xFECBDD28, 0xED69455F, 0x97048C1A, 0x84A6146D, 0xB041BCF4, 0xA3E32483
198
};
199
200
/*
201
 * end of the CRC lookup table crc_tableil8_o40
202
 */
203
204
205
206
/*
207
 * The following CRC lookup table was generated automagically using the
208
 * following model parameters:
209
 *
210
 * Generator Polynomial = ................. 0x1EDC6F41
211
 * Generator Polynomial Length = .......... 32 bits
212
 * Reflected Bits = ....................... TRUE
213
 * Table Generation Offset = .............. 32 bits
214
 * Number of Slices = ..................... 8 slices
215
 * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
216
 * Directory Name = ....................... .\
217
 * File Name = ............................ 8x256_tables.c
218
 */
219
220
static const uint32_t sctp_crc_tableil8_o48[256] =
221
{
222
  0x00000000, 0xA541927E, 0x4F6F520D, 0xEA2EC073, 0x9EDEA41A, 0x3B9F3664, 0xD1B1F617, 0x74F06469,
223
  0x38513EC5, 0x9D10ACBB, 0x773E6CC8, 0xD27FFEB6, 0xA68F9ADF, 0x03CE08A1, 0xE9E0C8D2, 0x4CA15AAC,
224
  0x70A27D8A, 0xD5E3EFF4, 0x3FCD2F87, 0x9A8CBDF9, 0xEE7CD990, 0x4B3D4BEE, 0xA1138B9D, 0x045219E3,
225
  0x48F3434F, 0xEDB2D131, 0x079C1142, 0xA2DD833C, 0xD62DE755, 0x736C752B, 0x9942B558, 0x3C032726,
226
  0xE144FB14, 0x4405696A, 0xAE2BA919, 0x0B6A3B67, 0x7F9A5F0E, 0xDADBCD70, 0x30F50D03, 0x95B49F7D,
227
  0xD915C5D1, 0x7C5457AF, 0x967A97DC, 0x333B05A2, 0x47CB61CB, 0xE28AF3B5, 0x08A433C6, 0xADE5A1B8,
228
  0x91E6869E, 0x34A714E0, 0xDE89D493, 0x7BC846ED, 0x0F382284, 0xAA79B0FA, 0x40577089, 0xE516E2F7,
229
  0xA9B7B85B, 0x0CF62A25, 0xE6D8EA56, 0x43997828, 0x37691C41, 0x92288E3F, 0x78064E4C, 0xDD47DC32,
230
  0xC76580D9, 0x622412A7, 0x880AD2D4, 0x2D4B40AA, 0x59BB24C3, 0xFCFAB6BD, 0x16D476CE, 0xB395E4B0,
231
  0xFF34BE1C, 0x5A752C62, 0xB05BEC11, 0x151A7E6F, 0x61EA1A06, 0xC4AB8878, 0x2E85480B, 0x8BC4DA75,
232
  0xB7C7FD53, 0x12866F2D, 0xF8A8AF5E, 0x5DE93D20, 0x29195949, 0x8C58CB37, 0x66760B44, 0xC337993A,
233
  0x8F96C396, 0x2AD751E8, 0xC0F9919B, 0x65B803E5, 0x1148678C, 0xB409F5F2, 0x5E273581, 0xFB66A7FF,
234
  0x26217BCD, 0x8360E9B3, 0x694E29C0, 0xCC0FBBBE, 0xB8FFDFD7, 0x1DBE4DA9, 0xF7908DDA, 0x52D11FA4,
235
  0x1E704508, 0xBB31D776, 0x511F1705, 0xF45E857B, 0x80AEE112, 0x25EF736C, 0xCFC1B31F, 0x6A802161,
236
  0x56830647, 0xF3C29439, 0x19EC544A, 0xBCADC634, 0xC85DA25D, 0x6D1C3023, 0x8732F050, 0x2273622E,
237
  0x6ED23882, 0xCB93AAFC, 0x21BD6A8F, 0x84FCF8F1, 0xF00C9C98, 0x554D0EE6, 0xBF63CE95, 0x1A225CEB,
238
  0x8B277743, 0x2E66E53D, 0xC448254E, 0x6109B730, 0x15F9D359, 0xB0B84127, 0x5A968154, 0xFFD7132A,
239
  0xB3764986, 0x1637DBF8, 0xFC191B8B, 0x595889F5, 0x2DA8ED9C, 0x88E97FE2, 0x62C7BF91, 0xC7862DEF,
240
  0xFB850AC9, 0x5EC498B7, 0xB4EA58C4, 0x11ABCABA, 0x655BAED3, 0xC01A3CAD, 0x2A34FCDE, 0x8F756EA0,
241
  0xC3D4340C, 0x6695A672, 0x8CBB6601, 0x29FAF47F, 0x5D0A9016, 0xF84B0268, 0x1265C21B, 0xB7245065,
242
  0x6A638C57, 0xCF221E29, 0x250CDE5A, 0x804D4C24, 0xF4BD284D, 0x51FCBA33, 0xBBD27A40, 0x1E93E83E,
243
  0x5232B292, 0xF77320EC, 0x1D5DE09F, 0xB81C72E1, 0xCCEC1688, 0x69AD84F6, 0x83834485, 0x26C2D6FB,
244
  0x1AC1F1DD, 0xBF8063A3, 0x55AEA3D0, 0xF0EF31AE, 0x841F55C7, 0x215EC7B9, 0xCB7007CA, 0x6E3195B4,
245
  0x2290CF18, 0x87D15D66, 0x6DFF9D15, 0xC8BE0F6B, 0xBC4E6B02, 0x190FF97C, 0xF321390F, 0x5660AB71,
246
  0x4C42F79A, 0xE90365E4, 0x032DA597, 0xA66C37E9, 0xD29C5380, 0x77DDC1FE, 0x9DF3018D, 0x38B293F3,
247
  0x7413C95F, 0xD1525B21, 0x3B7C9B52, 0x9E3D092C, 0xEACD6D45, 0x4F8CFF3B, 0xA5A23F48, 0x00E3AD36,
248
  0x3CE08A10, 0x99A1186E, 0x738FD81D, 0xD6CE4A63, 0xA23E2E0A, 0x077FBC74, 0xED517C07, 0x4810EE79,
249
  0x04B1B4D5, 0xA1F026AB, 0x4BDEE6D8, 0xEE9F74A6, 0x9A6F10CF, 0x3F2E82B1, 0xD50042C2, 0x7041D0BC,
250
  0xAD060C8E, 0x08479EF0, 0xE2695E83, 0x4728CCFD, 0x33D8A894, 0x96993AEA, 0x7CB7FA99, 0xD9F668E7,
251
  0x9557324B, 0x3016A035, 0xDA386046, 0x7F79F238, 0x0B899651, 0xAEC8042F, 0x44E6C45C, 0xE1A75622,
252
  0xDDA47104, 0x78E5E37A, 0x92CB2309, 0x378AB177, 0x437AD51E, 0xE63B4760, 0x0C158713, 0xA954156D,
253
  0xE5F54FC1, 0x40B4DDBF, 0xAA9A1DCC, 0x0FDB8FB2, 0x7B2BEBDB, 0xDE6A79A5, 0x3444B9D6, 0x91052BA8
254
};
255
256
/*
257
 * end of the CRC lookup table crc_tableil8_o48
258
 */
259
260
261
262
/*
263
 * The following CRC lookup table was generated automagically using the
264
 * following model parameters:
265
 *
266
 * Generator Polynomial = ................. 0x1EDC6F41
267
 * Generator Polynomial Length = .......... 32 bits
268
 * Reflected Bits = ....................... TRUE
269
 * Table Generation Offset = .............. 32 bits
270
 * Number of Slices = ..................... 8 slices
271
 * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
272
 * Directory Name = ....................... .\
273
 * File Name = ............................ 8x256_tables.c
274
 */
275
276
static const uint32_t sctp_crc_tableil8_o56[256] =
277
{
278
  0x00000000, 0xDD45AAB8, 0xBF672381, 0x62228939, 0x7B2231F3, 0xA6679B4B, 0xC4451272, 0x1900B8CA,
279
  0xF64463E6, 0x2B01C95E, 0x49234067, 0x9466EADF, 0x8D665215, 0x5023F8AD, 0x32017194, 0xEF44DB2C,
280
  0xE964B13D, 0x34211B85, 0x560392BC, 0x8B463804, 0x924680CE, 0x4F032A76, 0x2D21A34F, 0xF06409F7,
281
  0x1F20D2DB, 0xC2657863, 0xA047F15A, 0x7D025BE2, 0x6402E328, 0xB9474990, 0xDB65C0A9, 0x06206A11,
282
  0xD725148B, 0x0A60BE33, 0x6842370A, 0xB5079DB2, 0xAC072578, 0x71428FC0, 0x136006F9, 0xCE25AC41,
283
  0x2161776D, 0xFC24DDD5, 0x9E0654EC, 0x4343FE54, 0x5A43469E, 0x8706EC26, 0xE524651F, 0x3861CFA7,
284
  0x3E41A5B6, 0xE3040F0E, 0x81268637, 0x5C632C8F, 0x45639445, 0x98263EFD, 0xFA04B7C4, 0x27411D7C,
285
  0xC805C650, 0x15406CE8, 0x7762E5D1, 0xAA274F69, 0xB327F7A3, 0x6E625D1B, 0x0C40D422, 0xD1057E9A,
286
  0xABA65FE7, 0x76E3F55F, 0x14C17C66, 0xC984D6DE, 0xD0846E14, 0x0DC1C4AC, 0x6FE34D95, 0xB2A6E72D,
287
  0x5DE23C01, 0x80A796B9, 0xE2851F80, 0x3FC0B538, 0x26C00DF2, 0xFB85A74A, 0x99A72E73, 0x44E284CB,
288
  0x42C2EEDA, 0x9F874462, 0xFDA5CD5B, 0x20E067E3, 0x39E0DF29, 0xE4A57591, 0x8687FCA8, 0x5BC25610,
289
  0xB4868D3C, 0x69C32784, 0x0BE1AEBD, 0xD6A40405, 0xCFA4BCCF, 0x12E11677, 0x70C39F4E, 0xAD8635F6,
290
  0x7C834B6C, 0xA1C6E1D4, 0xC3E468ED, 0x1EA1C255, 0x07A17A9F, 0xDAE4D027, 0xB8C6591E, 0x6583F3A6,
291
  0x8AC7288A, 0x57828232, 0x35A00B0B, 0xE8E5A1B3, 0xF1E51979, 0x2CA0B3C1, 0x4E823AF8, 0x93C79040,
292
  0x95E7FA51, 0x48A250E9, 0x2A80D9D0, 0xF7C57368, 0xEEC5CBA2, 0x3380611A, 0x51A2E823, 0x8CE7429B,
293
  0x63A399B7, 0xBEE6330F, 0xDCC4BA36, 0x0181108E, 0x1881A844, 0xC5C402FC, 0xA7E68BC5, 0x7AA3217D,
294
  0x52A0C93F, 0x8FE56387, 0xEDC7EABE, 0x30824006, 0x2982F8CC, 0xF4C75274, 0x96E5DB4D, 0x4BA071F5,
295
  0xA4E4AAD9, 0x79A10061, 0x1B838958, 0xC6C623E0, 0xDFC69B2A, 0x02833192, 0x60A1B8AB, 0xBDE41213,
296
  0xBBC47802, 0x6681D2BA, 0x04A35B83, 0xD9E6F13B, 0xC0E649F1, 0x1DA3E349, 0x7F816A70, 0xA2C4C0C8,
297
  0x4D801BE4, 0x90C5B15C, 0xF2E73865, 0x2FA292DD, 0x36A22A17, 0xEBE780AF, 0x89C50996, 0x5480A32E,
298
  0x8585DDB4, 0x58C0770C, 0x3AE2FE35, 0xE7A7548D, 0xFEA7EC47, 0x23E246FF, 0x41C0CFC6, 0x9C85657E,
299
  0x73C1BE52, 0xAE8414EA, 0xCCA69DD3, 0x11E3376B, 0x08E38FA1, 0xD5A62519, 0xB784AC20, 0x6AC10698,
300
  0x6CE16C89, 0xB1A4C631, 0xD3864F08, 0x0EC3E5B0, 0x17C35D7A, 0xCA86F7C2, 0xA8A47EFB, 0x75E1D443,
301
  0x9AA50F6F, 0x47E0A5D7, 0x25C22CEE, 0xF8878656, 0xE1873E9C, 0x3CC29424, 0x5EE01D1D, 0x83A5B7A5,
302
  0xF90696D8, 0x24433C60, 0x4661B559, 0x9B241FE1, 0x8224A72B, 0x5F610D93, 0x3D4384AA, 0xE0062E12,
303
  0x0F42F53E, 0xD2075F86, 0xB025D6BF, 0x6D607C07, 0x7460C4CD, 0xA9256E75, 0xCB07E74C, 0x16424DF4,
304
  0x106227E5, 0xCD278D5D, 0xAF050464, 0x7240AEDC, 0x6B401616, 0xB605BCAE, 0xD4273597, 0x09629F2F,
305
  0xE6264403, 0x3B63EEBB, 0x59416782, 0x8404CD3A, 0x9D0475F0, 0x4041DF48, 0x22635671, 0xFF26FCC9,
306
  0x2E238253, 0xF36628EB, 0x9144A1D2, 0x4C010B6A, 0x5501B3A0, 0x88441918, 0xEA669021, 0x37233A99,
307
  0xD867E1B5, 0x05224B0D, 0x6700C234, 0xBA45688C, 0xA345D046, 0x7E007AFE, 0x1C22F3C7, 0xC167597F,
308
  0xC747336E, 0x1A0299D6, 0x782010EF, 0xA565BA57, 0xBC65029D, 0x6120A825, 0x0302211C, 0xDE478BA4,
309
  0x31035088, 0xEC46FA30, 0x8E647309, 0x5321D9B1, 0x4A21617B, 0x9764CBC3, 0xF54642FA, 0x2803E842
310
};
311
312
/*
313
 * end of the CRC lookup table crc_tableil8_o56
314
 */
315
316
317
318
/*
319
 * The following CRC lookup table was generated automagically using the
320
 * following model parameters:
321
 *
322
 * Generator Polynomial = ................. 0x1EDC6F41
323
 * Generator Polynomial Length = .......... 32 bits
324
 * Reflected Bits = ....................... TRUE
325
 * Table Generation Offset = .............. 32 bits
326
 * Number of Slices = ..................... 8 slices
327
 * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
328
 * Directory Name = ....................... .\
329
 * File Name = ............................ 8x256_tables.c
330
 */
331
332
static const uint32_t sctp_crc_tableil8_o64[256] =
333
{
334
  0x00000000, 0x38116FAC, 0x7022DF58, 0x4833B0F4, 0xE045BEB0, 0xD854D11C, 0x906761E8, 0xA8760E44,
335
  0xC5670B91, 0xFD76643D, 0xB545D4C9, 0x8D54BB65, 0x2522B521, 0x1D33DA8D, 0x55006A79, 0x6D1105D5,
336
  0x8F2261D3, 0xB7330E7F, 0xFF00BE8B, 0xC711D127, 0x6F67DF63, 0x5776B0CF, 0x1F45003B, 0x27546F97,
337
  0x4A456A42, 0x725405EE, 0x3A67B51A, 0x0276DAB6, 0xAA00D4F2, 0x9211BB5E, 0xDA220BAA, 0xE2336406,
338
  0x1BA8B557, 0x23B9DAFB, 0x6B8A6A0F, 0x539B05A3, 0xFBED0BE7, 0xC3FC644B, 0x8BCFD4BF, 0xB3DEBB13,
339
  0xDECFBEC6, 0xE6DED16A, 0xAEED619E, 0x96FC0E32, 0x3E8A0076, 0x069B6FDA, 0x4EA8DF2E, 0x76B9B082,
340
  0x948AD484, 0xAC9BBB28, 0xE4A80BDC, 0xDCB96470, 0x74CF6A34, 0x4CDE0598, 0x04EDB56C, 0x3CFCDAC0,
341
  0x51EDDF15, 0x69FCB0B9, 0x21CF004D, 0x19DE6FE1, 0xB1A861A5, 0x89B90E09, 0xC18ABEFD, 0xF99BD151,
342
  0x37516AAE, 0x0F400502, 0x4773B5F6, 0x7F62DA5A, 0xD714D41E, 0xEF05BBB2, 0xA7360B46, 0x9F2764EA,
343
  0xF236613F, 0xCA270E93, 0x8214BE67, 0xBA05D1CB, 0x1273DF8F, 0x2A62B023, 0x625100D7, 0x5A406F7B,
344
  0xB8730B7D, 0x806264D1, 0xC851D425, 0xF040BB89, 0x5836B5CD, 0x6027DA61, 0x28146A95, 0x10050539,
345
  0x7D1400EC, 0x45056F40, 0x0D36DFB4, 0x3527B018, 0x9D51BE5C, 0xA540D1F0, 0xED736104, 0xD5620EA8,
346
  0x2CF9DFF9, 0x14E8B055, 0x5CDB00A1, 0x64CA6F0D, 0xCCBC6149, 0xF4AD0EE5, 0xBC9EBE11, 0x848FD1BD,
347
  0xE99ED468, 0xD18FBBC4, 0x99BC0B30, 0xA1AD649C, 0x09DB6AD8, 0x31CA0574, 0x79F9B580, 0x41E8DA2C,
348
  0xA3DBBE2A, 0x9BCAD186, 0xD3F96172, 0xEBE80EDE, 0x439E009A, 0x7B8F6F36, 0x33BCDFC2, 0x0BADB06E,
349
  0x66BCB5BB, 0x5EADDA17, 0x169E6AE3, 0x2E8F054F, 0x86F90B0B, 0xBEE864A7, 0xF6DBD453, 0xCECABBFF,
350
  0x6EA2D55C, 0x56B3BAF0, 0x1E800A04, 0x269165A8, 0x8EE76BEC, 0xB6F60440, 0xFEC5B4B4, 0xC6D4DB18,
351
  0xABC5DECD, 0x93D4B161, 0xDBE70195, 0xE3F66E39, 0x4B80607D, 0x73910FD1, 0x3BA2BF25, 0x03B3D089,
352
  0xE180B48F, 0xD991DB23, 0x91A26BD7, 0xA9B3047B, 0x01C50A3F, 0x39D46593, 0x71E7D567, 0x49F6BACB,
353
  0x24E7BF1E, 0x1CF6D0B2, 0x54C56046, 0x6CD40FEA, 0xC4A201AE, 0xFCB36E02, 0xB480DEF6, 0x8C91B15A,
354
  0x750A600B, 0x4D1B0FA7, 0x0528BF53, 0x3D39D0FF, 0x954FDEBB, 0xAD5EB117, 0xE56D01E3, 0xDD7C6E4F,
355
  0xB06D6B9A, 0x887C0436, 0xC04FB4C2, 0xF85EDB6E, 0x5028D52A, 0x6839BA86, 0x200A0A72, 0x181B65DE,
356
  0xFA2801D8, 0xC2396E74, 0x8A0ADE80, 0xB21BB12C, 0x1A6DBF68, 0x227CD0C4, 0x6A4F6030, 0x525E0F9C,
357
  0x3F4F0A49, 0x075E65E5, 0x4F6DD511, 0x777CBABD, 0xDF0AB4F9, 0xE71BDB55, 0xAF286BA1, 0x9739040D,
358
  0x59F3BFF2, 0x61E2D05E, 0x29D160AA, 0x11C00F06, 0xB9B60142, 0x81A76EEE, 0xC994DE1A, 0xF185B1B6,
359
  0x9C94B463, 0xA485DBCF, 0xECB66B3B, 0xD4A70497, 0x7CD10AD3, 0x44C0657F, 0x0CF3D58B, 0x34E2BA27,
360
  0xD6D1DE21, 0xEEC0B18D, 0xA6F30179, 0x9EE26ED5, 0x36946091, 0x0E850F3D, 0x46B6BFC9, 0x7EA7D065,
361
  0x13B6D5B0, 0x2BA7BA1C, 0x63940AE8, 0x5B856544, 0xF3F36B00, 0xCBE204AC, 0x83D1B458, 0xBBC0DBF4,
362
  0x425B0AA5, 0x7A4A6509, 0x3279D5FD, 0x0A68BA51, 0xA21EB415, 0x9A0FDBB9, 0xD23C6B4D, 0xEA2D04E1,
363
  0x873C0134, 0xBF2D6E98, 0xF71EDE6C, 0xCF0FB1C0, 0x6779BF84, 0x5F68D028, 0x175B60DC, 0x2F4A0F70,
364
  0xCD796B76, 0xF56804DA, 0xBD5BB42E, 0x854ADB82, 0x2D3CD5C6, 0x152DBA6A, 0x5D1E0A9E, 0x650F6532,
365
  0x081E60E7, 0x300F0F4B, 0x783CBFBF, 0x402DD013, 0xE85BDE57, 0xD04AB1FB, 0x9879010F, 0xA0686EA3
366
};
367
368
/*
369
 * end of the CRC lookup table crc_tableil8_o64
370
 */
371
372
373
374
/*
375
 * The following CRC lookup table was generated automagically using the
376
 * following model parameters:
377
 *
378
 * Generator Polynomial = ................. 0x1EDC6F41
379
 * Generator Polynomial Length = .......... 32 bits
380
 * Reflected Bits = ....................... TRUE
381
 * Table Generation Offset = .............. 32 bits
382
 * Number of Slices = ..................... 8 slices
383
 * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
384
 * Directory Name = ....................... .\
385
 * File Name = ............................ 8x256_tables.c
386
 */
387
388
static const uint32_t sctp_crc_tableil8_o72[256] =
389
{
390
  0x00000000, 0xEF306B19, 0xDB8CA0C3, 0x34BCCBDA, 0xB2F53777, 0x5DC55C6E, 0x697997B4, 0x8649FCAD,
391
  0x6006181F, 0x8F367306, 0xBB8AB8DC, 0x54BAD3C5, 0xD2F32F68, 0x3DC34471, 0x097F8FAB, 0xE64FE4B2,
392
  0xC00C303E, 0x2F3C5B27, 0x1B8090FD, 0xF4B0FBE4, 0x72F90749, 0x9DC96C50, 0xA975A78A, 0x4645CC93,
393
  0xA00A2821, 0x4F3A4338, 0x7B8688E2, 0x94B6E3FB, 0x12FF1F56, 0xFDCF744F, 0xC973BF95, 0x2643D48C,
394
  0x85F4168D, 0x6AC47D94, 0x5E78B64E, 0xB148DD57, 0x370121FA, 0xD8314AE3, 0xEC8D8139, 0x03BDEA20,
395
  0xE5F20E92, 0x0AC2658B, 0x3E7EAE51, 0xD14EC548, 0x570739E5, 0xB83752FC, 0x8C8B9926, 0x63BBF23F,
396
  0x45F826B3, 0xAAC84DAA, 0x9E748670, 0x7144ED69, 0xF70D11C4, 0x183D7ADD, 0x2C81B107, 0xC3B1DA1E,
397
  0x25FE3EAC, 0xCACE55B5, 0xFE729E6F, 0x1142F576, 0x970B09DB, 0x783B62C2, 0x4C87A918, 0xA3B7C201,
398
  0x0E045BEB, 0xE13430F2, 0xD588FB28, 0x3AB89031, 0xBCF16C9C, 0x53C10785, 0x677DCC5F, 0x884DA746,
399
  0x6E0243F4, 0x813228ED, 0xB58EE337, 0x5ABE882E, 0xDCF77483, 0x33C71F9A, 0x077BD440, 0xE84BBF59,
400
  0xCE086BD5, 0x213800CC, 0x1584CB16, 0xFAB4A00F, 0x7CFD5CA2, 0x93CD37BB, 0xA771FC61, 0x48419778,
401
  0xAE0E73CA, 0x413E18D3, 0x7582D309, 0x9AB2B810, 0x1CFB44BD, 0xF3CB2FA4, 0xC777E47E, 0x28478F67,
402
  0x8BF04D66, 0x64C0267F, 0x507CEDA5, 0xBF4C86BC, 0x39057A11, 0xD6351108, 0xE289DAD2, 0x0DB9B1CB,
403
  0xEBF65579, 0x04C63E60, 0x307AF5BA, 0xDF4A9EA3, 0x5903620E, 0xB6330917, 0x828FC2CD, 0x6DBFA9D4,
404
  0x4BFC7D58, 0xA4CC1641, 0x9070DD9B, 0x7F40B682, 0xF9094A2F, 0x16392136, 0x2285EAEC, 0xCDB581F5,
405
  0x2BFA6547, 0xC4CA0E5E, 0xF076C584, 0x1F46AE9D, 0x990F5230, 0x763F3929, 0x4283F2F3, 0xADB399EA,
406
  0x1C08B7D6, 0xF338DCCF, 0xC7841715, 0x28B47C0C, 0xAEFD80A1, 0x41CDEBB8, 0x75712062, 0x9A414B7B,
407
  0x7C0EAFC9, 0x933EC4D0, 0xA7820F0A, 0x48B26413, 0xCEFB98BE, 0x21CBF3A7, 0x1577387D, 0xFA475364,
408
  0xDC0487E8, 0x3334ECF1, 0x0788272B, 0xE8B84C32, 0x6EF1B09F, 0x81C1DB86, 0xB57D105C, 0x5A4D7B45,
409
  0xBC029FF7, 0x5332F4EE, 0x678E3F34, 0x88BE542D, 0x0EF7A880, 0xE1C7C399, 0xD57B0843, 0x3A4B635A,
410
  0x99FCA15B, 0x76CCCA42, 0x42700198, 0xAD406A81, 0x2B09962C, 0xC439FD35, 0xF08536EF, 0x1FB55DF6,
411
  0xF9FAB944, 0x16CAD25D, 0x22761987, 0xCD46729E, 0x4B0F8E33, 0xA43FE52A, 0x90832EF0, 0x7FB345E9,
412
  0x59F09165, 0xB6C0FA7C, 0x827C31A6, 0x6D4C5ABF, 0xEB05A612, 0x0435CD0B, 0x308906D1, 0xDFB96DC8,
413
  0x39F6897A, 0xD6C6E263, 0xE27A29B9, 0x0D4A42A0, 0x8B03BE0D, 0x6433D514, 0x508F1ECE, 0xBFBF75D7,
414
  0x120CEC3D, 0xFD3C8724, 0xC9804CFE, 0x26B027E7, 0xA0F9DB4A, 0x4FC9B053, 0x7B757B89, 0x94451090,
415
  0x720AF422, 0x9D3A9F3B, 0xA98654E1, 0x46B63FF8, 0xC0FFC355, 0x2FCFA84C, 0x1B736396, 0xF443088F,
416
  0xD200DC03, 0x3D30B71A, 0x098C7CC0, 0xE6BC17D9, 0x60F5EB74, 0x8FC5806D, 0xBB794BB7, 0x544920AE,
417
  0xB206C41C, 0x5D36AF05, 0x698A64DF, 0x86BA0FC6, 0x00F3F36B, 0xEFC39872, 0xDB7F53A8, 0x344F38B1,
418
  0x97F8FAB0, 0x78C891A9, 0x4C745A73, 0xA344316A, 0x250DCDC7, 0xCA3DA6DE, 0xFE816D04, 0x11B1061D,
419
  0xF7FEE2AF, 0x18CE89B6, 0x2C72426C, 0xC3422975, 0x450BD5D8, 0xAA3BBEC1, 0x9E87751B, 0x71B71E02,
420
  0x57F4CA8E, 0xB8C4A197, 0x8C786A4D, 0x63480154, 0xE501FDF9, 0x0A3196E0, 0x3E8D5D3A, 0xD1BD3623,
421
  0x37F2D291, 0xD8C2B988, 0xEC7E7252, 0x034E194B, 0x8507E5E6, 0x6A378EFF, 0x5E8B4525, 0xB1BB2E3C
422
};
423
424
/*
425
 * end of the CRC lookup table crc_tableil8_o72
426
 */
427
428
429
430
/*
431
 * The following CRC lookup table was generated automagically using the
432
 * following model parameters:
433
 *
434
 * Generator Polynomial = ................. 0x1EDC6F41
435
 * Generator Polynomial Length = .......... 32 bits
436
 * Reflected Bits = ....................... TRUE
437
 * Table Generation Offset = .............. 32 bits
438
 * Number of Slices = ..................... 8 slices
439
 * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
440
 * Directory Name = ....................... .\
441
 * File Name = ............................ 8x256_tables.c
442
 */
443
444
static const uint32_t sctp_crc_tableil8_o80[256] =
445
{
446
  0x00000000, 0x68032CC8, 0xD0065990, 0xB8057558, 0xA5E0C5D1, 0xCDE3E919, 0x75E69C41, 0x1DE5B089,
447
  0x4E2DFD53, 0x262ED19B, 0x9E2BA4C3, 0xF628880B, 0xEBCD3882, 0x83CE144A, 0x3BCB6112, 0x53C84DDA,
448
  0x9C5BFAA6, 0xF458D66E, 0x4C5DA336, 0x245E8FFE, 0x39BB3F77, 0x51B813BF, 0xE9BD66E7, 0x81BE4A2F,
449
  0xD27607F5, 0xBA752B3D, 0x02705E65, 0x6A7372AD, 0x7796C224, 0x1F95EEEC, 0xA7909BB4, 0xCF93B77C,
450
  0x3D5B83BD, 0x5558AF75, 0xED5DDA2D, 0x855EF6E5, 0x98BB466C, 0xF0B86AA4, 0x48BD1FFC, 0x20BE3334,
451
  0x73767EEE, 0x1B755226, 0xA370277E, 0xCB730BB6, 0xD696BB3F, 0xBE9597F7, 0x0690E2AF, 0x6E93CE67,
452
  0xA100791B, 0xC90355D3, 0x7106208B, 0x19050C43, 0x04E0BCCA, 0x6CE39002, 0xD4E6E55A, 0xBCE5C992,
453
  0xEF2D8448, 0x872EA880, 0x3F2BDDD8, 0x5728F110, 0x4ACD4199, 0x22CE6D51, 0x9ACB1809, 0xF2C834C1,
454
  0x7AB7077A, 0x12B42BB2, 0xAAB15EEA, 0xC2B27222, 0xDF57C2AB, 0xB754EE63, 0x0F519B3B, 0x6752B7F3,
455
  0x349AFA29, 0x5C99D6E1, 0xE49CA3B9, 0x8C9F8F71, 0x917A3FF8, 0xF9791330, 0x417C6668, 0x297F4AA0,
456
  0xE6ECFDDC, 0x8EEFD114, 0x36EAA44C, 0x5EE98884, 0x430C380D, 0x2B0F14C5, 0x930A619D, 0xFB094D55,
457
  0xA8C1008F, 0xC0C22C47, 0x78C7591F, 0x10C475D7, 0x0D21C55E, 0x6522E996, 0xDD279CCE, 0xB524B006,
458
  0x47EC84C7, 0x2FEFA80F, 0x97EADD57, 0xFFE9F19F, 0xE20C4116, 0x8A0F6DDE, 0x320A1886, 0x5A09344E,
459
  0x09C17994, 0x61C2555C, 0xD9C72004, 0xB1C40CCC, 0xAC21BC45, 0xC422908D, 0x7C27E5D5, 0x1424C91D,
460
  0xDBB77E61, 0xB3B452A9, 0x0BB127F1, 0x63B20B39, 0x7E57BBB0, 0x16549778, 0xAE51E220, 0xC652CEE8,
461
  0x959A8332, 0xFD99AFFA, 0x459CDAA2, 0x2D9FF66A, 0x307A46E3, 0x58796A2B, 0xE07C1F73, 0x887F33BB,
462
  0xF56E0EF4, 0x9D6D223C, 0x25685764, 0x4D6B7BAC, 0x508ECB25, 0x388DE7ED, 0x808892B5, 0xE88BBE7D,
463
  0xBB43F3A7, 0xD340DF6F, 0x6B45AA37, 0x034686FF, 0x1EA33676, 0x76A01ABE, 0xCEA56FE6, 0xA6A6432E,
464
  0x6935F452, 0x0136D89A, 0xB933ADC2, 0xD130810A, 0xCCD53183, 0xA4D61D4B, 0x1CD36813, 0x74D044DB,
465
  0x27180901, 0x4F1B25C9, 0xF71E5091, 0x9F1D7C59, 0x82F8CCD0, 0xEAFBE018, 0x52FE9540, 0x3AFDB988,
466
  0xC8358D49, 0xA036A181, 0x1833D4D9, 0x7030F811, 0x6DD54898, 0x05D66450, 0xBDD31108, 0xD5D03DC0,
467
  0x8618701A, 0xEE1B5CD2, 0x561E298A, 0x3E1D0542, 0x23F8B5CB, 0x4BFB9903, 0xF3FEEC5B, 0x9BFDC093,
468
  0x546E77EF, 0x3C6D5B27, 0x84682E7F, 0xEC6B02B7, 0xF18EB23E, 0x998D9EF6, 0x2188EBAE, 0x498BC766,
469
  0x1A438ABC, 0x7240A674, 0xCA45D32C, 0xA246FFE4, 0xBFA34F6D, 0xD7A063A5, 0x6FA516FD, 0x07A63A35,
470
  0x8FD9098E, 0xE7DA2546, 0x5FDF501E, 0x37DC7CD6, 0x2A39CC5F, 0x423AE097, 0xFA3F95CF, 0x923CB907,
471
  0xC1F4F4DD, 0xA9F7D815, 0x11F2AD4D, 0x79F18185, 0x6414310C, 0x0C171DC4, 0xB412689C, 0xDC114454,
472
  0x1382F328, 0x7B81DFE0, 0xC384AAB8, 0xAB878670, 0xB66236F9, 0xDE611A31, 0x66646F69, 0x0E6743A1,
473
  0x5DAF0E7B, 0x35AC22B3, 0x8DA957EB, 0xE5AA7B23, 0xF84FCBAA, 0x904CE762, 0x2849923A, 0x404ABEF2,
474
  0xB2828A33, 0xDA81A6FB, 0x6284D3A3, 0x0A87FF6B, 0x17624FE2, 0x7F61632A, 0xC7641672, 0xAF673ABA,
475
  0xFCAF7760, 0x94AC5BA8, 0x2CA92EF0, 0x44AA0238, 0x594FB2B1, 0x314C9E79, 0x8949EB21, 0xE14AC7E9,
476
  0x2ED97095, 0x46DA5C5D, 0xFEDF2905, 0x96DC05CD, 0x8B39B544, 0xE33A998C, 0x5B3FECD4, 0x333CC01C,
477
  0x60F48DC6, 0x08F7A10E, 0xB0F2D456, 0xD8F1F89E, 0xC5144817, 0xAD1764DF, 0x15121187, 0x7D113D4F
478
};
479
480
/*
481
 * end of the CRC lookup table crc_tableil8_o80
482
 */
483
484
485
486
/*
487
 * The following CRC lookup table was generated automagically using the
488
 * following model parameters:
489
 *
490
 * Generator Polynomial = ................. 0x1EDC6F41
491
 * Generator Polynomial Length = .......... 32 bits
492
 * Reflected Bits = ....................... TRUE
493
 * Table Generation Offset = .............. 32 bits
494
 * Number of Slices = ..................... 8 slices
495
 * Slice Lengths = ........................ 8 8 8 8 8 8 8 8
496
 * Directory Name = ....................... .\
497
 * File Name = ............................ 8x256_tables.c
498
 */
499
500
static const uint32_t sctp_crc_tableil8_o88[256] =
501
{
502
  0x00000000, 0x493C7D27, 0x9278FA4E, 0xDB448769, 0x211D826D, 0x6821FF4A, 0xB3657823, 0xFA590504,
503
  0x423B04DA, 0x0B0779FD, 0xD043FE94, 0x997F83B3, 0x632686B7, 0x2A1AFB90, 0xF15E7CF9, 0xB86201DE,
504
  0x847609B4, 0xCD4A7493, 0x160EF3FA, 0x5F328EDD, 0xA56B8BD9, 0xEC57F6FE, 0x37137197, 0x7E2F0CB0,
505
  0xC64D0D6E, 0x8F717049, 0x5435F720, 0x1D098A07, 0xE7508F03, 0xAE6CF224, 0x7528754D, 0x3C14086A,
506
  0x0D006599, 0x443C18BE, 0x9F789FD7, 0xD644E2F0, 0x2C1DE7F4, 0x65219AD3, 0xBE651DBA, 0xF759609D,
507
  0x4F3B6143, 0x06071C64, 0xDD439B0D, 0x947FE62A, 0x6E26E32E, 0x271A9E09, 0xFC5E1960, 0xB5626447,
508
  0x89766C2D, 0xC04A110A, 0x1B0E9663, 0x5232EB44, 0xA86BEE40, 0xE1579367, 0x3A13140E, 0x732F6929,
509
  0xCB4D68F7, 0x827115D0, 0x593592B9, 0x1009EF9E, 0xEA50EA9A, 0xA36C97BD, 0x782810D4, 0x31146DF3,
510
  0x1A00CB32, 0x533CB615, 0x8878317C, 0xC1444C5B, 0x3B1D495F, 0x72213478, 0xA965B311, 0xE059CE36,
511
  0x583BCFE8, 0x1107B2CF, 0xCA4335A6, 0x837F4881, 0x79264D85, 0x301A30A2, 0xEB5EB7CB, 0xA262CAEC,
512
  0x9E76C286, 0xD74ABFA1, 0x0C0E38C8, 0x453245EF, 0xBF6B40EB, 0xF6573DCC, 0x2D13BAA5, 0x642FC782,
513
  0xDC4DC65C, 0x9571BB7B, 0x4E353C12, 0x07094135, 0xFD504431, 0xB46C3916, 0x6F28BE7F, 0x2614C358,
514
  0x1700AEAB, 0x5E3CD38C, 0x857854E5, 0xCC4429C2, 0x361D2CC6, 0x7F2151E1, 0xA465D688, 0xED59ABAF,
515
  0x553BAA71, 0x1C07D756, 0xC743503F, 0x8E7F2D18, 0x7426281C, 0x3D1A553B, 0xE65ED252, 0xAF62AF75,
516
  0x9376A71F, 0xDA4ADA38, 0x010E5D51, 0x48322076, 0xB26B2572, 0xFB575855, 0x2013DF3C, 0x692FA21B,
517
  0xD14DA3C5, 0x9871DEE2, 0x4335598B, 0x0A0924AC, 0xF05021A8, 0xB96C5C8F, 0x6228DBE6, 0x2B14A6C1,
518
  0x34019664, 0x7D3DEB43, 0xA6796C2A, 0xEF45110D, 0x151C1409, 0x5C20692E, 0x8764EE47, 0xCE589360,
519
  0x763A92BE, 0x3F06EF99, 0xE44268F0, 0xAD7E15D7, 0x572710D3, 0x1E1B6DF4, 0xC55FEA9D, 0x8C6397BA,
520
  0xB0779FD0, 0xF94BE2F7, 0x220F659E, 0x6B3318B9, 0x916A1DBD, 0xD856609A, 0x0312E7F3, 0x4A2E9AD4,
521
  0xF24C9B0A, 0xBB70E62D, 0x60346144, 0x29081C63, 0xD3511967, 0x9A6D6440, 0x4129E329, 0x08159E0E,
522
  0x3901F3FD, 0x703D8EDA, 0xAB7909B3, 0xE2457494, 0x181C7190, 0x51200CB7, 0x8A648BDE, 0xC358F6F9,
523
  0x7B3AF727, 0x32068A00, 0xE9420D69, 0xA07E704E, 0x5A27754A, 0x131B086D, 0xC85F8F04, 0x8163F223,
524
  0xBD77FA49, 0xF44B876E, 0x2F0F0007, 0x66337D20, 0x9C6A7824, 0xD5560503, 0x0E12826A, 0x472EFF4D,
525
  0xFF4CFE93, 0xB67083B4, 0x6D3404DD, 0x240879FA, 0xDE517CFE, 0x976D01D9, 0x4C2986B0, 0x0515FB97,
526
  0x2E015D56, 0x673D2071, 0xBC79A718, 0xF545DA3F, 0x0F1CDF3B, 0x4620A21C, 0x9D642575, 0xD4585852,
527
  0x6C3A598C, 0x250624AB, 0xFE42A3C2, 0xB77EDEE5, 0x4D27DBE1, 0x041BA6C6, 0xDF5F21AF, 0x96635C88,
528
  0xAA7754E2, 0xE34B29C5, 0x380FAEAC, 0x7133D38B, 0x8B6AD68F, 0xC256ABA8, 0x19122CC1, 0x502E51E6,
529
  0xE84C5038, 0xA1702D1F, 0x7A34AA76, 0x3308D751, 0xC951D255, 0x806DAF72, 0x5B29281B, 0x1215553C,
530
  0x230138CF, 0x6A3D45E8, 0xB179C281, 0xF845BFA6, 0x021CBAA2, 0x4B20C785, 0x906440EC, 0xD9583DCB,
531
  0x613A3C15, 0x28064132, 0xF342C65B, 0xBA7EBB7C, 0x4027BE78, 0x091BC35F, 0xD25F4436, 0x9B633911,
532
  0xA777317B, 0xEE4B4C5C, 0x350FCB35, 0x7C33B612, 0x866AB316, 0xCF56CE31, 0x14124958, 0x5D2E347F,
533
  0xE54C35A1, 0xAC704886, 0x7734CFEF, 0x3E08B2C8, 0xC451B7CC, 0x8D6DCAEB, 0x56294D82, 0x1F1530A5
534
};
535
536
/*
537
 * end of the CRC lookup table crc_tableil8_o88
538
 */
539
540
541
static uint32_t
542
sctp_crc32c_sb8_64_bit(uint32_t crc,
543
                       const unsigned char *p_buf,
544
                       uint32_t length,
545
                       uint32_t init_bytes)
546
0
{
547
0
  uint32_t li;
548
0
  uint32_t term1, term2;
549
0
  uint32_t running_length;
550
0
  uint32_t end_bytes;
551
552
0
  running_length = ((length - init_bytes) / 8) * 8;
553
0
  end_bytes = length - init_bytes - running_length;
554
555
0
  for (li = 0; li < init_bytes; li++)
556
0
    crc = sctp_crc_tableil8_o32[(crc ^ *p_buf++) & 0x000000FF] ^
557
0
        (crc >> 8);
558
0
  for (li = 0; li < running_length / 8; li++) {
559
#if BYTE_ORDER == BIG_ENDIAN
560
    crc ^= *p_buf++;
561
    crc ^= (*p_buf++) << 8;
562
    crc ^= (*p_buf++) << 16;
563
    crc ^= (*p_buf++) << 24;
564
#else
565
0
    crc ^= *(const uint32_t *) p_buf;
566
0
    p_buf += 4;
567
0
#endif
568
0
    term1 = sctp_crc_tableil8_o88[crc & 0x000000FF] ^
569
0
        sctp_crc_tableil8_o80[(crc >> 8) & 0x000000FF];
570
0
    term2 = crc >> 16;
571
0
    crc = term1 ^
572
0
        sctp_crc_tableil8_o72[term2 & 0x000000FF] ^
573
0
        sctp_crc_tableil8_o64[(term2 >> 8) & 0x000000FF];
574
575
#if BYTE_ORDER == BIG_ENDIAN
576
    crc ^= sctp_crc_tableil8_o56[*p_buf++];
577
    crc ^= sctp_crc_tableil8_o48[*p_buf++];
578
    crc ^= sctp_crc_tableil8_o40[*p_buf++];
579
    crc ^= sctp_crc_tableil8_o32[*p_buf++];
580
#else
581
0
    term1 = sctp_crc_tableil8_o56[(*(const uint32_t *) p_buf) & 0x000000FF] ^
582
0
        sctp_crc_tableil8_o48[((*(const uint32_t *) p_buf) >> 8) & 0x000000FF];
583
584
0
    term2 = (*(const uint32_t *) p_buf) >> 16;
585
0
    crc = crc ^
586
0
        term1 ^
587
0
        sctp_crc_tableil8_o40[term2 & 0x000000FF] ^
588
0
        sctp_crc_tableil8_o32[(term2 >> 8) & 0x000000FF];
589
0
    p_buf += 4;
590
0
#endif
591
0
  }
592
0
  for (li = 0; li < end_bytes; li++)
593
0
    crc = sctp_crc_tableil8_o32[(crc ^ *p_buf++) & 0x000000FF] ^
594
0
        (crc >> 8);
595
0
  return (crc);
596
0
}
597
598
599
/**
600
 *
601
 * Routine Description:
602
 *
603
 * warms the tables
604
 *
605
 * Arguments:
606
 *
607
 *    none
608
 *
609
 * Return value:
610
 *
611
 *    none
612
 */
613
static uint32_t
614
multitable_crc32c(uint32_t crc32c,
615
                  const unsigned char *buffer,
616
                  unsigned int length)
617
0
{
618
0
  uint32_t to_even_word;
619
620
0
  if (length == 0) {
621
0
    return (crc32c);
622
0
  }
623
0
  to_even_word = (4 - (((uintptr_t) buffer) & 0x3));
624
0
  return (sctp_crc32c_sb8_64_bit(crc32c, buffer, length, to_even_word));
625
0
}
626
627
static const uint32_t sctp_crc_c[256] = {
628
  0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4,
629
  0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB,
630
  0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B,
631
  0x4D43CFD0, 0xBF284CD3, 0xAC78BF27, 0x5E133C24,
632
  0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B,
633
  0xD7C45070, 0x25AFD373, 0x36FF2087, 0xC494A384,
634
  0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54,
635
  0x5D1D08BF, 0xAF768BBC, 0xBC267848, 0x4E4DFB4B,
636
  0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A,
637
  0xE72719C1, 0x154C9AC2, 0x061C6936, 0xF477EA35,
638
  0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5,
639
  0x6DFE410E, 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA,
640
  0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45,
641
  0xF779DEAE, 0x05125DAD, 0x1642AE59, 0xE4292D5A,
642
  0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A,
643
  0x7DA08661, 0x8FCB0562, 0x9C9BF696, 0x6EF07595,
644
  0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48,
645
  0x86E18AA3, 0x748A09A0, 0x67DAFA54, 0x95B17957,
646
  0xCBA24573, 0x39C9C670, 0x2A993584, 0xD8F2B687,
647
  0x0C38D26C, 0xFE53516F, 0xED03A29B, 0x1F682198,
648
  0x5125DAD3, 0xA34E59D0, 0xB01EAA24, 0x42752927,
649
  0x96BF4DCC, 0x64D4CECF, 0x77843D3B, 0x85EFBE38,
650
  0xDBFC821C, 0x2997011F, 0x3AC7F2EB, 0xC8AC71E8,
651
  0x1C661503, 0xEE0D9600, 0xFD5D65F4, 0x0F36E6F7,
652
  0x61C69362, 0x93AD1061, 0x80FDE395, 0x72966096,
653
  0xA65C047D, 0x5437877E, 0x4767748A, 0xB50CF789,
654
  0xEB1FCBAD, 0x197448AE, 0x0A24BB5A, 0xF84F3859,
655
  0x2C855CB2, 0xDEEEDFB1, 0xCDBE2C45, 0x3FD5AF46,
656
  0x7198540D, 0x83F3D70E, 0x90A324FA, 0x62C8A7F9,
657
  0xB602C312, 0x44694011, 0x5739B3E5, 0xA55230E6,
658
  0xFB410CC2, 0x092A8FC1, 0x1A7A7C35, 0xE811FF36,
659
  0x3CDB9BDD, 0xCEB018DE, 0xDDE0EB2A, 0x2F8B6829,
660
  0x82F63B78, 0x709DB87B, 0x63CD4B8F, 0x91A6C88C,
661
  0x456CAC67, 0xB7072F64, 0xA457DC90, 0x563C5F93,
662
  0x082F63B7, 0xFA44E0B4, 0xE9141340, 0x1B7F9043,
663
  0xCFB5F4A8, 0x3DDE77AB, 0x2E8E845F, 0xDCE5075C,
664
  0x92A8FC17, 0x60C37F14, 0x73938CE0, 0x81F80FE3,
665
  0x55326B08, 0xA759E80B, 0xB4091BFF, 0x466298FC,
666
  0x1871A4D8, 0xEA1A27DB, 0xF94AD42F, 0x0B21572C,
667
  0xDFEB33C7, 0x2D80B0C4, 0x3ED04330, 0xCCBBC033,
668
  0xA24BB5A6, 0x502036A5, 0x4370C551, 0xB11B4652,
669
  0x65D122B9, 0x97BAA1BA, 0x84EA524E, 0x7681D14D,
670
  0x2892ED69, 0xDAF96E6A, 0xC9A99D9E, 0x3BC21E9D,
671
  0xEF087A76, 0x1D63F975, 0x0E330A81, 0xFC588982,
672
  0xB21572C9, 0x407EF1CA, 0x532E023E, 0xA145813D,
673
  0x758FE5D6, 0x87E466D5, 0x94B49521, 0x66DF1622,
674
  0x38CC2A06, 0xCAA7A905, 0xD9F75AF1, 0x2B9CD9F2,
675
  0xFF56BD19, 0x0D3D3E1A, 0x1E6DCDEE, 0xEC064EED,
676
  0xC38D26C4, 0x31E6A5C7, 0x22B65633, 0xD0DDD530,
677
  0x0417B1DB, 0xF67C32D8, 0xE52CC12C, 0x1747422F,
678
  0x49547E0B, 0xBB3FFD08, 0xA86F0EFC, 0x5A048DFF,
679
  0x8ECEE914, 0x7CA56A17, 0x6FF599E3, 0x9D9E1AE0,
680
  0xD3D3E1AB, 0x21B862A8, 0x32E8915C, 0xC083125F,
681
  0x144976B4, 0xE622F5B7, 0xF5720643, 0x07198540,
682
  0x590AB964, 0xAB613A67, 0xB831C993, 0x4A5A4A90,
683
  0x9E902E7B, 0x6CFBAD78, 0x7FAB5E8C, 0x8DC0DD8F,
684
  0xE330A81A, 0x115B2B19, 0x020BD8ED, 0xF0605BEE,
685
  0x24AA3F05, 0xD6C1BC06, 0xC5914FF2, 0x37FACCF1,
686
  0x69E9F0D5, 0x9B8273D6, 0x88D28022, 0x7AB90321,
687
  0xAE7367CA, 0x5C18E4C9, 0x4F48173D, 0xBD23943E,
688
  0xF36E6F75, 0x0105EC76, 0x12551F82, 0xE03E9C81,
689
  0x34F4F86A, 0xC69F7B69, 0xD5CF889D, 0x27A40B9E,
690
  0x79B737BA, 0x8BDCB4B9, 0x988C474D, 0x6AE7C44E,
691
  0xBE2DA0A5, 0x4C4623A6, 0x5F16D052, 0xAD7D5351,
692
};
693
694
695
0
#define SCTP_CRC32C(c,d) (c=(c>>8)^sctp_crc_c[(c^(d))&0xFF])
696
697
static uint32_t
698
singletable_crc32c(uint32_t crc32c,
699
                   const unsigned char *buffer,
700
                   unsigned int length)
701
0
{
702
0
  unsigned int i;
703
704
0
  for (i = 0; i < length; i++) {
705
0
    SCTP_CRC32C(crc32c, buffer[i]);
706
0
  }
707
0
  return (crc32c);
708
0
}
709
710
#if defined(__Userspace__)
711
uint32_t
712
#else
713
static uint32_t
714
#endif
715
calculate_crc32c(uint32_t crc32c,
716
                 const unsigned char *buffer,
717
                 unsigned int length)
718
0
{
719
0
  if (length < 4) {
720
0
    return (singletable_crc32c(crc32c, buffer, length));
721
0
  } else {
722
0
    return (multitable_crc32c(crc32c, buffer, length));
723
0
  }
724
0
}
725
726
#endif
727
#if defined(__Userspace__)
728
uint32_t
729
#else
730
static uint32_t
731
#endif
732
sctp_finalize_crc32c(uint32_t crc32c)
733
0
{
734
#if BYTE_ORDER == BIG_ENDIAN
735
  uint32_t byte0, byte1, byte2, byte3;
736
#endif
737
738
#if BYTE_ORDER == BIG_ENDIAN
739
  /*
740
   * For BIG-ENDIAN platforms, the result is in LITTLE-ENDIAN byte order.
741
   * For LITTLE-ENDIAN platforms, the result is in in BIG-ENDIAN byte
742
   * order. So for BIG-ENDIAN platforms the bytes must be swapped to
743
   * return the result always in network byte order (aka BIG-ENDIAN).
744
   */
745
  byte0 = crc32c & 0x000000ff;
746
  byte1 = (crc32c >> 8) & 0x000000ff;
747
  byte2 = (crc32c >> 16) & 0x000000ff;
748
  byte3 = (crc32c >> 24) & 0x000000ff;
749
  crc32c = ((byte0 << 24) | (byte1 << 16) | (byte2 << 8) | byte3);
750
#endif
751
0
  return (~crc32c);
752
0
}
753
754
static int
755
sctp_calculate_cksum_cb(void *arg, void *data, u_int len)
756
0
{
757
0
  uint32_t *basep;
758
759
0
  basep = arg;
760
0
  *basep = calculate_crc32c(*basep, data, len);
761
0
  return (0);
762
0
}
763
764
/*
765
 * Compute the SCTP checksum in network byte order for a given mbuf chain m
766
 * which contains an SCTP packet starting at offset.
767
 * Since this function is also called by ipfw, don't assume that
768
 * it is compiled on a kernel with SCTP support.
769
 */
770
uint32_t
771
sctp_calculate_cksum(struct mbuf *m, int32_t offset)
772
0
{
773
0
  uint32_t base;
774
0
  int len;
775
776
0
  M_ASSERTPKTHDR(m);
777
0
  KASSERT(offset < m->m_pkthdr.len,
778
0
      ("%s: invalid offset %u into mbuf %p", __func__, offset, m));
779
780
0
  base = 0xffffffff;
781
0
  len = m->m_pkthdr.len - offset;
782
0
  (void)m_apply(m, offset, len, sctp_calculate_cksum_cb, &base);
783
0
  return (sctp_finalize_crc32c(base));
784
0
}
785
786
#if defined(__FreeBSD__) && !defined(__Userspace__)
787
#if defined(SCTP) || defined(SCTP_SUPPORT)
788
789
VNET_DEFINE(struct sctp_base_info, system_base_info);
790
791
/*
792
 * Compute and insert the SCTP checksum in network byte order for a given
793
 * mbuf chain m which contains an SCTP packet starting at offset.
794
 */
795
void
796
sctp_delayed_cksum(struct mbuf *m, uint32_t offset)
797
{
798
  uint32_t checksum;
799
800
  checksum = sctp_calculate_cksum(m, offset);
801
  SCTP_STAT_DECR(sctps_sendhwcrc);
802
  SCTP_STAT_INCR(sctps_sendswcrc);
803
  offset += offsetof(struct sctphdr, checksum);
804
805
  if (offset + sizeof(uint32_t) > (uint32_t)(m->m_pkthdr.len)) {
806
#ifdef INVARIANTS
807
    panic("sctp_delayed_cksum(): m->m_pkthdr.len: %d, offset: %u.",
808
          m->m_pkthdr.len, offset);
809
#else
810
    SCTP_PRINTF("sctp_delayed_cksum(): m->m_pkthdr.len: %d, offset: %u.\n",
811
                m->m_pkthdr.len, offset);
812
#endif
813
    return;
814
  }
815
  m_copyback(m, (int)offset, (int)sizeof(uint32_t), (caddr_t)&checksum);
816
}
817
#endif
818
#endif
819