tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

sctp_crc32.c (41823B)


      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 {
    547 uint32_t li;
    548 uint32_t term1, term2;
    549 uint32_t running_length;
    550 uint32_t end_bytes;
    551 
    552 running_length = ((length - init_bytes) / 8) * 8;
    553 end_bytes = length - init_bytes - running_length;
    554 
    555 for (li = 0; li < init_bytes; li++)
    556 	crc = sctp_crc_tableil8_o32[(crc ^ *p_buf++) & 0x000000FF] ^
    557 	    (crc >> 8);
    558 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 	crc ^= *(const uint32_t *) p_buf;
    566 	p_buf += 4;
    567 #endif
    568 	term1 = sctp_crc_tableil8_o88[crc & 0x000000FF] ^
    569 	    sctp_crc_tableil8_o80[(crc >> 8) & 0x000000FF];
    570 	term2 = crc >> 16;
    571 	crc = term1 ^
    572 	    sctp_crc_tableil8_o72[term2 & 0x000000FF] ^
    573 	    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 	term1 = sctp_crc_tableil8_o56[(*(const uint32_t *) p_buf) & 0x000000FF] ^
    582 	    sctp_crc_tableil8_o48[((*(const uint32_t *) p_buf) >> 8) & 0x000000FF];
    583 
    584 	term2 = (*(const uint32_t *) p_buf) >> 16;
    585 	crc = crc ^
    586 	    term1 ^
    587 	    sctp_crc_tableil8_o40[term2 & 0x000000FF] ^
    588 	    sctp_crc_tableil8_o32[(term2 >> 8) & 0x000000FF];
    589 	p_buf += 4;
    590 #endif
    591 }
    592 for (li = 0; li < end_bytes; li++)
    593 	crc = sctp_crc_tableil8_o32[(crc ^ *p_buf++) & 0x000000FF] ^
    594 	    (crc >> 8);
    595 return (crc);
    596 }
    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 {
    618 uint32_t to_even_word;
    619 
    620 if (length == 0) {
    621 	return (crc32c);
    622 }
    623 to_even_word = (4 - (((uintptr_t) buffer) & 0x3));
    624 return (sctp_crc32c_sb8_64_bit(crc32c, buffer, length, to_even_word));
    625 }
    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 #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 {
    702 unsigned int i;
    703 
    704 for (i = 0; i < length; i++) {
    705 	SCTP_CRC32C(crc32c, buffer[i]);
    706 }
    707 return (crc32c);
    708 }
    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 {
    719 if (length < 4) {
    720 	return (singletable_crc32c(crc32c, buffer, length));
    721 } else {
    722 	return (multitable_crc32c(crc32c, buffer, length));
    723 }
    724 }
    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 {
    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 return (~crc32c);
    752 }
    753 
    754 static int
    755 sctp_calculate_cksum_cb(void *arg, void *data, u_int len)
    756 {
    757 uint32_t *basep;
    758 
    759 basep = arg;
    760 *basep = calculate_crc32c(*basep, data, len);
    761 return (0);
    762 }
    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 {
    773 uint32_t base;
    774 int len;
    775 
    776 M_ASSERTPKTHDR(m);
    777 KASSERT(offset < m->m_pkthdr.len,
    778     ("%s: invalid offset %u into mbuf %p", __func__, offset, m));
    779 
    780 base = 0xffffffff;
    781 len = m->m_pkthdr.len - offset;
    782 (void)m_apply(m, offset, len, sctp_calculate_cksum_cb, &base);
    783 return (sctp_finalize_crc32c(base));
    784 }
    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