~ubuntu-branches/ubuntu/quantal/ceph/quantal

« back to all changes in this revision

Viewing changes to wireshark/ceph/sctp_crc32.c

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2012-07-16 09:56:24 UTC
  • mfrom: (0.3.11)
  • mto: This revision was merged to the branch mainline in revision 17.
  • Revision ID: package-import@ubuntu.com-20120716095624-azr2w4hbhei1rxmx
Tags: upstream-0.48
ImportĀ upstreamĀ versionĀ 0.48

Show diffs side-by-side

added added

removed removed

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