250
|
1
|
|
2 /*
|
|
3 * Copyright (C) Igor Sysoev
|
|
4 */
|
|
5
|
|
6
|
|
7 #ifndef _NGX_CRC32_H_INCLUDED_
|
|
8 #define _NGX_CRC32_H_INCLUDED_
|
|
9
|
|
10
|
|
11 #include <ngx_config.h>
|
|
12 #include <ngx_core.h>
|
|
13
|
|
14
|
|
15 extern uint32_t *ngx_crc32_table_short;
|
|
16 extern uint32_t ngx_crc32_table256[];
|
|
17
|
|
18
|
|
19 static ngx_inline uint32_t
|
|
20 ngx_crc32_short(u_char *p, size_t len)
|
|
21 {
|
|
22 u_char c;
|
|
23 uint32_t crc;
|
|
24
|
|
25 crc = 0xffffffff;
|
|
26
|
|
27 while (len--) {
|
|
28 c = *p++;
|
|
29 crc = ngx_crc32_table_short[(crc ^ (c & 0xf)) & 0xf] ^ (crc >> 4);
|
|
30 crc = ngx_crc32_table_short[(crc ^ (c >> 4)) & 0xf] ^ (crc >> 4);
|
|
31 }
|
|
32
|
|
33 return crc ^ 0xffffffff;
|
|
34 }
|
|
35
|
|
36
|
|
37 static ngx_inline uint32_t
|
|
38 ngx_crc32_long(u_char *p, size_t len)
|
|
39 {
|
|
40 uint32_t crc;
|
|
41
|
|
42 crc = 0xffffffff;
|
|
43
|
|
44 while (len--) {
|
|
45 crc = ngx_crc32_table256[(crc ^ *p++) & 0xff] ^ (crc >> 8);
|
|
46 }
|
|
47
|
|
48 return crc ^ 0xffffffff;
|
|
49 }
|
|
50
|
|
51
|
270
|
52 ngx_int_t ngx_crc32_init(void);
|
250
|
53
|
|
54
|
|
55 #endif /* _NGX_CRC32_H_INCLUDED_ */
|