sctp_crc32.c revision 169382
1163953Srrs/*- 2169382Srrs * Copyright (c) 2001-2007, by Cisco Systems, Inc. All rights reserved. 3163953Srrs * 4163953Srrs * Redistribution and use in source and binary forms, with or without 5163953Srrs * modification, are permitted provided that the following conditions are met: 6163953Srrs * 7163953Srrs * a) Redistributions of source code must retain the above copyright notice, 8163953Srrs * this list of conditions and the following disclaimer. 9163953Srrs * 10163953Srrs * b) Redistributions in binary form must reproduce the above copyright 11163953Srrs * notice, this list of conditions and the following disclaimer in 12163953Srrs * the documentation and/or other materials provided with the distribution. 13163953Srrs * 14163953Srrs * c) Neither the name of Cisco Systems, Inc. nor the names of its 15163953Srrs * contributors may be used to endorse or promote products derived 16163953Srrs * from this software without specific prior written permission. 17163953Srrs * 18163953Srrs * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19163953Srrs * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 20163953Srrs * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21163953Srrs * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 22163953Srrs * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23163953Srrs * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24163953Srrs * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25163953Srrs * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26163953Srrs * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27163953Srrs * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 28163953Srrs * THE POSSIBILITY OF SUCH DAMAGE. 29163953Srrs */ 30163953Srrs 31163953Srrs/* $KAME: sctp_crc32.c,v 1.12 2005/03/06 16:04:17 itojun Exp $ */ 32163953Srrs 33163953Srrs 34163953Srrs#include <sys/cdefs.h> 35163953Srrs__FBSDID("$FreeBSD: head/sys/netinet/sctp_crc32.c 169382 2007-05-08 17:01:12Z rrs $"); 36163953Srrs 37166675Srrs#include <netinet/sctp_os.h> 38163953Srrs#include <netinet/sctp_crc32.h> 39163953Srrs 40163953Srrs#ifndef SCTP_USE_ADLER32 41163953Srrs 42163953Srrs 43163953Srrs/** 44163953Srrs * 45163953Srrs * Routine Description: 46163953Srrs * 47163953Srrs * Computes the CRC32c checksum for the specified buffer using the slicing by 8 48163953Srrs * algorithm over 64 bit quantities. 49163953Srrs * 50163953Srrs * Arguments: 51163953Srrs * 52163953Srrs * p_running_crc - pointer to the initial or final remainder value 53163953Srrs * used in CRC computations. It should be set to 54163953Srrs * non-NULL if the mode argument is equal to CONT or END 55163953Srrs * p_buf - the packet buffer where crc computations are being performed 56163953Srrs * length - the length of p_buf in bytes 57163953Srrs * init_bytes - the number of initial bytes that need to be procesed before 58163953Srrs * aligning p_buf to multiples of 4 bytes 59163953Srrs * mode - can be any of the following: BEGIN, CONT, END, BODY, ALIGN 60163953Srrs * 61163953Srrs * Return value: 62163953Srrs * 63163953Srrs * The computed CRC32c value 64163953Srrs */ 65163953Srrs 66163953Srrs 67163953Srrs/* 68163953Srrs * Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved 69163953Srrs * 70163953Srrs * 71163953Srrs * This software program is licensed subject to the BSD License, available at 72163953Srrs * http://www.opensource.org/licenses/bsd-license.html. 73163953Srrs * 74163953Srrs * Abstract: 75163953Srrs * 76163953Srrs * Tables for software CRC generation 77163953Srrs */ 78163953Srrs 79163953Srrs/* 80163953Srrs * The following CRC lookup table was generated automagically using the 81163953Srrs * following model parameters: 82163953Srrs * 83163953Srrs * Generator Polynomial = ................. 0x1EDC6F41 Generator Polynomial 84163953Srrs * Length = .......... 32 bits Reflected Bits = ....................... TRUE 85163953Srrs * Table Generation Offset = .............. 32 bits Number of Slices = 86163953Srrs * ..................... 8 slices Slice Lengths = ........................ 8 87163953Srrs * 8 8 8 8 8 8 8 Directory Name = ....................... .\ File Name = 88163953Srrs * ............................ 8x256_tables.c 89163953Srrs */ 90163953Srrs 91163953Srrsuint32_t sctp_crc_tableil8_o32[256] = 92163953Srrs{ 93163953Srrs 0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4, 0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB, 94163953Srrs 0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B, 0x4D43CFD0, 0xBF284CD3, 0xAC78BF27, 0x5E133C24, 95163953Srrs 0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B, 0xD7C45070, 0x25AFD373, 0x36FF2087, 0xC494A384, 96163953Srrs 0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54, 0x5D1D08BF, 0xAF768BBC, 0xBC267848, 0x4E4DFB4B, 97163953Srrs 0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A, 0xE72719C1, 0x154C9AC2, 0x061C6936, 0xF477EA35, 98163953Srrs 0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5, 0x6DFE410E, 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA, 99163953Srrs 0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45, 0xF779DEAE, 0x05125DAD, 0x1642AE59, 0xE4292D5A, 100163953Srrs 0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A, 0x7DA08661, 0x8FCB0562, 0x9C9BF696, 0x6EF07595, 101163953Srrs 0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48, 0x86E18AA3, 0x748A09A0, 0x67DAFA54, 0x95B17957, 102163953Srrs 0xCBA24573, 0x39C9C670, 0x2A993584, 0xD8F2B687, 0x0C38D26C, 0xFE53516F, 0xED03A29B, 0x1F682198, 103163953Srrs 0x5125DAD3, 0xA34E59D0, 0xB01EAA24, 0x42752927, 0x96BF4DCC, 0x64D4CECF, 0x77843D3B, 0x85EFBE38, 104163953Srrs 0xDBFC821C, 0x2997011F, 0x3AC7F2EB, 0xC8AC71E8, 0x1C661503, 0xEE0D9600, 0xFD5D65F4, 0x0F36E6F7, 105163953Srrs 0x61C69362, 0x93AD1061, 0x80FDE395, 0x72966096, 0xA65C047D, 0x5437877E, 0x4767748A, 0xB50CF789, 106163953Srrs 0xEB1FCBAD, 0x197448AE, 0x0A24BB5A, 0xF84F3859, 0x2C855CB2, 0xDEEEDFB1, 0xCDBE2C45, 0x3FD5AF46, 107163953Srrs 0x7198540D, 0x83F3D70E, 0x90A324FA, 0x62C8A7F9, 0xB602C312, 0x44694011, 0x5739B3E5, 0xA55230E6, 108163953Srrs 0xFB410CC2, 0x092A8FC1, 0x1A7A7C35, 0xE811FF36, 0x3CDB9BDD, 0xCEB018DE, 0xDDE0EB2A, 0x2F8B6829, 109163953Srrs 0x82F63B78, 0x709DB87B, 0x63CD4B8F, 0x91A6C88C, 0x456CAC67, 0xB7072F64, 0xA457DC90, 0x563C5F93, 110163953Srrs 0x082F63B7, 0xFA44E0B4, 0xE9141340, 0x1B7F9043, 0xCFB5F4A8, 0x3DDE77AB, 0x2E8E845F, 0xDCE5075C, 111163953Srrs 0x92A8FC17, 0x60C37F14, 0x73938CE0, 0x81F80FE3, 0x55326B08, 0xA759E80B, 0xB4091BFF, 0x466298FC, 112163953Srrs 0x1871A4D8, 0xEA1A27DB, 0xF94AD42F, 0x0B21572C, 0xDFEB33C7, 0x2D80B0C4, 0x3ED04330, 0xCCBBC033, 113163953Srrs 0xA24BB5A6, 0x502036A5, 0x4370C551, 0xB11B4652, 0x65D122B9, 0x97BAA1BA, 0x84EA524E, 0x7681D14D, 114163953Srrs 0x2892ED69, 0xDAF96E6A, 0xC9A99D9E, 0x3BC21E9D, 0xEF087A76, 0x1D63F975, 0x0E330A81, 0xFC588982, 115163953Srrs 0xB21572C9, 0x407EF1CA, 0x532E023E, 0xA145813D, 0x758FE5D6, 0x87E466D5, 0x94B49521, 0x66DF1622, 116163953Srrs 0x38CC2A06, 0xCAA7A905, 0xD9F75AF1, 0x2B9CD9F2, 0xFF56BD19, 0x0D3D3E1A, 0x1E6DCDEE, 0xEC064EED, 117163953Srrs 0xC38D26C4, 0x31E6A5C7, 0x22B65633, 0xD0DDD530, 0x0417B1DB, 0xF67C32D8, 0xE52CC12C, 0x1747422F, 118163953Srrs 0x49547E0B, 0xBB3FFD08, 0xA86F0EFC, 0x5A048DFF, 0x8ECEE914, 0x7CA56A17, 0x6FF599E3, 0x9D9E1AE0, 119163953Srrs 0xD3D3E1AB, 0x21B862A8, 0x32E8915C, 0xC083125F, 0x144976B4, 0xE622F5B7, 0xF5720643, 0x07198540, 120163953Srrs 0x590AB964, 0xAB613A67, 0xB831C993, 0x4A5A4A90, 0x9E902E7B, 0x6CFBAD78, 0x7FAB5E8C, 0x8DC0DD8F, 121163953Srrs 0xE330A81A, 0x115B2B19, 0x020BD8ED, 0xF0605BEE, 0x24AA3F05, 0xD6C1BC06, 0xC5914FF2, 0x37FACCF1, 122163953Srrs 0x69E9F0D5, 0x9B8273D6, 0x88D28022, 0x7AB90321, 0xAE7367CA, 0x5C18E4C9, 0x4F48173D, 0xBD23943E, 123163953Srrs 0xF36E6F75, 0x0105EC76, 0x12551F82, 0xE03E9C81, 0x34F4F86A, 0xC69F7B69, 0xD5CF889D, 0x27A40B9E, 124163953Srrs 0x79B737BA, 0x8BDCB4B9, 0x988C474D, 0x6AE7C44E, 0xBE2DA0A5, 0x4C4623A6, 0x5F16D052, 0xAD7D5351 125163953Srrs}; 126163953Srrs 127163953Srrs/* 128163953Srrs * end of the CRC lookup table crc_tableil8_o32 129163953Srrs */ 130163953Srrs 131163953Srrs 132163953Srrs 133163953Srrs/* 134163953Srrs * The following CRC lookup table was generated automagically using the 135163953Srrs * following model parameters: 136163953Srrs * 137163953Srrs * Generator Polynomial = ................. 0x1EDC6F41 Generator Polynomial 138163953Srrs * Length = .......... 32 bits Reflected Bits = ....................... TRUE 139163953Srrs * Table Generation Offset = .............. 32 bits Number of Slices = 140163953Srrs * ..................... 8 slices Slice Lengths = ........................ 8 141163953Srrs * 8 8 8 8 8 8 8 Directory Name = ....................... .\ File Name = 142163953Srrs * ............................ 8x256_tables.c 143163953Srrs */ 144163953Srrs 145163953Srrsuint32_t sctp_crc_tableil8_o40[256] = 146163953Srrs{ 147163953Srrs 0x00000000, 0x13A29877, 0x274530EE, 0x34E7A899, 0x4E8A61DC, 0x5D28F9AB, 0x69CF5132, 0x7A6DC945, 148163953Srrs 0x9D14C3B8, 0x8EB65BCF, 0xBA51F356, 0xA9F36B21, 0xD39EA264, 0xC03C3A13, 0xF4DB928A, 0xE7790AFD, 149163953Srrs 0x3FC5F181, 0x2C6769F6, 0x1880C16F, 0x0B225918, 0x714F905D, 0x62ED082A, 0x560AA0B3, 0x45A838C4, 150163953Srrs 0xA2D13239, 0xB173AA4E, 0x859402D7, 0x96369AA0, 0xEC5B53E5, 0xFFF9CB92, 0xCB1E630B, 0xD8BCFB7C, 151163953Srrs 0x7F8BE302, 0x6C297B75, 0x58CED3EC, 0x4B6C4B9B, 0x310182DE, 0x22A31AA9, 0x1644B230, 0x05E62A47, 152163953Srrs 0xE29F20BA, 0xF13DB8CD, 0xC5DA1054, 0xD6788823, 0xAC154166, 0xBFB7D911, 0x8B507188, 0x98F2E9FF, 153163953Srrs 0x404E1283, 0x53EC8AF4, 0x670B226D, 0x74A9BA1A, 0x0EC4735F, 0x1D66EB28, 0x298143B1, 0x3A23DBC6, 154163953Srrs 0xDD5AD13B, 0xCEF8494C, 0xFA1FE1D5, 0xE9BD79A2, 0x93D0B0E7, 0x80722890, 0xB4958009, 0xA737187E, 155163953Srrs 0xFF17C604, 0xECB55E73, 0xD852F6EA, 0xCBF06E9D, 0xB19DA7D8, 0xA23F3FAF, 0x96D89736, 0x857A0F41, 156163953Srrs 0x620305BC, 0x71A19DCB, 0x45463552, 0x56E4AD25, 0x2C896460, 0x3F2BFC17, 0x0BCC548E, 0x186ECCF9, 157163953Srrs 0xC0D23785, 0xD370AFF2, 0xE797076B, 0xF4359F1C, 0x8E585659, 0x9DFACE2E, 0xA91D66B7, 0xBABFFEC0, 158163953Srrs 0x5DC6F43D, 0x4E646C4A, 0x7A83C4D3, 0x69215CA4, 0x134C95E1, 0x00EE0D96, 0x3409A50F, 0x27AB3D78, 159163953Srrs 0x809C2506, 0x933EBD71, 0xA7D915E8, 0xB47B8D9F, 0xCE1644DA, 0xDDB4DCAD, 0xE9537434, 0xFAF1EC43, 160163953Srrs 0x1D88E6BE, 0x0E2A7EC9, 0x3ACDD650, 0x296F4E27, 0x53028762, 0x40A01F15, 0x7447B78C, 0x67E52FFB, 161163953Srrs 0xBF59D487, 0xACFB4CF0, 0x981CE469, 0x8BBE7C1E, 0xF1D3B55B, 0xE2712D2C, 0xD69685B5, 0xC5341DC2, 162163953Srrs 0x224D173F, 0x31EF8F48, 0x050827D1, 0x16AABFA6, 0x6CC776E3, 0x7F65EE94, 0x4B82460D, 0x5820DE7A, 163163953Srrs 0xFBC3FAF9, 0xE861628E, 0xDC86CA17, 0xCF245260, 0xB5499B25, 0xA6EB0352, 0x920CABCB, 0x81AE33BC, 164163953Srrs 0x66D73941, 0x7575A136, 0x419209AF, 0x523091D8, 0x285D589D, 0x3BFFC0EA, 0x0F186873, 0x1CBAF004, 165163953Srrs 0xC4060B78, 0xD7A4930F, 0xE3433B96, 0xF0E1A3E1, 0x8A8C6AA4, 0x992EF2D3, 0xADC95A4A, 0xBE6BC23D, 166163953Srrs 0x5912C8C0, 0x4AB050B7, 0x7E57F82E, 0x6DF56059, 0x1798A91C, 0x043A316B, 0x30DD99F2, 0x237F0185, 167163953Srrs 0x844819FB, 0x97EA818C, 0xA30D2915, 0xB0AFB162, 0xCAC27827, 0xD960E050, 0xED8748C9, 0xFE25D0BE, 168163953Srrs 0x195CDA43, 0x0AFE4234, 0x3E19EAAD, 0x2DBB72DA, 0x57D6BB9F, 0x447423E8, 0x70938B71, 0x63311306, 169163953Srrs 0xBB8DE87A, 0xA82F700D, 0x9CC8D894, 0x8F6A40E3, 0xF50789A6, 0xE6A511D1, 0xD242B948, 0xC1E0213F, 170163953Srrs 0x26992BC2, 0x353BB3B5, 0x01DC1B2C, 0x127E835B, 0x68134A1E, 0x7BB1D269, 0x4F567AF0, 0x5CF4E287, 171163953Srrs 0x04D43CFD, 0x1776A48A, 0x23910C13, 0x30339464, 0x4A5E5D21, 0x59FCC556, 0x6D1B6DCF, 0x7EB9F5B8, 172163953Srrs 0x99C0FF45, 0x8A626732, 0xBE85CFAB, 0xAD2757DC, 0xD74A9E99, 0xC4E806EE, 0xF00FAE77, 0xE3AD3600, 173163953Srrs 0x3B11CD7C, 0x28B3550B, 0x1C54FD92, 0x0FF665E5, 0x759BACA0, 0x663934D7, 0x52DE9C4E, 0x417C0439, 174163953Srrs 0xA6050EC4, 0xB5A796B3, 0x81403E2A, 0x92E2A65D, 0xE88F6F18, 0xFB2DF76F, 0xCFCA5FF6, 0xDC68C781, 175163953Srrs 0x7B5FDFFF, 0x68FD4788, 0x5C1AEF11, 0x4FB87766, 0x35D5BE23, 0x26772654, 0x12908ECD, 0x013216BA, 176163953Srrs 0xE64B1C47, 0xF5E98430, 0xC10E2CA9, 0xD2ACB4DE, 0xA8C17D9B, 0xBB63E5EC, 0x8F844D75, 0x9C26D502, 177163953Srrs 0x449A2E7E, 0x5738B609, 0x63DF1E90, 0x707D86E7, 0x0A104FA2, 0x19B2D7D5, 0x2D557F4C, 0x3EF7E73B, 178163953Srrs 0xD98EEDC6, 0xCA2C75B1, 0xFECBDD28, 0xED69455F, 0x97048C1A, 0x84A6146D, 0xB041BCF4, 0xA3E32483 179163953Srrs}; 180163953Srrs 181163953Srrs/* 182163953Srrs * end of the CRC lookup table crc_tableil8_o40 183163953Srrs */ 184163953Srrs 185163953Srrs 186163953Srrs 187163953Srrs/* 188163953Srrs * The following CRC lookup table was generated automagically using the 189163953Srrs * following model parameters: 190163953Srrs * 191163953Srrs * Generator Polynomial = ................. 0x1EDC6F41 Generator Polynomial 192163953Srrs * Length = .......... 32 bits Reflected Bits = ....................... TRUE 193163953Srrs * Table Generation Offset = .............. 32 bits Number of Slices = 194163953Srrs * ..................... 8 slices Slice Lengths = ........................ 8 195163953Srrs * 8 8 8 8 8 8 8 Directory Name = ....................... .\ File Name = 196163953Srrs * ............................ 8x256_tables.c 197163953Srrs */ 198163953Srrs 199163953Srrsuint32_t sctp_crc_tableil8_o48[256] = 200163953Srrs{ 201163953Srrs 0x00000000, 0xA541927E, 0x4F6F520D, 0xEA2EC073, 0x9EDEA41A, 0x3B9F3664, 0xD1B1F617, 0x74F06469, 202163953Srrs 0x38513EC5, 0x9D10ACBB, 0x773E6CC8, 0xD27FFEB6, 0xA68F9ADF, 0x03CE08A1, 0xE9E0C8D2, 0x4CA15AAC, 203163953Srrs 0x70A27D8A, 0xD5E3EFF4, 0x3FCD2F87, 0x9A8CBDF9, 0xEE7CD990, 0x4B3D4BEE, 0xA1138B9D, 0x045219E3, 204163953Srrs 0x48F3434F, 0xEDB2D131, 0x079C1142, 0xA2DD833C, 0xD62DE755, 0x736C752B, 0x9942B558, 0x3C032726, 205163953Srrs 0xE144FB14, 0x4405696A, 0xAE2BA919, 0x0B6A3B67, 0x7F9A5F0E, 0xDADBCD70, 0x30F50D03, 0x95B49F7D, 206163953Srrs 0xD915C5D1, 0x7C5457AF, 0x967A97DC, 0x333B05A2, 0x47CB61CB, 0xE28AF3B5, 0x08A433C6, 0xADE5A1B8, 207163953Srrs 0x91E6869E, 0x34A714E0, 0xDE89D493, 0x7BC846ED, 0x0F382284, 0xAA79B0FA, 0x40577089, 0xE516E2F7, 208163953Srrs 0xA9B7B85B, 0x0CF62A25, 0xE6D8EA56, 0x43997828, 0x37691C41, 0x92288E3F, 0x78064E4C, 0xDD47DC32, 209163953Srrs 0xC76580D9, 0x622412A7, 0x880AD2D4, 0x2D4B40AA, 0x59BB24C3, 0xFCFAB6BD, 0x16D476CE, 0xB395E4B0, 210163953Srrs 0xFF34BE1C, 0x5A752C62, 0xB05BEC11, 0x151A7E6F, 0x61EA1A06, 0xC4AB8878, 0x2E85480B, 0x8BC4DA75, 211163953Srrs 0xB7C7FD53, 0x12866F2D, 0xF8A8AF5E, 0x5DE93D20, 0x29195949, 0x8C58CB37, 0x66760B44, 0xC337993A, 212163953Srrs 0x8F96C396, 0x2AD751E8, 0xC0F9919B, 0x65B803E5, 0x1148678C, 0xB409F5F2, 0x5E273581, 0xFB66A7FF, 213163953Srrs 0x26217BCD, 0x8360E9B3, 0x694E29C0, 0xCC0FBBBE, 0xB8FFDFD7, 0x1DBE4DA9, 0xF7908DDA, 0x52D11FA4, 214163953Srrs 0x1E704508, 0xBB31D776, 0x511F1705, 0xF45E857B, 0x80AEE112, 0x25EF736C, 0xCFC1B31F, 0x6A802161, 215163953Srrs 0x56830647, 0xF3C29439, 0x19EC544A, 0xBCADC634, 0xC85DA25D, 0x6D1C3023, 0x8732F050, 0x2273622E, 216163953Srrs 0x6ED23882, 0xCB93AAFC, 0x21BD6A8F, 0x84FCF8F1, 0xF00C9C98, 0x554D0EE6, 0xBF63CE95, 0x1A225CEB, 217163953Srrs 0x8B277743, 0x2E66E53D, 0xC448254E, 0x6109B730, 0x15F9D359, 0xB0B84127, 0x5A968154, 0xFFD7132A, 218163953Srrs 0xB3764986, 0x1637DBF8, 0xFC191B8B, 0x595889F5, 0x2DA8ED9C, 0x88E97FE2, 0x62C7BF91, 0xC7862DEF, 219163953Srrs 0xFB850AC9, 0x5EC498B7, 0xB4EA58C4, 0x11ABCABA, 0x655BAED3, 0xC01A3CAD, 0x2A34FCDE, 0x8F756EA0, 220163953Srrs 0xC3D4340C, 0x6695A672, 0x8CBB6601, 0x29FAF47F, 0x5D0A9016, 0xF84B0268, 0x1265C21B, 0xB7245065, 221163953Srrs 0x6A638C57, 0xCF221E29, 0x250CDE5A, 0x804D4C24, 0xF4BD284D, 0x51FCBA33, 0xBBD27A40, 0x1E93E83E, 222163953Srrs 0x5232B292, 0xF77320EC, 0x1D5DE09F, 0xB81C72E1, 0xCCEC1688, 0x69AD84F6, 0x83834485, 0x26C2D6FB, 223163953Srrs 0x1AC1F1DD, 0xBF8063A3, 0x55AEA3D0, 0xF0EF31AE, 0x841F55C7, 0x215EC7B9, 0xCB7007CA, 0x6E3195B4, 224163953Srrs 0x2290CF18, 0x87D15D66, 0x6DFF9D15, 0xC8BE0F6B, 0xBC4E6B02, 0x190FF97C, 0xF321390F, 0x5660AB71, 225163953Srrs 0x4C42F79A, 0xE90365E4, 0x032DA597, 0xA66C37E9, 0xD29C5380, 0x77DDC1FE, 0x9DF3018D, 0x38B293F3, 226163953Srrs 0x7413C95F, 0xD1525B21, 0x3B7C9B52, 0x9E3D092C, 0xEACD6D45, 0x4F8CFF3B, 0xA5A23F48, 0x00E3AD36, 227163953Srrs 0x3CE08A10, 0x99A1186E, 0x738FD81D, 0xD6CE4A63, 0xA23E2E0A, 0x077FBC74, 0xED517C07, 0x4810EE79, 228163953Srrs 0x04B1B4D5, 0xA1F026AB, 0x4BDEE6D8, 0xEE9F74A6, 0x9A6F10CF, 0x3F2E82B1, 0xD50042C2, 0x7041D0BC, 229163953Srrs 0xAD060C8E, 0x08479EF0, 0xE2695E83, 0x4728CCFD, 0x33D8A894, 0x96993AEA, 0x7CB7FA99, 0xD9F668E7, 230163953Srrs 0x9557324B, 0x3016A035, 0xDA386046, 0x7F79F238, 0x0B899651, 0xAEC8042F, 0x44E6C45C, 0xE1A75622, 231163953Srrs 0xDDA47104, 0x78E5E37A, 0x92CB2309, 0x378AB177, 0x437AD51E, 0xE63B4760, 0x0C158713, 0xA954156D, 232163953Srrs 0xE5F54FC1, 0x40B4DDBF, 0xAA9A1DCC, 0x0FDB8FB2, 0x7B2BEBDB, 0xDE6A79A5, 0x3444B9D6, 0x91052BA8 233163953Srrs}; 234163953Srrs 235163953Srrs/* 236163953Srrs * end of the CRC lookup table crc_tableil8_o48 237163953Srrs */ 238163953Srrs 239163953Srrs 240163953Srrs 241163953Srrs/* 242163953Srrs * The following CRC lookup table was generated automagically using the 243163953Srrs * following model parameters: 244163953Srrs * 245163953Srrs * Generator Polynomial = ................. 0x1EDC6F41 Generator Polynomial 246163953Srrs * Length = .......... 32 bits Reflected Bits = ....................... TRUE 247163953Srrs * Table Generation Offset = .............. 32 bits Number of Slices = 248163953Srrs * ..................... 8 slices Slice Lengths = ........................ 8 249163953Srrs * 8 8 8 8 8 8 8 Directory Name = ....................... .\ File Name = 250163953Srrs * ............................ 8x256_tables.c 251163953Srrs */ 252163953Srrs 253163953Srrsuint32_t sctp_crc_tableil8_o56[256] = 254163953Srrs{ 255163953Srrs 0x00000000, 0xDD45AAB8, 0xBF672381, 0x62228939, 0x7B2231F3, 0xA6679B4B, 0xC4451272, 0x1900B8CA, 256163953Srrs 0xF64463E6, 0x2B01C95E, 0x49234067, 0x9466EADF, 0x8D665215, 0x5023F8AD, 0x32017194, 0xEF44DB2C, 257163953Srrs 0xE964B13D, 0x34211B85, 0x560392BC, 0x8B463804, 0x924680CE, 0x4F032A76, 0x2D21A34F, 0xF06409F7, 258163953Srrs 0x1F20D2DB, 0xC2657863, 0xA047F15A, 0x7D025BE2, 0x6402E328, 0xB9474990, 0xDB65C0A9, 0x06206A11, 259163953Srrs 0xD725148B, 0x0A60BE33, 0x6842370A, 0xB5079DB2, 0xAC072578, 0x71428FC0, 0x136006F9, 0xCE25AC41, 260163953Srrs 0x2161776D, 0xFC24DDD5, 0x9E0654EC, 0x4343FE54, 0x5A43469E, 0x8706EC26, 0xE524651F, 0x3861CFA7, 261163953Srrs 0x3E41A5B6, 0xE3040F0E, 0x81268637, 0x5C632C8F, 0x45639445, 0x98263EFD, 0xFA04B7C4, 0x27411D7C, 262163953Srrs 0xC805C650, 0x15406CE8, 0x7762E5D1, 0xAA274F69, 0xB327F7A3, 0x6E625D1B, 0x0C40D422, 0xD1057E9A, 263163953Srrs 0xABA65FE7, 0x76E3F55F, 0x14C17C66, 0xC984D6DE, 0xD0846E14, 0x0DC1C4AC, 0x6FE34D95, 0xB2A6E72D, 264163953Srrs 0x5DE23C01, 0x80A796B9, 0xE2851F80, 0x3FC0B538, 0x26C00DF2, 0xFB85A74A, 0x99A72E73, 0x44E284CB, 265163953Srrs 0x42C2EEDA, 0x9F874462, 0xFDA5CD5B, 0x20E067E3, 0x39E0DF29, 0xE4A57591, 0x8687FCA8, 0x5BC25610, 266163953Srrs 0xB4868D3C, 0x69C32784, 0x0BE1AEBD, 0xD6A40405, 0xCFA4BCCF, 0x12E11677, 0x70C39F4E, 0xAD8635F6, 267163953Srrs 0x7C834B6C, 0xA1C6E1D4, 0xC3E468ED, 0x1EA1C255, 0x07A17A9F, 0xDAE4D027, 0xB8C6591E, 0x6583F3A6, 268163953Srrs 0x8AC7288A, 0x57828232, 0x35A00B0B, 0xE8E5A1B3, 0xF1E51979, 0x2CA0B3C1, 0x4E823AF8, 0x93C79040, 269163953Srrs 0x95E7FA51, 0x48A250E9, 0x2A80D9D0, 0xF7C57368, 0xEEC5CBA2, 0x3380611A, 0x51A2E823, 0x8CE7429B, 270163953Srrs 0x63A399B7, 0xBEE6330F, 0xDCC4BA36, 0x0181108E, 0x1881A844, 0xC5C402FC, 0xA7E68BC5, 0x7AA3217D, 271163953Srrs 0x52A0C93F, 0x8FE56387, 0xEDC7EABE, 0x30824006, 0x2982F8CC, 0xF4C75274, 0x96E5DB4D, 0x4BA071F5, 272163953Srrs 0xA4E4AAD9, 0x79A10061, 0x1B838958, 0xC6C623E0, 0xDFC69B2A, 0x02833192, 0x60A1B8AB, 0xBDE41213, 273163953Srrs 0xBBC47802, 0x6681D2BA, 0x04A35B83, 0xD9E6F13B, 0xC0E649F1, 0x1DA3E349, 0x7F816A70, 0xA2C4C0C8, 274163953Srrs 0x4D801BE4, 0x90C5B15C, 0xF2E73865, 0x2FA292DD, 0x36A22A17, 0xEBE780AF, 0x89C50996, 0x5480A32E, 275163953Srrs 0x8585DDB4, 0x58C0770C, 0x3AE2FE35, 0xE7A7548D, 0xFEA7EC47, 0x23E246FF, 0x41C0CFC6, 0x9C85657E, 276163953Srrs 0x73C1BE52, 0xAE8414EA, 0xCCA69DD3, 0x11E3376B, 0x08E38FA1, 0xD5A62519, 0xB784AC20, 0x6AC10698, 277163953Srrs 0x6CE16C89, 0xB1A4C631, 0xD3864F08, 0x0EC3E5B0, 0x17C35D7A, 0xCA86F7C2, 0xA8A47EFB, 0x75E1D443, 278163953Srrs 0x9AA50F6F, 0x47E0A5D7, 0x25C22CEE, 0xF8878656, 0xE1873E9C, 0x3CC29424, 0x5EE01D1D, 0x83A5B7A5, 279163953Srrs 0xF90696D8, 0x24433C60, 0x4661B559, 0x9B241FE1, 0x8224A72B, 0x5F610D93, 0x3D4384AA, 0xE0062E12, 280163953Srrs 0x0F42F53E, 0xD2075F86, 0xB025D6BF, 0x6D607C07, 0x7460C4CD, 0xA9256E75, 0xCB07E74C, 0x16424DF4, 281163953Srrs 0x106227E5, 0xCD278D5D, 0xAF050464, 0x7240AEDC, 0x6B401616, 0xB605BCAE, 0xD4273597, 0x09629F2F, 282163953Srrs 0xE6264403, 0x3B63EEBB, 0x59416782, 0x8404CD3A, 0x9D0475F0, 0x4041DF48, 0x22635671, 0xFF26FCC9, 283163953Srrs 0x2E238253, 0xF36628EB, 0x9144A1D2, 0x4C010B6A, 0x5501B3A0, 0x88441918, 0xEA669021, 0x37233A99, 284163953Srrs 0xD867E1B5, 0x05224B0D, 0x6700C234, 0xBA45688C, 0xA345D046, 0x7E007AFE, 0x1C22F3C7, 0xC167597F, 285163953Srrs 0xC747336E, 0x1A0299D6, 0x782010EF, 0xA565BA57, 0xBC65029D, 0x6120A825, 0x0302211C, 0xDE478BA4, 286163953Srrs 0x31035088, 0xEC46FA30, 0x8E647309, 0x5321D9B1, 0x4A21617B, 0x9764CBC3, 0xF54642FA, 0x2803E842 287163953Srrs}; 288163953Srrs 289163953Srrs/* 290163953Srrs * end of the CRC lookup table crc_tableil8_o56 291163953Srrs */ 292163953Srrs 293163953Srrs 294163953Srrs 295163953Srrs/* 296163953Srrs * The following CRC lookup table was generated automagically using the 297163953Srrs * following model parameters: 298163953Srrs * 299163953Srrs * Generator Polynomial = ................. 0x1EDC6F41 Generator Polynomial 300163953Srrs * Length = .......... 32 bits Reflected Bits = ....................... TRUE 301163953Srrs * Table Generation Offset = .............. 32 bits Number of Slices = 302163953Srrs * ..................... 8 slices Slice Lengths = ........................ 8 303163953Srrs * 8 8 8 8 8 8 8 Directory Name = ....................... .\ File Name = 304163953Srrs * ............................ 8x256_tables.c 305163953Srrs */ 306163953Srrs 307163953Srrsuint32_t sctp_crc_tableil8_o64[256] = 308163953Srrs{ 309163953Srrs 0x00000000, 0x38116FAC, 0x7022DF58, 0x4833B0F4, 0xE045BEB0, 0xD854D11C, 0x906761E8, 0xA8760E44, 310163953Srrs 0xC5670B91, 0xFD76643D, 0xB545D4C9, 0x8D54BB65, 0x2522B521, 0x1D33DA8D, 0x55006A79, 0x6D1105D5, 311163953Srrs 0x8F2261D3, 0xB7330E7F, 0xFF00BE8B, 0xC711D127, 0x6F67DF63, 0x5776B0CF, 0x1F45003B, 0x27546F97, 312163953Srrs 0x4A456A42, 0x725405EE, 0x3A67B51A, 0x0276DAB6, 0xAA00D4F2, 0x9211BB5E, 0xDA220BAA, 0xE2336406, 313163953Srrs 0x1BA8B557, 0x23B9DAFB, 0x6B8A6A0F, 0x539B05A3, 0xFBED0BE7, 0xC3FC644B, 0x8BCFD4BF, 0xB3DEBB13, 314163953Srrs 0xDECFBEC6, 0xE6DED16A, 0xAEED619E, 0x96FC0E32, 0x3E8A0076, 0x069B6FDA, 0x4EA8DF2E, 0x76B9B082, 315163953Srrs 0x948AD484, 0xAC9BBB28, 0xE4A80BDC, 0xDCB96470, 0x74CF6A34, 0x4CDE0598, 0x04EDB56C, 0x3CFCDAC0, 316163953Srrs 0x51EDDF15, 0x69FCB0B9, 0x21CF004D, 0x19DE6FE1, 0xB1A861A5, 0x89B90E09, 0xC18ABEFD, 0xF99BD151, 317163953Srrs 0x37516AAE, 0x0F400502, 0x4773B5F6, 0x7F62DA5A, 0xD714D41E, 0xEF05BBB2, 0xA7360B46, 0x9F2764EA, 318163953Srrs 0xF236613F, 0xCA270E93, 0x8214BE67, 0xBA05D1CB, 0x1273DF8F, 0x2A62B023, 0x625100D7, 0x5A406F7B, 319163953Srrs 0xB8730B7D, 0x806264D1, 0xC851D425, 0xF040BB89, 0x5836B5CD, 0x6027DA61, 0x28146A95, 0x10050539, 320163953Srrs 0x7D1400EC, 0x45056F40, 0x0D36DFB4, 0x3527B018, 0x9D51BE5C, 0xA540D1F0, 0xED736104, 0xD5620EA8, 321163953Srrs 0x2CF9DFF9, 0x14E8B055, 0x5CDB00A1, 0x64CA6F0D, 0xCCBC6149, 0xF4AD0EE5, 0xBC9EBE11, 0x848FD1BD, 322163953Srrs 0xE99ED468, 0xD18FBBC4, 0x99BC0B30, 0xA1AD649C, 0x09DB6AD8, 0x31CA0574, 0x79F9B580, 0x41E8DA2C, 323163953Srrs 0xA3DBBE2A, 0x9BCAD186, 0xD3F96172, 0xEBE80EDE, 0x439E009A, 0x7B8F6F36, 0x33BCDFC2, 0x0BADB06E, 324163953Srrs 0x66BCB5BB, 0x5EADDA17, 0x169E6AE3, 0x2E8F054F, 0x86F90B0B, 0xBEE864A7, 0xF6DBD453, 0xCECABBFF, 325163953Srrs 0x6EA2D55C, 0x56B3BAF0, 0x1E800A04, 0x269165A8, 0x8EE76BEC, 0xB6F60440, 0xFEC5B4B4, 0xC6D4DB18, 326163953Srrs 0xABC5DECD, 0x93D4B161, 0xDBE70195, 0xE3F66E39, 0x4B80607D, 0x73910FD1, 0x3BA2BF25, 0x03B3D089, 327163953Srrs 0xE180B48F, 0xD991DB23, 0x91A26BD7, 0xA9B3047B, 0x01C50A3F, 0x39D46593, 0x71E7D567, 0x49F6BACB, 328163953Srrs 0x24E7BF1E, 0x1CF6D0B2, 0x54C56046, 0x6CD40FEA, 0xC4A201AE, 0xFCB36E02, 0xB480DEF6, 0x8C91B15A, 329163953Srrs 0x750A600B, 0x4D1B0FA7, 0x0528BF53, 0x3D39D0FF, 0x954FDEBB, 0xAD5EB117, 0xE56D01E3, 0xDD7C6E4F, 330163953Srrs 0xB06D6B9A, 0x887C0436, 0xC04FB4C2, 0xF85EDB6E, 0x5028D52A, 0x6839BA86, 0x200A0A72, 0x181B65DE, 331163953Srrs 0xFA2801D8, 0xC2396E74, 0x8A0ADE80, 0xB21BB12C, 0x1A6DBF68, 0x227CD0C4, 0x6A4F6030, 0x525E0F9C, 332163953Srrs 0x3F4F0A49, 0x075E65E5, 0x4F6DD511, 0x777CBABD, 0xDF0AB4F9, 0xE71BDB55, 0xAF286BA1, 0x9739040D, 333163953Srrs 0x59F3BFF2, 0x61E2D05E, 0x29D160AA, 0x11C00F06, 0xB9B60142, 0x81A76EEE, 0xC994DE1A, 0xF185B1B6, 334163953Srrs 0x9C94B463, 0xA485DBCF, 0xECB66B3B, 0xD4A70497, 0x7CD10AD3, 0x44C0657F, 0x0CF3D58B, 0x34E2BA27, 335163953Srrs 0xD6D1DE21, 0xEEC0B18D, 0xA6F30179, 0x9EE26ED5, 0x36946091, 0x0E850F3D, 0x46B6BFC9, 0x7EA7D065, 336163953Srrs 0x13B6D5B0, 0x2BA7BA1C, 0x63940AE8, 0x5B856544, 0xF3F36B00, 0xCBE204AC, 0x83D1B458, 0xBBC0DBF4, 337163953Srrs 0x425B0AA5, 0x7A4A6509, 0x3279D5FD, 0x0A68BA51, 0xA21EB415, 0x9A0FDBB9, 0xD23C6B4D, 0xEA2D04E1, 338163953Srrs 0x873C0134, 0xBF2D6E98, 0xF71EDE6C, 0xCF0FB1C0, 0x6779BF84, 0x5F68D028, 0x175B60DC, 0x2F4A0F70, 339163953Srrs 0xCD796B76, 0xF56804DA, 0xBD5BB42E, 0x854ADB82, 0x2D3CD5C6, 0x152DBA6A, 0x5D1E0A9E, 0x650F6532, 340163953Srrs 0x081E60E7, 0x300F0F4B, 0x783CBFBF, 0x402DD013, 0xE85BDE57, 0xD04AB1FB, 0x9879010F, 0xA0686EA3 341163953Srrs}; 342163953Srrs 343163953Srrs/* 344163953Srrs * end of the CRC lookup table crc_tableil8_o64 345163953Srrs */ 346163953Srrs 347163953Srrs 348163953Srrs 349163953Srrs/* 350163953Srrs * The following CRC lookup table was generated automagically using the 351163953Srrs * following model parameters: 352163953Srrs * 353163953Srrs * Generator Polynomial = ................. 0x1EDC6F41 Generator Polynomial 354163953Srrs * Length = .......... 32 bits Reflected Bits = ....................... TRUE 355163953Srrs * Table Generation Offset = .............. 32 bits Number of Slices = 356163953Srrs * ..................... 8 slices Slice Lengths = ........................ 8 357163953Srrs * 8 8 8 8 8 8 8 Directory Name = ....................... .\ File Name = 358163953Srrs * ............................ 8x256_tables.c 359163953Srrs */ 360163953Srrs 361163953Srrsuint32_t sctp_crc_tableil8_o72[256] = 362163953Srrs{ 363163953Srrs 0x00000000, 0xEF306B19, 0xDB8CA0C3, 0x34BCCBDA, 0xB2F53777, 0x5DC55C6E, 0x697997B4, 0x8649FCAD, 364163953Srrs 0x6006181F, 0x8F367306, 0xBB8AB8DC, 0x54BAD3C5, 0xD2F32F68, 0x3DC34471, 0x097F8FAB, 0xE64FE4B2, 365163953Srrs 0xC00C303E, 0x2F3C5B27, 0x1B8090FD, 0xF4B0FBE4, 0x72F90749, 0x9DC96C50, 0xA975A78A, 0x4645CC93, 366163953Srrs 0xA00A2821, 0x4F3A4338, 0x7B8688E2, 0x94B6E3FB, 0x12FF1F56, 0xFDCF744F, 0xC973BF95, 0x2643D48C, 367163953Srrs 0x85F4168D, 0x6AC47D94, 0x5E78B64E, 0xB148DD57, 0x370121FA, 0xD8314AE3, 0xEC8D8139, 0x03BDEA20, 368163953Srrs 0xE5F20E92, 0x0AC2658B, 0x3E7EAE51, 0xD14EC548, 0x570739E5, 0xB83752FC, 0x8C8B9926, 0x63BBF23F, 369163953Srrs 0x45F826B3, 0xAAC84DAA, 0x9E748670, 0x7144ED69, 0xF70D11C4, 0x183D7ADD, 0x2C81B107, 0xC3B1DA1E, 370163953Srrs 0x25FE3EAC, 0xCACE55B5, 0xFE729E6F, 0x1142F576, 0x970B09DB, 0x783B62C2, 0x4C87A918, 0xA3B7C201, 371163953Srrs 0x0E045BEB, 0xE13430F2, 0xD588FB28, 0x3AB89031, 0xBCF16C9C, 0x53C10785, 0x677DCC5F, 0x884DA746, 372163953Srrs 0x6E0243F4, 0x813228ED, 0xB58EE337, 0x5ABE882E, 0xDCF77483, 0x33C71F9A, 0x077BD440, 0xE84BBF59, 373163953Srrs 0xCE086BD5, 0x213800CC, 0x1584CB16, 0xFAB4A00F, 0x7CFD5CA2, 0x93CD37BB, 0xA771FC61, 0x48419778, 374163953Srrs 0xAE0E73CA, 0x413E18D3, 0x7582D309, 0x9AB2B810, 0x1CFB44BD, 0xF3CB2FA4, 0xC777E47E, 0x28478F67, 375163953Srrs 0x8BF04D66, 0x64C0267F, 0x507CEDA5, 0xBF4C86BC, 0x39057A11, 0xD6351108, 0xE289DAD2, 0x0DB9B1CB, 376163953Srrs 0xEBF65579, 0x04C63E60, 0x307AF5BA, 0xDF4A9EA3, 0x5903620E, 0xB6330917, 0x828FC2CD, 0x6DBFA9D4, 377163953Srrs 0x4BFC7D58, 0xA4CC1641, 0x9070DD9B, 0x7F40B682, 0xF9094A2F, 0x16392136, 0x2285EAEC, 0xCDB581F5, 378163953Srrs 0x2BFA6547, 0xC4CA0E5E, 0xF076C584, 0x1F46AE9D, 0x990F5230, 0x763F3929, 0x4283F2F3, 0xADB399EA, 379163953Srrs 0x1C08B7D6, 0xF338DCCF, 0xC7841715, 0x28B47C0C, 0xAEFD80A1, 0x41CDEBB8, 0x75712062, 0x9A414B7B, 380163953Srrs 0x7C0EAFC9, 0x933EC4D0, 0xA7820F0A, 0x48B26413, 0xCEFB98BE, 0x21CBF3A7, 0x1577387D, 0xFA475364, 381163953Srrs 0xDC0487E8, 0x3334ECF1, 0x0788272B, 0xE8B84C32, 0x6EF1B09F, 0x81C1DB86, 0xB57D105C, 0x5A4D7B45, 382163953Srrs 0xBC029FF7, 0x5332F4EE, 0x678E3F34, 0x88BE542D, 0x0EF7A880, 0xE1C7C399, 0xD57B0843, 0x3A4B635A, 383163953Srrs 0x99FCA15B, 0x76CCCA42, 0x42700198, 0xAD406A81, 0x2B09962C, 0xC439FD35, 0xF08536EF, 0x1FB55DF6, 384163953Srrs 0xF9FAB944, 0x16CAD25D, 0x22761987, 0xCD46729E, 0x4B0F8E33, 0xA43FE52A, 0x90832EF0, 0x7FB345E9, 385163953Srrs 0x59F09165, 0xB6C0FA7C, 0x827C31A6, 0x6D4C5ABF, 0xEB05A612, 0x0435CD0B, 0x308906D1, 0xDFB96DC8, 386163953Srrs 0x39F6897A, 0xD6C6E263, 0xE27A29B9, 0x0D4A42A0, 0x8B03BE0D, 0x6433D514, 0x508F1ECE, 0xBFBF75D7, 387163953Srrs 0x120CEC3D, 0xFD3C8724, 0xC9804CFE, 0x26B027E7, 0xA0F9DB4A, 0x4FC9B053, 0x7B757B89, 0x94451090, 388163953Srrs 0x720AF422, 0x9D3A9F3B, 0xA98654E1, 0x46B63FF8, 0xC0FFC355, 0x2FCFA84C, 0x1B736396, 0xF443088F, 389163953Srrs 0xD200DC03, 0x3D30B71A, 0x098C7CC0, 0xE6BC17D9, 0x60F5EB74, 0x8FC5806D, 0xBB794BB7, 0x544920AE, 390163953Srrs 0xB206C41C, 0x5D36AF05, 0x698A64DF, 0x86BA0FC6, 0x00F3F36B, 0xEFC39872, 0xDB7F53A8, 0x344F38B1, 391163953Srrs 0x97F8FAB0, 0x78C891A9, 0x4C745A73, 0xA344316A, 0x250DCDC7, 0xCA3DA6DE, 0xFE816D04, 0x11B1061D, 392163953Srrs 0xF7FEE2AF, 0x18CE89B6, 0x2C72426C, 0xC3422975, 0x450BD5D8, 0xAA3BBEC1, 0x9E87751B, 0x71B71E02, 393163953Srrs 0x57F4CA8E, 0xB8C4A197, 0x8C786A4D, 0x63480154, 0xE501FDF9, 0x0A3196E0, 0x3E8D5D3A, 0xD1BD3623, 394163953Srrs 0x37F2D291, 0xD8C2B988, 0xEC7E7252, 0x034E194B, 0x8507E5E6, 0x6A378EFF, 0x5E8B4525, 0xB1BB2E3C 395163953Srrs}; 396163953Srrs 397163953Srrs/* 398163953Srrs * end of the CRC lookup table crc_tableil8_o72 399163953Srrs */ 400163953Srrs 401163953Srrs 402163953Srrs 403163953Srrs/* 404163953Srrs * The following CRC lookup table was generated automagically using the 405163953Srrs * following model parameters: 406163953Srrs * 407163953Srrs * Generator Polynomial = ................. 0x1EDC6F41 Generator Polynomial 408163953Srrs * Length = .......... 32 bits Reflected Bits = ....................... TRUE 409163953Srrs * Table Generation Offset = .............. 32 bits Number of Slices = 410163953Srrs * ..................... 8 slices Slice Lengths = ........................ 8 411163953Srrs * 8 8 8 8 8 8 8 Directory Name = ....................... .\ File Name = 412163953Srrs * ............................ 8x256_tables.c 413163953Srrs */ 414163953Srrs 415163953Srrsuint32_t sctp_crc_tableil8_o80[256] = 416163953Srrs{ 417163953Srrs 0x00000000, 0x68032CC8, 0xD0065990, 0xB8057558, 0xA5E0C5D1, 0xCDE3E919, 0x75E69C41, 0x1DE5B089, 418163953Srrs 0x4E2DFD53, 0x262ED19B, 0x9E2BA4C3, 0xF628880B, 0xEBCD3882, 0x83CE144A, 0x3BCB6112, 0x53C84DDA, 419163953Srrs 0x9C5BFAA6, 0xF458D66E, 0x4C5DA336, 0x245E8FFE, 0x39BB3F77, 0x51B813BF, 0xE9BD66E7, 0x81BE4A2F, 420163953Srrs 0xD27607F5, 0xBA752B3D, 0x02705E65, 0x6A7372AD, 0x7796C224, 0x1F95EEEC, 0xA7909BB4, 0xCF93B77C, 421163953Srrs 0x3D5B83BD, 0x5558AF75, 0xED5DDA2D, 0x855EF6E5, 0x98BB466C, 0xF0B86AA4, 0x48BD1FFC, 0x20BE3334, 422163953Srrs 0x73767EEE, 0x1B755226, 0xA370277E, 0xCB730BB6, 0xD696BB3F, 0xBE9597F7, 0x0690E2AF, 0x6E93CE67, 423163953Srrs 0xA100791B, 0xC90355D3, 0x7106208B, 0x19050C43, 0x04E0BCCA, 0x6CE39002, 0xD4E6E55A, 0xBCE5C992, 424163953Srrs 0xEF2D8448, 0x872EA880, 0x3F2BDDD8, 0x5728F110, 0x4ACD4199, 0x22CE6D51, 0x9ACB1809, 0xF2C834C1, 425163953Srrs 0x7AB7077A, 0x12B42BB2, 0xAAB15EEA, 0xC2B27222, 0xDF57C2AB, 0xB754EE63, 0x0F519B3B, 0x6752B7F3, 426163953Srrs 0x349AFA29, 0x5C99D6E1, 0xE49CA3B9, 0x8C9F8F71, 0x917A3FF8, 0xF9791330, 0x417C6668, 0x297F4AA0, 427163953Srrs 0xE6ECFDDC, 0x8EEFD114, 0x36EAA44C, 0x5EE98884, 0x430C380D, 0x2B0F14C5, 0x930A619D, 0xFB094D55, 428163953Srrs 0xA8C1008F, 0xC0C22C47, 0x78C7591F, 0x10C475D7, 0x0D21C55E, 0x6522E996, 0xDD279CCE, 0xB524B006, 429163953Srrs 0x47EC84C7, 0x2FEFA80F, 0x97EADD57, 0xFFE9F19F, 0xE20C4116, 0x8A0F6DDE, 0x320A1886, 0x5A09344E, 430163953Srrs 0x09C17994, 0x61C2555C, 0xD9C72004, 0xB1C40CCC, 0xAC21BC45, 0xC422908D, 0x7C27E5D5, 0x1424C91D, 431163953Srrs 0xDBB77E61, 0xB3B452A9, 0x0BB127F1, 0x63B20B39, 0x7E57BBB0, 0x16549778, 0xAE51E220, 0xC652CEE8, 432163953Srrs 0x959A8332, 0xFD99AFFA, 0x459CDAA2, 0x2D9FF66A, 0x307A46E3, 0x58796A2B, 0xE07C1F73, 0x887F33BB, 433163953Srrs 0xF56E0EF4, 0x9D6D223C, 0x25685764, 0x4D6B7BAC, 0x508ECB25, 0x388DE7ED, 0x808892B5, 0xE88BBE7D, 434163953Srrs 0xBB43F3A7, 0xD340DF6F, 0x6B45AA37, 0x034686FF, 0x1EA33676, 0x76A01ABE, 0xCEA56FE6, 0xA6A6432E, 435163953Srrs 0x6935F452, 0x0136D89A, 0xB933ADC2, 0xD130810A, 0xCCD53183, 0xA4D61D4B, 0x1CD36813, 0x74D044DB, 436163953Srrs 0x27180901, 0x4F1B25C9, 0xF71E5091, 0x9F1D7C59, 0x82F8CCD0, 0xEAFBE018, 0x52FE9540, 0x3AFDB988, 437163953Srrs 0xC8358D49, 0xA036A181, 0x1833D4D9, 0x7030F811, 0x6DD54898, 0x05D66450, 0xBDD31108, 0xD5D03DC0, 438163953Srrs 0x8618701A, 0xEE1B5CD2, 0x561E298A, 0x3E1D0542, 0x23F8B5CB, 0x4BFB9903, 0xF3FEEC5B, 0x9BFDC093, 439163953Srrs 0x546E77EF, 0x3C6D5B27, 0x84682E7F, 0xEC6B02B7, 0xF18EB23E, 0x998D9EF6, 0x2188EBAE, 0x498BC766, 440163953Srrs 0x1A438ABC, 0x7240A674, 0xCA45D32C, 0xA246FFE4, 0xBFA34F6D, 0xD7A063A5, 0x6FA516FD, 0x07A63A35, 441163953Srrs 0x8FD9098E, 0xE7DA2546, 0x5FDF501E, 0x37DC7CD6, 0x2A39CC5F, 0x423AE097, 0xFA3F95CF, 0x923CB907, 442163953Srrs 0xC1F4F4DD, 0xA9F7D815, 0x11F2AD4D, 0x79F18185, 0x6414310C, 0x0C171DC4, 0xB412689C, 0xDC114454, 443163953Srrs 0x1382F328, 0x7B81DFE0, 0xC384AAB8, 0xAB878670, 0xB66236F9, 0xDE611A31, 0x66646F69, 0x0E6743A1, 444163953Srrs 0x5DAF0E7B, 0x35AC22B3, 0x8DA957EB, 0xE5AA7B23, 0xF84FCBAA, 0x904CE762, 0x2849923A, 0x404ABEF2, 445163953Srrs 0xB2828A33, 0xDA81A6FB, 0x6284D3A3, 0x0A87FF6B, 0x17624FE2, 0x7F61632A, 0xC7641672, 0xAF673ABA, 446163953Srrs 0xFCAF7760, 0x94AC5BA8, 0x2CA92EF0, 0x44AA0238, 0x594FB2B1, 0x314C9E79, 0x8949EB21, 0xE14AC7E9, 447163953Srrs 0x2ED97095, 0x46DA5C5D, 0xFEDF2905, 0x96DC05CD, 0x8B39B544, 0xE33A998C, 0x5B3FECD4, 0x333CC01C, 448163953Srrs 0x60F48DC6, 0x08F7A10E, 0xB0F2D456, 0xD8F1F89E, 0xC5144817, 0xAD1764DF, 0x15121187, 0x7D113D4F 449163953Srrs}; 450163953Srrs 451163953Srrs/* 452163953Srrs * end of the CRC lookup table crc_tableil8_o80 453163953Srrs */ 454163953Srrs 455163953Srrs 456163953Srrs 457163953Srrs/* 458163953Srrs * The following CRC lookup table was generated automagically using the 459163953Srrs * following model parameters: 460163953Srrs * 461163953Srrs * Generator Polynomial = ................. 0x1EDC6F41 Generator Polynomial 462163953Srrs * Length = .......... 32 bits Reflected Bits = ....................... TRUE 463163953Srrs * Table Generation Offset = .............. 32 bits Number of Slices = 464163953Srrs * ..................... 8 slices Slice Lengths = ........................ 8 465163953Srrs * 8 8 8 8 8 8 8 Directory Name = ....................... .\ File Name = 466163953Srrs * ............................ 8x256_tables.c 467163953Srrs */ 468163953Srrs 469163953Srrsuint32_t sctp_crc_tableil8_o88[256] = 470163953Srrs{ 471163953Srrs 0x00000000, 0x493C7D27, 0x9278FA4E, 0xDB448769, 0x211D826D, 0x6821FF4A, 0xB3657823, 0xFA590504, 472163953Srrs 0x423B04DA, 0x0B0779FD, 0xD043FE94, 0x997F83B3, 0x632686B7, 0x2A1AFB90, 0xF15E7CF9, 0xB86201DE, 473163953Srrs 0x847609B4, 0xCD4A7493, 0x160EF3FA, 0x5F328EDD, 0xA56B8BD9, 0xEC57F6FE, 0x37137197, 0x7E2F0CB0, 474163953Srrs 0xC64D0D6E, 0x8F717049, 0x5435F720, 0x1D098A07, 0xE7508F03, 0xAE6CF224, 0x7528754D, 0x3C14086A, 475163953Srrs 0x0D006599, 0x443C18BE, 0x9F789FD7, 0xD644E2F0, 0x2C1DE7F4, 0x65219AD3, 0xBE651DBA, 0xF759609D, 476163953Srrs 0x4F3B6143, 0x06071C64, 0xDD439B0D, 0x947FE62A, 0x6E26E32E, 0x271A9E09, 0xFC5E1960, 0xB5626447, 477163953Srrs 0x89766C2D, 0xC04A110A, 0x1B0E9663, 0x5232EB44, 0xA86BEE40, 0xE1579367, 0x3A13140E, 0x732F6929, 478163953Srrs 0xCB4D68F7, 0x827115D0, 0x593592B9, 0x1009EF9E, 0xEA50EA9A, 0xA36C97BD, 0x782810D4, 0x31146DF3, 479163953Srrs 0x1A00CB32, 0x533CB615, 0x8878317C, 0xC1444C5B, 0x3B1D495F, 0x72213478, 0xA965B311, 0xE059CE36, 480163953Srrs 0x583BCFE8, 0x1107B2CF, 0xCA4335A6, 0x837F4881, 0x79264D85, 0x301A30A2, 0xEB5EB7CB, 0xA262CAEC, 481163953Srrs 0x9E76C286, 0xD74ABFA1, 0x0C0E38C8, 0x453245EF, 0xBF6B40EB, 0xF6573DCC, 0x2D13BAA5, 0x642FC782, 482163953Srrs 0xDC4DC65C, 0x9571BB7B, 0x4E353C12, 0x07094135, 0xFD504431, 0xB46C3916, 0x6F28BE7F, 0x2614C358, 483163953Srrs 0x1700AEAB, 0x5E3CD38C, 0x857854E5, 0xCC4429C2, 0x361D2CC6, 0x7F2151E1, 0xA465D688, 0xED59ABAF, 484163953Srrs 0x553BAA71, 0x1C07D756, 0xC743503F, 0x8E7F2D18, 0x7426281C, 0x3D1A553B, 0xE65ED252, 0xAF62AF75, 485163953Srrs 0x9376A71F, 0xDA4ADA38, 0x010E5D51, 0x48322076, 0xB26B2572, 0xFB575855, 0x2013DF3C, 0x692FA21B, 486163953Srrs 0xD14DA3C5, 0x9871DEE2, 0x4335598B, 0x0A0924AC, 0xF05021A8, 0xB96C5C8F, 0x6228DBE6, 0x2B14A6C1, 487163953Srrs 0x34019664, 0x7D3DEB43, 0xA6796C2A, 0xEF45110D, 0x151C1409, 0x5C20692E, 0x8764EE47, 0xCE589360, 488163953Srrs 0x763A92BE, 0x3F06EF99, 0xE44268F0, 0xAD7E15D7, 0x572710D3, 0x1E1B6DF4, 0xC55FEA9D, 0x8C6397BA, 489163953Srrs 0xB0779FD0, 0xF94BE2F7, 0x220F659E, 0x6B3318B9, 0x916A1DBD, 0xD856609A, 0x0312E7F3, 0x4A2E9AD4, 490163953Srrs 0xF24C9B0A, 0xBB70E62D, 0x60346144, 0x29081C63, 0xD3511967, 0x9A6D6440, 0x4129E329, 0x08159E0E, 491163953Srrs 0x3901F3FD, 0x703D8EDA, 0xAB7909B3, 0xE2457494, 0x181C7190, 0x51200CB7, 0x8A648BDE, 0xC358F6F9, 492163953Srrs 0x7B3AF727, 0x32068A00, 0xE9420D69, 0xA07E704E, 0x5A27754A, 0x131B086D, 0xC85F8F04, 0x8163F223, 493163953Srrs 0xBD77FA49, 0xF44B876E, 0x2F0F0007, 0x66337D20, 0x9C6A7824, 0xD5560503, 0x0E12826A, 0x472EFF4D, 494163953Srrs 0xFF4CFE93, 0xB67083B4, 0x6D3404DD, 0x240879FA, 0xDE517CFE, 0x976D01D9, 0x4C2986B0, 0x0515FB97, 495163953Srrs 0x2E015D56, 0x673D2071, 0xBC79A718, 0xF545DA3F, 0x0F1CDF3B, 0x4620A21C, 0x9D642575, 0xD4585852, 496163953Srrs 0x6C3A598C, 0x250624AB, 0xFE42A3C2, 0xB77EDEE5, 0x4D27DBE1, 0x041BA6C6, 0xDF5F21AF, 0x96635C88, 497163953Srrs 0xAA7754E2, 0xE34B29C5, 0x380FAEAC, 0x7133D38B, 0x8B6AD68F, 0xC256ABA8, 0x19122CC1, 0x502E51E6, 498163953Srrs 0xE84C5038, 0xA1702D1F, 0x7A34AA76, 0x3308D751, 0xC951D255, 0x806DAF72, 0x5B29281B, 0x1215553C, 499163953Srrs 0x230138CF, 0x6A3D45E8, 0xB179C281, 0xF845BFA6, 0x021CBAA2, 0x4B20C785, 0x906440EC, 0xD9583DCB, 500163953Srrs 0x613A3C15, 0x28064132, 0xF342C65B, 0xBA7EBB7C, 0x4027BE78, 0x091BC35F, 0xD25F4436, 0x9B633911, 501163953Srrs 0xA777317B, 0xEE4B4C5C, 0x350FCB35, 0x7C33B612, 0x866AB316, 0xCF56CE31, 0x14124958, 0x5D2E347F, 502163953Srrs 0xE54C35A1, 0xAC704886, 0x7734CFEF, 0x3E08B2C8, 0xC451B7CC, 0x8D6DCAEB, 0x56294D82, 0x1F1530A5 503163953Srrs}; 504163953Srrs 505163953Srrs/* 506163953Srrs * end of the CRC lookup table crc_tableil8_o88 507163953Srrs */ 508163953Srrs 509163953Srrsstatic uint32_t 510163953Srrssctp_crc32c_sb8_64_bit(uint32_t crc, 511163953Srrs unsigned char *p_buf, 512163953Srrs uint32_t length, 513163953Srrs uint32_t init_bytes) 514163953Srrs{ 515163953Srrs uint32_t li; 516163953Srrs uint32_t term1, term2; 517163953Srrs uint32_t running_length; 518163953Srrs uint32_t end_bytes; 519163953Srrs 520163953Srrs running_length = ((length - init_bytes) / 8) * 8; 521163953Srrs end_bytes = length - init_bytes - running_length; 522163953Srrs 523163953Srrs for (li = 0; li < init_bytes; li++) 524163953Srrs crc = sctp_crc_tableil8_o32[(crc ^ *p_buf++) & 0x000000FF] ^ 525163953Srrs (crc >> 8); 526163953Srrs for (li = 0; li < running_length / 8; li++) { 527163953Srrs#if BYTE_ORDER == BIG_ENDIAN 528163953Srrs crc ^= *p_buf++; 529163953Srrs crc ^= (*p_buf++) << 8; 530163953Srrs crc ^= (*p_buf++) << 16; 531163953Srrs crc ^= (*p_buf++) << 24; 532163953Srrs#else 533163953Srrs crc ^= *(uint32_t *) p_buf; 534163953Srrs p_buf += 4; 535163953Srrs#endif 536163953Srrs term1 = sctp_crc_tableil8_o88[crc & 0x000000FF] ^ 537163953Srrs sctp_crc_tableil8_o80[(crc >> 8) & 0x000000FF]; 538163953Srrs term2 = crc >> 16; 539163953Srrs crc = term1 ^ 540163953Srrs sctp_crc_tableil8_o72[term2 & 0x000000FF] ^ 541163953Srrs sctp_crc_tableil8_o64[(term2 >> 8) & 0x000000FF]; 542163953Srrs 543163953Srrs#if BYTE_ORDER == BIG_ENDIAN 544163953Srrs crc ^= sctp_crc_tableil8_o56[*p_buf++]; 545163953Srrs crc ^= sctp_crc_tableil8_o48[*p_buf++]; 546163953Srrs crc ^= sctp_crc_tableil8_o40[*p_buf++]; 547163953Srrs crc ^= sctp_crc_tableil8_o32[*p_buf++]; 548163953Srrs#else 549163953Srrs term1 = sctp_crc_tableil8_o56[(*(uint32_t *) p_buf) & 0x000000FF] ^ 550163953Srrs sctp_crc_tableil8_o48[((*(uint32_t *) p_buf) >> 8) & 0x000000FF]; 551163953Srrs 552163953Srrs term2 = (*(uint32_t *) p_buf) >> 16; 553163953Srrs crc = crc ^ 554163953Srrs term1 ^ 555163953Srrs sctp_crc_tableil8_o40[term2 & 0x000000FF] ^ 556163953Srrs sctp_crc_tableil8_o32[(term2 >> 8) & 0x000000FF]; 557163953Srrs p_buf += 4; 558163953Srrs#endif 559163953Srrs } 560163953Srrs for (li = 0; li < end_bytes; li++) 561163953Srrs crc = sctp_crc_tableil8_o32[(crc ^ *p_buf++) & 0x000000FF] ^ 562163953Srrs (crc >> 8); 563163953Srrs return crc; 564163953Srrs} 565163953Srrs 566163953Srrs 567163953Srrs/** 568163953Srrs * 569163953Srrs * Routine Description: 570163953Srrs * 571163953Srrs * warms the tables 572163953Srrs * 573163953Srrs * Arguments: 574163953Srrs * 575163953Srrs * none 576163953Srrs * 577163953Srrs * Return value: 578163953Srrs * 579163953Srrs * none 580163953Srrs */ 581163953Srrsuint32_t 582168709Srrsupdate_crc32(uint32_t crc32c, 583163953Srrs unsigned char *buffer, 584163953Srrs unsigned int length) 585163953Srrs{ 586163953Srrs uint32_t offset; 587163953Srrs 588163953Srrs if (length == 0) { 589168709Srrs return (crc32c); 590163953Srrs } 591163998Sru offset = ((uintptr_t) buffer) & 0x3; 592168709Srrs return (sctp_crc32c_sb8_64_bit(crc32c, buffer, length, offset)); 593163953Srrs} 594163953Srrs 595166023Srrsuint32_t sctp_crc_c[256] = { 596166023Srrs 0x00000000, 0xF26B8303, 0xE13B70F7, 0x1350F3F4, 597166023Srrs 0xC79A971F, 0x35F1141C, 0x26A1E7E8, 0xD4CA64EB, 598166023Srrs 0x8AD958CF, 0x78B2DBCC, 0x6BE22838, 0x9989AB3B, 599166023Srrs 0x4D43CFD0, 0xBF284CD3, 0xAC78BF27, 0x5E133C24, 600166023Srrs 0x105EC76F, 0xE235446C, 0xF165B798, 0x030E349B, 601166023Srrs 0xD7C45070, 0x25AFD373, 0x36FF2087, 0xC494A384, 602166023Srrs 0x9A879FA0, 0x68EC1CA3, 0x7BBCEF57, 0x89D76C54, 603166023Srrs 0x5D1D08BF, 0xAF768BBC, 0xBC267848, 0x4E4DFB4B, 604166023Srrs 0x20BD8EDE, 0xD2D60DDD, 0xC186FE29, 0x33ED7D2A, 605166023Srrs 0xE72719C1, 0x154C9AC2, 0x061C6936, 0xF477EA35, 606166023Srrs 0xAA64D611, 0x580F5512, 0x4B5FA6E6, 0xB93425E5, 607166023Srrs 0x6DFE410E, 0x9F95C20D, 0x8CC531F9, 0x7EAEB2FA, 608166023Srrs 0x30E349B1, 0xC288CAB2, 0xD1D83946, 0x23B3BA45, 609166023Srrs 0xF779DEAE, 0x05125DAD, 0x1642AE59, 0xE4292D5A, 610166023Srrs 0xBA3A117E, 0x4851927D, 0x5B016189, 0xA96AE28A, 611166023Srrs 0x7DA08661, 0x8FCB0562, 0x9C9BF696, 0x6EF07595, 612166023Srrs 0x417B1DBC, 0xB3109EBF, 0xA0406D4B, 0x522BEE48, 613166023Srrs 0x86E18AA3, 0x748A09A0, 0x67DAFA54, 0x95B17957, 614166023Srrs 0xCBA24573, 0x39C9C670, 0x2A993584, 0xD8F2B687, 615166023Srrs 0x0C38D26C, 0xFE53516F, 0xED03A29B, 0x1F682198, 616166023Srrs 0x5125DAD3, 0xA34E59D0, 0xB01EAA24, 0x42752927, 617166023Srrs 0x96BF4DCC, 0x64D4CECF, 0x77843D3B, 0x85EFBE38, 618166023Srrs 0xDBFC821C, 0x2997011F, 0x3AC7F2EB, 0xC8AC71E8, 619166023Srrs 0x1C661503, 0xEE0D9600, 0xFD5D65F4, 0x0F36E6F7, 620166023Srrs 0x61C69362, 0x93AD1061, 0x80FDE395, 0x72966096, 621166023Srrs 0xA65C047D, 0x5437877E, 0x4767748A, 0xB50CF789, 622166023Srrs 0xEB1FCBAD, 0x197448AE, 0x0A24BB5A, 0xF84F3859, 623166023Srrs 0x2C855CB2, 0xDEEEDFB1, 0xCDBE2C45, 0x3FD5AF46, 624166023Srrs 0x7198540D, 0x83F3D70E, 0x90A324FA, 0x62C8A7F9, 625166023Srrs 0xB602C312, 0x44694011, 0x5739B3E5, 0xA55230E6, 626166023Srrs 0xFB410CC2, 0x092A8FC1, 0x1A7A7C35, 0xE811FF36, 627166023Srrs 0x3CDB9BDD, 0xCEB018DE, 0xDDE0EB2A, 0x2F8B6829, 628166023Srrs 0x82F63B78, 0x709DB87B, 0x63CD4B8F, 0x91A6C88C, 629166023Srrs 0x456CAC67, 0xB7072F64, 0xA457DC90, 0x563C5F93, 630166023Srrs 0x082F63B7, 0xFA44E0B4, 0xE9141340, 0x1B7F9043, 631166023Srrs 0xCFB5F4A8, 0x3DDE77AB, 0x2E8E845F, 0xDCE5075C, 632166023Srrs 0x92A8FC17, 0x60C37F14, 0x73938CE0, 0x81F80FE3, 633166023Srrs 0x55326B08, 0xA759E80B, 0xB4091BFF, 0x466298FC, 634166023Srrs 0x1871A4D8, 0xEA1A27DB, 0xF94AD42F, 0x0B21572C, 635166023Srrs 0xDFEB33C7, 0x2D80B0C4, 0x3ED04330, 0xCCBBC033, 636166023Srrs 0xA24BB5A6, 0x502036A5, 0x4370C551, 0xB11B4652, 637166023Srrs 0x65D122B9, 0x97BAA1BA, 0x84EA524E, 0x7681D14D, 638166023Srrs 0x2892ED69, 0xDAF96E6A, 0xC9A99D9E, 0x3BC21E9D, 639166023Srrs 0xEF087A76, 0x1D63F975, 0x0E330A81, 0xFC588982, 640166023Srrs 0xB21572C9, 0x407EF1CA, 0x532E023E, 0xA145813D, 641166023Srrs 0x758FE5D6, 0x87E466D5, 0x94B49521, 0x66DF1622, 642166023Srrs 0x38CC2A06, 0xCAA7A905, 0xD9F75AF1, 0x2B9CD9F2, 643166023Srrs 0xFF56BD19, 0x0D3D3E1A, 0x1E6DCDEE, 0xEC064EED, 644166023Srrs 0xC38D26C4, 0x31E6A5C7, 0x22B65633, 0xD0DDD530, 645166023Srrs 0x0417B1DB, 0xF67C32D8, 0xE52CC12C, 0x1747422F, 646166023Srrs 0x49547E0B, 0xBB3FFD08, 0xA86F0EFC, 0x5A048DFF, 647166023Srrs 0x8ECEE914, 0x7CA56A17, 0x6FF599E3, 0x9D9E1AE0, 648166023Srrs 0xD3D3E1AB, 0x21B862A8, 0x32E8915C, 0xC083125F, 649166023Srrs 0x144976B4, 0xE622F5B7, 0xF5720643, 0x07198540, 650166023Srrs 0x590AB964, 0xAB613A67, 0xB831C993, 0x4A5A4A90, 651166023Srrs 0x9E902E7B, 0x6CFBAD78, 0x7FAB5E8C, 0x8DC0DD8F, 652166023Srrs 0xE330A81A, 0x115B2B19, 0x020BD8ED, 0xF0605BEE, 653166023Srrs 0x24AA3F05, 0xD6C1BC06, 0xC5914FF2, 0x37FACCF1, 654166023Srrs 0x69E9F0D5, 0x9B8273D6, 0x88D28022, 0x7AB90321, 655166023Srrs 0xAE7367CA, 0x5C18E4C9, 0x4F48173D, 0xBD23943E, 656166023Srrs 0xF36E6F75, 0x0105EC76, 0x12551F82, 0xE03E9C81, 657166023Srrs 0x34F4F86A, 0xC69F7B69, 0xD5CF889D, 0x27A40B9E, 658166023Srrs 0x79B737BA, 0x8BDCB4B9, 0x988C474D, 0x6AE7C44E, 659166023Srrs 0xBE2DA0A5, 0x4C4623A6, 0x5F16D052, 0xAD7D5351, 660163953Srrs}; 661163953Srrs 662163953Srrs 663163953Srrs#define SCTP_CRC32C(c,d) (c=(c>>8)^sctp_crc_c[(c^(d))&0xFF]) 664163953Srrs 665166675Srrsuint32_t 666168709Srrsold_update_crc32(uint32_t crc32c, 667163953Srrs unsigned char *buffer, 668163953Srrs unsigned int length) 669163953Srrs{ 670163953Srrs unsigned int i; 671163953Srrs 672163953Srrs for (i = 0; i < length; i++) { 673168709Srrs SCTP_CRC32C(crc32c, buffer[i]); 674163953Srrs } 675168709Srrs return (crc32c); 676163953Srrs} 677163953Srrs 678163953Srrs 679163953Srrsuint32_t 680168709Srrssctp_csum_finalize(uint32_t crc32c) 681163953Srrs{ 682163953Srrs uint32_t result; 683163953Srrs 684163953Srrs#if BYTE_ORDER == BIG_ENDIAN 685163953Srrs uint8_t byte0, byte1, byte2, byte3; 686163953Srrs 687163953Srrs#endif 688163953Srrs /* Complement the result */ 689168709Srrs result = ~crc32c; 690163953Srrs#if BYTE_ORDER == BIG_ENDIAN 691163953Srrs /* 692163953Srrs * For BIG-ENDIAN.. aka Motorola byte order the result is in 693163953Srrs * little-endian form. So we must manually swap the bytes. Then we 694163953Srrs * can call htonl() which does nothing... 695163953Srrs */ 696163953Srrs byte0 = result & 0x000000ff; 697163953Srrs byte1 = (result >> 8) & 0x000000ff; 698163953Srrs byte2 = (result >> 16) & 0x000000ff; 699163953Srrs byte3 = (result >> 24) & 0x000000ff; 700168709Srrs crc32c = ((byte0 << 24) | (byte1 << 16) | (byte2 << 8) | byte3); 701163953Srrs#else 702163953Srrs /* 703163953Srrs * For INTEL platforms the result comes out in network order. No 704163953Srrs * htonl is required or the swap above. So we optimize out both the 705163953Srrs * htonl and the manual swap above. 706163953Srrs */ 707168709Srrs crc32c = result; 708163953Srrs#endif 709168709Srrs return (crc32c); 710163953Srrs} 711163953Srrs 712163953Srrs#endif 713